FormCalc-sträng-, datum- och finansfunktioner
XFA-beräkningsskript stödjer de implementerade funktionsfamiljerna utöver aritmetik: strängfunktioner, datumkonvertering och finansbiblioteket, med strängliteraler och blandade-typ-uttryck
Strängfunktioner
Värden och referenser dokumenterar Ref, värdekopieringssemantik, referenstilldelning, null-frikoppling, funktionsargument, objektidentitetsjämförelser och behållna handles över upprepningsinstansflytt
Dynamisk Eval exekverar källtext genom den nativa kompilatorn och generella körtiden, inklusive lokalt deklarerade variabler, funktioner, loopar, fältmutationer, locale-förfrågningar och registrerade värstransportsvar
Concat, Len, Left, Right, Substr, Replace, Lower, Upper, Trim och Space arbetar på citerade literaler och fältreferenser; numeriska deluttryck konverteras automatiskt till text
Datumfunktioner
Den nativa skalära utvärderaren konverterar ISO-YYYY-MM-DD-text med Date2Num och Num2Date; FormCalc:s serialdagar använder 1900-01-01 som dag 1, och Date() returnerar dagens serial
Generell exekvering med EnableJavaScript stödjer också locale-pictures genom Date2Num(value, picture, locale), Num2Date(serial, picture, locale), DateFmt, TimeFmt, IsoTime2Num, Time2Num, Num2Time, Num2GMTime och Time
I generell exekvering använder utelämnade Num2Date-pictures nu den omgivande locale:ns standardmönster; skicka "YYYY-MM-DD" explicit för att bevara tidigare ISO-utdata, och använd IsoDate2Num för strikt ISO-indata
FormCalc Locale- och Picture-funktioner dokumenterar parametrar, ärvd locale-selektion, inbäddade localeSet-överskrivningar, numeriska/text-pictures, enheter, kodning och talord
Avancerade picture-klausuler dokumenterar vetenskaplig notation, uttryckt bråkdelsprecision, ordningstals- och ISO-veckodatum, klockvarianter, globala symboler och sammansatt tolkning i generella händelser, beräkningar och validering
Finansfunktioner
Finansfunktionerna följer nu XFA FormCalc:s parametersemantik i den nativa beräkningsutvärderaren och den generella händelsekompilatorn
| Funktion | Parametrar och resultat |
|---|---|
Pmt(principal, rate, periods) | Positiv periodisk lånebetalning; alla argument måste vara positiva |
FV(payment, rate, periods) | Framtidsvärde av lika betalningar; nollränta returnerar betalning gånger perioder |
PV(payment, rate, periods) | Nuvärde av lika betalningar; nollränta returnerar betalning gånger perioder |
Rate(future, present, periods) | Sammansatt ränta som krävs för att växa nuvärdet till framtidsvärdet |
CTerm(rate, future, initial) | Perioder som krävs för en sammansatt initial investering |
Term(payment, rate, future) | Perioder som krävs för lika betalningar att nå framtidsvärdet |
Apr(principal, monthlyPayment, periods) | Årlig räntesats som en avgränsad månadsräntelösare finner |
NPV(rate, cashFlow1, ...) | Diskonterade periodslutskassaflöden i argumentordning |
IPmt and PPmt | Ränta eller kapitalbelopp som betalats för (principal, annualRate, monthlyPayment, firstMonth, months); månadsindex börjar på 1, och 0 väljer också första månaden |
Detta rättar tidigare kalkylbladsstil argumentordning och teckenhantering: migrera Pmt(rate, periods, principal) till Pmt(principal, rate, periods) och förvänta dig ett positivt resultat; FV och PV arbetar nu på periodiska betalningar i stället för ett enskilt initial- eller slutbelopp
Rate beräknar nu sammansatt tillväxt; NPer(rate, payment, future) förblir en icke-standard-utvidgning motsvarande Term(payment, rate, future)
Ogiltiga finansdomäner avvisar generella händelser atomärt; den nativa beräkningsutvärderaren rapporterar ett underkänt uttryck, och iterationen konsumerar de konfigurerade operations- och tidsbudgetarna
Generellt händelsebibliotek
Den generella FormCalc-händelsekompilatorn stödjer skiftlägesokänsliga inbyggda namn, inledande decimalliteraler, Null, vetenskapliga trigonometriska funktioner, Pi, grad-/radiankonvertering, Stuff och Str; Count inkluderar tom text och utelämnar null-värden, och enbart-null-aggregat returnerar null
Mod bevarar dividendens tecken i båda utvärderingsvägarna; Mod(-13, 3) returnerar -1
Typning
Numerisk utvärdering förblir Double-typad: en formel vars huvud är en strängfunktion löses textuellt, och finansresultat konverteras tillbaka till numeriska uttryck så att Round(Pmt(...), 2) fungerar; varje typ-mismatch degraderas fortfarande till ett tomt värde
Villkorslogik och upprepade arrayer
Jämförelser, And, Or, Not, booleaner och lata If(condition, whenTrue, whenFalse)-uttryck tillhandahåller avgränsat villkorskontrollflöde
Sum, Avg, Min, Max och Count accepterar upprepade numeriska väljare som rows[*].amount, medan deras ordinära argumentlistsformer fortsätter att aggregera skalära uttryck
Dynamiska instansförfrågningar
InstanceAdd(name, count) och InstanceRemove(name, index) anropar det validerade instansåteranrop som anroparen konfigurerat och returnerar det resulterande instansantalet
Se Avgränsad XFA FormCalc och JavaScript för den valfria QuickJS-vägen, typade arrayer, körtidsisolering, budgetar och telemetri
Explicit HTTP-transport
Generella händelseskript stödjer skiftlägesokänsliga Get, Post och Put genom explicit applikationsvärdstransport; argument vidarebefordras i ordning och applikationen tillhandahåller svaret
Dessa funktioner kräver EnableJavaScript och ett konfigurerat HostTransport-återanrop i widgetkörtiden; den nativa skalära utvärderaren utför inga nätverksförfrågningar