FormCalc-string-, datum- en financiële functies
XFA-calculate-scripts ondersteunen de geïmplementeerde functiefamilies naast rekenkunde: stringfuncties, datumconversie en de financiële bibliotheek, met stringliteralen en expressies met gemengde typen
Stringfuncties
Waarden en verwijzingen documenteert Ref, value-copy-semantiek, toewijzing van verwijzingen, null-loskoppeling, functieargumenten, objectidentiteitsvergelijkingen en vastgehouden handles bij verplaatsing van herhaalde instanties
Dynamische Eval voert brontekst uit via de native compiler en de algemene runtime, inclusief lokaal gedeclareerde variabelen, functies, lussen, veldmutaties, locale-verzoeken en opgenomen host-transport-responses
Concat, Len, Left, Right, Substr, Replace, Lower, Upper, Trim en Space werken op tussen aanhalingstekens geplaatste literalen en veldverwijzingen; numerieke subexpressies worden automatisch naar tekst geconverteerd
Datumfuncties
De native scalair-evaluator converteert ISO-YYYY-MM-DD-tekst met Date2Num en Num2Date; FormCalc-seriedagen gebruiken 1900-01-01 als dag 1 en Date() geeft het serienummer van vandaag terug
Algemene uitvoering met EnableJavaScript ondersteunt ook locale-pictures via Date2Num(value, picture, locale), Num2Date(serial, picture, locale), DateFmt, TimeFmt, IsoTime2Num, Time2Num, Num2Time, Num2GMTime en Time
Bij algemene uitvoering gebruiken weggelaten Num2Date-pictures tegenwoordig het default-patroon van de omgevings-locale; geef "YYYY-MM-DD" expliciet door om de eerdere ISO-uitvoer te behouden en gebruik IsoDate2Num voor strenge ISO-invoer
FormCalc-locale- en picture-functies documenteert parameters, geërfde localeselectie, ingebedde localeSet-overrides, numerieke/tekst-pictures, eenheden, encoding en getalswoorden
Geavanceerde picture-clausules documenteert wetenschappelijke notatie, uitgedrukte fractionele precisie, ordinale en ISO-weekdata, klokvarianten, globale symbolen en samengestelde parsing in algemene events, berekeningen en validatie
Financiële functies
Financiële functies volgen tegenwoordig de XFA FormCalc-parametersemantiek in de native calculate-evaluator en de algemene event-compiler
| Functie | Parameters en resultaat |
|---|---|
Pmt(principal, rate, periods) | Positieve periodieke leningsbetaling; alle argumenten moeten positief zijn |
FV(payment, rate, periods) | Toekomstige waarde van gelijke betalingen; een rente van nul geeft betaling maal perioden |
PV(payment, rate, periods) | Huidige waarde van gelijke betalingen; een rente van nul geeft betaling maal perioden |
Rate(future, present, periods) | Samengestelde rente die nodig is om de huidige waarde naar de toekomstige waarde te laten groeien |
CTerm(rate, future, initial) | Perioden die een samengestelde begininvestering nodig heeft |
Term(payment, rate, future) | Perioden die gelijke betalingen nodig hebben om de toekomstige waarde te bereiken |
Apr(principal, monthlyPayment, periods) | Jaarlijkse rentevoet gevonden door een begrensde oplosser voor de maandrente |
NPV(rate, cashFlow1, ...) | Gekapitaliseerde kasstromen op het einde van de periode, in argumentvolgorde |
IPmt en PPmt | Betaalde rente of aflossing voor (principal, annualRate, monthlyPayment, firstMonth, months); maandindices beginnen bij 1 en 0 selecteert ook de eerste maand |
Dit corrigeert de eerdere spreadsheetachtige argumentvolgorde en tekensafhandeling: migreer Pmt(rate, periods, principal) naar Pmt(principal, rate, periods) en verwacht een positief resultaat; FV en PV werken tegenwoordig met periodieke betalingen in plaats van een enkel begin- of eindbedrag
Rate berekent tegenwoordig samengestelde groei; NPer(rate, payment, future) blijft een niet-standaard extensie die gelijk is aan Term(payment, rate, future)
Ongeldige financiële domeinen wijzen algemene events atomisch af; de native calculate-evaluator meldt een mislukte expressie en iteratie verbruikt de geconfigureerde operatie- en tijdbudgetten
Algemene eventbibliotheek
De algemene FormCalc-event-compiler ondersteunt case-insensitive ingebouwde namen, voorloop decimale literalen, Null, wetenschappelijke goniometrische functies, Pi, conversie tussen graden en radialen, Stuff en Str; Count telt lege tekst mee en laat null-waarden weg, en aggregaties die volledig uit nulls bestaan geven null terug
Mod behoudt het teken van het dividend in beide evaluatiepaden; Mod(-13, 3) geeft -1 terug
Typering
Numerieke evaluatie blijft Double-getypeerd: een formule waarvan de kop een stringfunctie is, wordt tekstueel opgelost, en financiële resultaten converteren terug naar numerieke expressies zodat Round(Pmt(...), 2) werkt; elke typenismatch degradeert nog steeds tot een lege waarde
Voorwaardelijke logica en herhaalde arrays
Vergelijkingen, And, Or, Not, booleans en luie If(condition, whenTrue, whenFalse)-expressies bieden begrensde voorwaardelijke controlestroom
Sum, Avg, Min, Max en Count accepteren herhaalde numerieke selectors zoals rows[*].amount, terwijl hun gewone argumentlijstvormen scalare expressies blijven aggregeren
Dynamische instance-verzoeken
InstanceAdd(name, count) en InstanceRemove(name, index) roepen de door de aanroeper geconfigureerde gevalideerde instance-callback aan en retourneren het resulterende instance-aantal
Zie Begrensde XFA FormCalc en JavaScript voor het optionele QuickJS-pad, getypeerde arrays, runtime-isolatie, budgetten en telemetrie
Expliciet HTTP-transport
Algemene event-scripts ondersteunen case-insensitive Get, Post en Put via expliciet host-transport van de applicatie; argumenten worden in volgorde doorgestuurd en de applicatie levert de response
Deze functies vereisen EnableJavaScript en een geconfigureerde HostTransport-callback in de widget-runtime; de native scalair-evaluator voert geen netwerkverzoeken uit