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

FunctionParameters 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 PPmtOdsetki 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