FormCalc 字串、日期與財務函式

XFA 計算腳本支援算術之外的已實作函式族:字串函式、日期轉換與財務程式庫,帶字串字面值與混合型別運算式

字串函式

Values and References 記錄 Ref、值複製語義、參照指派、null 脫離、函式引數、物件身分比較,以及重複 instance 移動中留存的控制代碼

Dynamic Eval 透過原生編譯器與一般執行期執行來源文字,包含區域宣告的變數、函式、迴圈、欄位變更、locale 請求與記錄的主機傳輸回應

Concat、Len、Left、Right、Substr、Replace、Lower、Upper、Trim 和 Space 作用於帶引號字面值與欄位參照;數值子運算式會自動轉成文字

日期函式

原生标量求值器用 Date2Num 和 Num2Date 轉換 ISO YYYY-MM-DD 文字;FormCalc 序列日以 1900-01-01 為第 1 天,Date() 回傳今天的序數

启用 EnableJavaScript 的一般执行还通过 Date2Num(value, picture, locale)、Num2Date(serial, picture, locale)、DateFmt、TimeFmt、IsoTime2Num、Time2Num、Num2Time、Num2GMTime 和 Time 支援 locale picture

在一般執行中,省略 Num2Date picture 時如今改用環境 locale 的預設模式;請明確傳入 "YYYY-MM-DD" 以保留較早的 ISO 輸出,嚴格 ISO 輸入則使用 IsoDate2Num

FormCalc Locale and Picture Functions 記錄參數、繼承的 locale 選擇、內嵌 localeSet 覆寫、數值/文字 picture、單位、編碼與數字詞

Advanced Picture Clauses 記錄科學記號、明確小數精度、序數與 ISO 週日期、時鐘變體、全域符號,以及在一般事件、計算與驗證中的複合剖析

財務函式

財務函式在原生計算求值器與一般事件編譯器中遵循 XFA FormCalc 参数语义

函式參數與結果
Pmt(principal, rate, periods)正的定期貸款還款額;所有引數必須為正
FV(payment, rate, periods)等額還款的未來值;零利率回傳還款額乘期數
PV(payment, rate, periods)等額還款的現值;零利率回傳還款額乘期數
Rate(future, present, periods)把現值成長到未來值所需的複利利率
CTerm(rate, future, initial)複利初始投資所需的期數
Term(payment, rate, future)等額還款達到未來值所需的期數
Apr(principal, monthlyPayment, periods)由設有上限的月利率求解器求出的年百分比率
NPV(rate, cashFlow1, ...)按引數順序折現的期末現金流
IPmt 与 PPmt(principal, annualRate, monthlyPayment, firstMonth, months) 的利息或本金;月份索引從 1 開始,0 也選擇第一個月

這修正了較早的試算表式參數順序與符號處理:請把 Pmt(rate, periods, principal) 迁移为 Pmt(principal, rate, periods) 並預期正結果;FV 與 PV 如今作用於定期還款而不是單筆初始或期末金額

Rate 如今計算複利成長;NPer(rate, payment, future) 仍是非標準擴充,等價於 Term(payment, rate, future)

非法的財務定義域會以原子方式拒絕一般事件;原生計算求值器回報運算式失敗,迭代消耗設定的操作與時間預算

一般事件程式庫

一般 FormCalc 事件编译器支援大小寫不敏感的內建名稱、前導小數字面值、Null、科學三角函式、Pi、度/弧度轉換、Stuff 與 Str;Count 包含空文字並略過 null 值,全 null 聚合回傳 null

Mod 在兩條求值路徑中都保留被除數符號;Mod(-13, 3) 返回 -1

型別

數值求值維持 Double 型別:頭部為字串函式的公式按文字解析,財務結果轉回數值運算式,因此 Round(Pmt(...), 2) 可用;任何型別不符仍退化為空值

條件邏輯與重複陣列

比较、And、Or、Not、布林值以及惰性求值的 If(condition, whenTrue, whenFalse) 運算式提供設有上限的條件控制流程

Sum、Avg、Min、Max 和 Count 接受 rows[*].amount 這類重複數值選擇器,其一般引數清單形式繼續彙總純量運算式

動態 instance 請求

InstanceAdd(name, count) 和 InstanceRemove(name, index) 呼叫呼叫端設定的已驗證 instance callback,並回傳最終的 instance 數

選用的 QuickJS 路徑、型別化陣列、執行期隔離、預算與遙測見 Bounded XFA FormCalc and JavaScript

明確的 HTTP 傳輸

一般事件腳本透過显式应用主机传输支援大小寫不敏感的 Get、Post 與 Put;引數按順序轉發,回應由應用程式提供

這些函式要求 widget 執行期啟用 EnableJavaScript 並設定 HostTransport callback;原生純量求值器不發出網路請求