Funkcje FormCalc łańcuchowe, daty i finansowe
Skrypty obliczeń XFA wspierają zaimplementowane rodziny funkcji poza arytmetyką: funkcje łańcuchowe, konwersję daty i bibliotekę finansową, z literalnymi łańcuchami i wyrażeniami mieszanych typów
String functions
Values and References dokumentuje Ref, semantykę kopiowania wartości, przypisanie referencji, odłączenie null, argumenty funkcji, porównania tożsamości obiektów i zapamiętane uchwyty podczas przenoszenia powtórzonych instancji
Dynamic Eval wykonuje tekst źródłowy przez natywny kompilator i ogólne runtime, w tym lokalnie deklarowane zmienne, funkcje, pętle, mutacje pól, żądania locale i nagrane odpowiedzi transportu hosta
Concat, Len, Left, Right, Substr, Replace, Lower, Upper, Trim i Space działają na cytowanych literałach i referencjach pól; liczbowe podwyrażenia konwertują się na tekst automatycznie
Date functions
Natywny ewaluator skalarny konwertuje tekst ISO YYYY-MM-DD przez Date2Num i Num2Date; seryjne dni FormCalc używają 1900-01-01 jako dnia 1, a Date() zwraca dzisiejszą seryjną
Ogólne wykonanie z EnableJavaScript wspiera też obrazy locale przez Date2Num(value, picture, locale), Num2Date(serial, picture, locale), DateFmt, TimeFmt, IsoTime2Num, Time2Num, Num2Time, Num2GMTime i Time
W ogólnym wykonaniu pominięte obrazy Num2Date używają teraz domyślnego wzorca otaczającego locale; przekaż "YYYY-MM-DD" jawnie, aby zachować wcześniejsze wyjście ISO, i używaj IsoDate2Num dla ścisłego wejścia ISO
FormCalc Locale and Picture Functions dokumentuje parametry, dziedziczony wybór locale, osadzone nadpisania localeSet, obrazy liczbowe i tekstowe, jednostki, kodowanie i słowa liczbowe
Advanced Picture Clauses dokumentuje notację naukową, wyrażoną precyzję ułamkową, daty porządkowe i tygodni ISO, warianty zegara, symbole globalne i parsowanie złożone w zdarzeniach ogólnych, obliczeniach i walidacji
Finance functions
Funkcje finansowe podążają teraz za semantyką parametrów XFA FormCalc w natywnym ewaluatorze obliczeń i kompilatorze zdarzeń ogólnych
| Function | Parameters and result |
|---|---|
Pmt(principal, rate, periods) | Dodatnia okresowa rata kredytu; wszystkie argumenty muszą być dodatnie |
FV(payment, rate, periods) | Wartość przyszła równych płatności; stopa zero zwraca płatność razy liczba okresów |
PV(payment, rate, periods) | Wartość bieżąca równych płatności; stopa zero zwraca płatność razy liczba okresów |
Rate(future, present, periods) | Stopa składana potrzebna do wzrostu wartości bieżącej do przyszłej |
CTerm(rate, future, initial) | Liczba okresów potrzebna dla składanej inwestycji początkowej |
Term(payment, rate, future) | Liczba okresów potrzebna, by równe płatności osiągnęły wartość przyszłą |
Apr(principal, monthlyPayment, periods) | Roczna stopa procentowa wyznaczana przez ograniczony solver stopy miesięcznej |
NPV(rate, cashFlow1, ...) | Zdyskontowane przepływy pieniężne końca okresu w kolejności argumentów |
IPmt i PPmt | Odsetki albo kapitał zapłacone dla (principal, annualRate, monthlyPayment, firstMonth, months); indeksy miesięcy startują od 1, a 0 też wybiera pierwszy miesiąc |
To koryguje wcześniejsze porządkowanie argumentów w stylu arkuszy kalkulacyjnych i obsługę znaków: zmigruj Pmt(rate, periods, principal) do Pmt(principal, rate, periods) i oczekuj dodatniego wyniku; FV i PV działają teraz na płatnościach okresowych zamiast na pojedynczej kwocie początkowej lub końcowej
Rate liczy teraz wzrost składany; NPer(rate, payment, future) pozostaje niestandardowym rozszerzeniem równoważnym Term(payment, rate, future)
Niepoprawne dziedziny finansowe odrzucają zdarzenia ogólne atomowo; natywny ewaluator obliczeń raportuje nieudane wyrażenie, a iteracja zużywa skonfigurowane budżety operacji i czasu
General event library
Ogólny kompilator zdarzeń FormCalc wspiera niewrażliwe na wielkość liter nazwy wbudowane, wiodące literały dziesiętne, Null, naukowe funkcje trygonometryczne, Pi, konwersję stopień/radian, Stuff i Str; Count uwzględnia pusty tekst i pomija wartości null, a agregaty w całości null zwracają null
Mod zachowuje znak dzielnej w obu ścieżkach wyliczania; Mod(-13, 3) zwraca -1
Typizacja
Ocena liczbowa pozostaje typu Double: formuła, której głową jest funkcja łańcuchowa, rozwiązuje się tekstowo, a wyniki finansowe konwertują się z powrotem na wyrażenia liczbowe, więc Round(Pmt(...), 2) działa; każda niezgodność typów wciąż degraduje się do pustej wartości
Logika warunkowa i powtarzane tablice
Porównania, And, Or, Not, wartości boolowskie i leniwe wyrażenia If(condition, whenTrue, whenFalse) zapewniają ograniczone warunkowe sterowanie przepływem
Sum, Avg, Min, Max i Count akceptują powtarzane selektory liczbowe, takie jak rows[*].amount, podczas gdy ich zwykłe formy listy argumentów nadal agregują wyrażenia skalarne
Dynamiczne żądania instancji
InstanceAdd(name, count) i InstanceRemove(name, index) wywołują sprawdzone wywołanie zwrotne instancji skonfigurowane przez wywołującego i zwracają wynikową liczbę instancji
Zobacz Ograniczone FormCalc i JavaScript XFA dla opcjonalnej ścieżki QuickJS, typowanych tablic, izolacji czasu wykonania, budżetów i telemetrii
Jawny transport HTTP
Skrypty zdarzeń ogólnych wspierają niewrażliwe na wielkość liter Get, Post i Put przez jawny transport hosta aplikacji; argumenty są przekazywane w kolejności, a odpowiedź dostarcza aplikacja
Te funkcje wymagają EnableJavaScript i skonfigurowanego callbacka HostTransport w runtime widgetów; natywny ewaluator skalarny nie wykonuje żądań sieciowych