Funkce FormCalc pro řetězce, data a finance
XFA calculate skripty podporují implementované rodiny funkcí nad aritmetikou: funkce nad řetězci, konverze dat a finanční knihovna, a to s řetězcovými literály a výrazy smíšených typů
Funkce nad řetězci
Hodnoty a reference dokumentují Ref, sémantiku kopírování hodnot, přiřazování referencí, odpojení null, argumenty funkcí, porovnávání identity objektů a zachované handly při přesunech opakovaných instancí
Dynamický Eval provádí zdrojový text přes nativní kompilátor a obecný runtime, včetně lokálně deklarovaných proměnných, funkcí, cyklů, mutací polí, požadavků locale i zaznamenaných host transport odpovědí
Funkce Concat, Len, Left, Right, Substr, Replace, Lower, Upper, Trim a Space pracují s uvozovanými literály a referencemi na pole; číselné podvýrazy se na text převedou automaticky
Funkce pro data
Nativní skalární evaluator převádí text ISO YYYY-MM-DD přes Date2Num a Num2Date; seriové dny FormCalc používají 1900-01-01 jako den 1 a Date() vrátí dnešní seriové datum
Obecné provádění s EnableJavaScript navíc podporuje locale pictures přes Date2Num(value, picture, locale), Num2Date(serial, picture, locale), DateFmt, TimeFmt, IsoTime2Num, Time2Num, Num2Time, Num2GMTime a Time
Při obecném provádění použijí vynechané pictures Num2Date defaultní vzor ambient locale; pro zachování dřívějšího ISO výstupu zadejte "YYYY-MM-DD" explicitně a pro striktní ISO vstup použijte IsoDate2Num
Funkce FormCalc pro locale a pictures dokumentují parametry, zděděný výběr locale, embedded localeSet override, číselné a textové pictures, jednotky, encoding a slovy zapsaná čísla
Pokročilé picture klauzule dokumentují vědeckou notaci, vyjádřený zlomkový přesnost, ordinální a ISO týdenní data, varianty hodin, globální symboly a compound parsing v obecných eventech, výpočtech a validaci
Finanční funkce
Finanční funkce nyní ve nativním calculate evaluatoru i obecném eventovém kompilátoru dodržují sémantiku parametrů XFA FormCalc
| Funkce | Parametry a výsledek |
|---|---|
Pmt(principal, rate, periods) | Kladná periodická splátka úvěru; všechny argumenty musí být kladné |
FV(payment, rate, periods) | Budoucí hodnota stejných plateb; nulový rate vrátí platba × počet period |
PV(payment, rate, periods) | Současná hodnota stejných plateb; nulový rate vrátí platba × počet period |
Rate(future, present, periods) | Složený rate nutný k růstu současné hodnoty na budoucí |
CTerm(rate, future, initial) | Počet period nutných pro složenou počáteční investici |
Term(payment, rate, future) | Počet period nutných, aby stejné platby dosáhly budoucí hodnoty |
Apr(principal, monthlyPayment, periods) | Roční procentní sazba nalezená ohraničeným řešičem měsíční sazby |
NPV(rate, cashFlow1, ...) | Diskontované cash flow na konci period v pořadí argumentů |
IPmt a PPmt | Úrok nebo jistina zaplacené pro (principal, annualRate, monthlyPayment, firstMonth, months); indexy měsíců začínají u 1 a 0 také vybere první měsíc |
Tím se opravuje dřívější tabulkové pořadí argumentů a zacházení se znaménky: migrujte Pmt(rate, periods, principal) na Pmt(principal, rate, periods) a počítejte s kladným výsledkem; FV a PV nyní pracují s periodickými platbami místo jedné počáteční či konečné částky
Rate nyní počítá složený růst; NPer(rate, payment, future) zůstává nestandardním rozšířením ekvivalentním Term(payment, rate, future)
Neplatné finanční domény odmítnou obecné eventy atomicky; nativní calculate evaluator ohlásí neúspěšný výraz a iterace konzumuje nakonfigurované budgety operace a času
Obecná eventová knihovna
Obecný FormCalc eventový kompilátor podporuje názvy vestavěných funkcí bez ohledu na velikost písmen, desetinné literály na začátku, Null, trigonometrické funkce ve vědecké notaci, Pi, konverzi stupně/radiány, Stuff a Str; Count zahrnuje prázdný text a vynechává null hodnoty a all-null agregáty vrací null
Mod zachovává znaménko dělence v obou cestách vyhodnocení; Mod(-13, 3) vrátí -1
Typy
Číselné vyhodnocování zůstává ve typu Double: vzorec s řetězcovou funkcí na začátku se řeší textově a finanční výsledky se zpět převedou na číselné výrazy, takže funguje Round(Pmt(...), 2); jakákoliv nesourodost typů i nadále degeneruje na prázdnou hodnotu
Podmíněná logika a opakovaná pole
Porovnání, And, Or, Not, booleovské hodnoty a líné výrazy If(condition, whenTrue, whenFalse) poskytují omezený podmíněný tok řízení
Sum, Avg, Min, Max a Count přijímají opakované číselné selektory jako rows[*].amount, zatímco jejich obyčejné formy se seznamem argumentů dál agregují skalární výrazy
Požadavky na dynamické instance
InstanceAdd(name, count) a InstanceRemove(name, index) vyvolají volajícím nakonfigurované validované zpětné volání instancí a vrátí výsledný počet instancí
Pro volitelnou cestu QuickJS, typovaná pole, izolaci runtime, budgety a telemetrii viz Bounded XFA FormCalc and JavaScript
Explicitní HTTP transport
Skripty obecných eventů podporují Get, Post a Put bez ohledu na velikost písmen přes explicitní host transport aplikace; argumenty se přeposílají v pořadí a odpověď dodává aplikace
Tyto funkce vyžadují EnableJavaScript a nakonfigurovaný HostTransport callback v widget runtime; nativní skalární evaluator síťové požadavky neprovádí