FormCalc-Funktionen für Zeichenfolgen, Datum und Finanzen
XFA-Berechnungsskripte unterstützen die implementierten Funktionsfamilien über Arithmetik hinaus: Zeichenfolgenfunktionen, Datumskonvertierung und die Finanzbibliothek, mit Zeichenfolgenliteralen und Ausdrücken gemischter Typen
String-Funktionen
Values and References dokumentiert Ref, Value-Copy-Semantik, Referenzzuweisung, Null-Abtrennung, Funktionsargumente, Objektidentitätsvergleiche und zurückgehaltene Handles bei Bewegungen wiederholter Instanzen
Dynamic Eval führt Quelltext über den nativen Compiler und die allgemeine Runtime aus, einschließlich lokal deklarierter Variablen, Funktionen, Schleifen, Feldmutationen, Locale-Anfragen und aufgezeichneter Host-Transport-Antworten
Concat, Len, Left, Right, Substr, Replace, Lower, Upper, Trim und Space arbeiten mit zitierten Literalen und Feldreferenzen; numerische Teilausdrücke werden automatisch in Text umgewandelt
Datumsfunktionen
Der native Skalar-Evaluator konvertiert ISO-Text YYYY-MM-DD mit Date2Num und Num2Date; FormCalc-Serientage nutzen den 1900-01-01 als Tag 1, und Date() gibt die heutige Seriennummer zurück
Die allgemeine Ausführung mit EnableJavaScript unterstützt zusätzlich Locale-Pictures über Date2Num(value, picture, locale), Num2Date(serial, picture, locale), DateFmt, TimeFmt, IsoTime2Num, Time2Num, Num2Time, Num2GMTime und Time
In der allgemeinen Ausführung nutzen ausgelassene Num2Date-Pictures jetzt das Default-Muster der umgebenden Locale; übergeben Sie "YYYY-MM-DD" explizit, um die frühere ISO-Ausgabe zu bewahren, und verwenden Sie IsoDate2Num für strikte ISO-Eingabe
FormCalc Locale and Picture Functions dokumentiert Parameter, geerbte Locale-Auswahl, eingebettete localeSet-Overrides, numerische/text Pictures, Einheiten, Encoding und Zahlwörter
Advanced Picture Clauses dokumentiert wissenschaftliche Notation, ausgedrückte fraktionale Präzision, Ordinal- und ISO-Wochendaten, Uhrenvarianten, globale Symbole und zusammengesetztes Parsing in allgemeinen Events, Berechnungen und Validierung
Finanzfunktionen
Finanzfunktionen folgen jetzt den XFA-FormCalc-Parametersemantiken im nativen Calculate-Evaluator und dem allgemeinen Event-Compiler
| Funktion | Parameter und Ergebnis |
|---|---|
Pmt(principal, rate, periods) | Positive periodische Kreditrate; alle Argumente müssen positiv sein |
FV(payment, rate, periods) | Zukunftswert gleicher Zahlungen; Satz null liefert Zahlung mal Perioden |
PV(payment, rate, periods) | Barwert gleicher Zahlungen; Satz null liefert Zahlung mal Perioden |
Rate(future, present, periods) | Zinssatz mit Zinseszins, der den Barwert auf den Zukunftswert wachsen lässt |
CTerm(rate, future, initial) | Für eine verzinsliche Anfangsinvestition erforderliche Perioden |
Term(payment, rate, future) | Für gleiche Zahlungen zum Erreichen des Zukunftswerts erforderliche Perioden |
Apr(principal, monthlyPayment, periods) | Effektiver Jahreszins, gefunden von einem begrenzten Monatsrate-Solver |
NPV(rate, cashFlow1, ...) | Abgezinste End-of-Period-Cashflows in Argumentreihenfolge |
IPmt und PPmt | Zins- oder Tilgungsanteil für (principal, annualRate, monthlyPayment, firstMonth, months); Monatsindizes beginnen bei 1, und 0 wählt ebenfalls den ersten Monat |
Dies korrigiert die frühere Tabellenkalkulations-artige Argumentreihenfolge und Vorzeichenbehandlung: Pmt(rate, periods, principal) zu Pmt(principal, rate, periods) migrieren und ein positives Ergebnis erwarten; FV und PV wirken jetzt auf periodische Zahlungen statt auf einen einzelnen Anfangs- oder Endbetrag
Rate berechnet jetzt Zinseszinswachstum; NPer(rate, payment, future) bleibt eine nichtstandardmäßige Erweiterung, äquivalent zu Term(payment, rate, future)
Ungültige Finanzdomänen weisen allgemeine Events atomar zurück; der native Calculate-Evaluator meldet einen fehlgeschlagenen Ausdruck, und Iteration verbraucht die konfigurierten Operations- und Zeitbudgets
Allgemeine Event-Bibliothek
Der allgemeine FormCalc-Event-Compiler unterstützt Groß-/Kleinschreibung-unabhängige eingebaute Namen, führende Dezimalliterale, Null, wissenschaftliche trigonometrische Funktionen, Pi, Grad-/Bogenmaß-Konvertierung, Stuff und Str; Count schließt leeren Text ein und lässt Nullwerte aus, und All-Null-Aggregate geben null zurück
Mod bewahrt das Vorzeichen des Dividenden in beiden Auswertungspfaden; Mod(-13, 3) liefert -1
Typisierung
Die numerische Auswertung bleibt Double-typisiert: Eine Formel mit String-Funktion als Kopf löst textuell auf, und Finanzergebnisse wandeln zurück in numerische Ausdrücke, sodass Round(Pmt(...), 2) funktioniert; jeder Typkonflikt degradiert weiterhin zu einem Leerwert
Bedingte Logik und wiederholte Arrays
Vergleiche, And, Or, Not, Booleans und träge If(condition, whenTrue, whenFalse)-Ausdrücke bieten begrenzte bedingte Ablaufsteuerung
Sum, Avg, Min, Max und Count akzeptieren wiederholte numerische Selektoren wie rows[*].amount, während ihre gewöhnlichen Argumentlisten-Formen weiterhin Skalarausdrücke aggregieren
Dynamische Instanz-Anforderungen
InstanceAdd(name, count) und InstanceRemove(name, index) rufen den vom Aufrufer konfigurierten validierten Instanz-Callback auf und liefern die daraus resultierende Instanzanzahl
Siehe Bounded XFA FormCalc and JavaScript für den optionalen QuickJS-Pfad, typisierte Arrays, Runtime-Isolation, Budgets und Telemetrie
Expliziter HTTP-Transport
Allgemeine Event-Skripte unterstützen Groß-/Kleinschreibung-unabhängiges Get, Post und Put über expliziten Application-Host-Transport; Argumente werden in Reihenfolge weitergeleitet, und die Anwendung liefert die Antwort
Diese Funktionen erfordern EnableJavaScript und einen konfigurierten HostTransport-Callback in der Widget-Runtime; der native Skalar-Evaluator führt keine Netzwerkanfragen aus