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

FunktionParametrar 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 PPmtRä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