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

FunkceParametry 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í