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;原生純量求值器不發出網路請求