FormCalc 文字列、日付、財務関数
XFA の calculate スクリプトは、算術を超えた実装済み関数ファミリーをサポートします。文字列関数、日付変換、財務ライブラリを、文字列リテラルと混在型の式とともに使えます
文字列関数
値とリファレンスは、Ref、値コピーのセマンティクス、参照代入、null の切り離し、関数引数、オブジェクト同一性比較、反復インスタンスの移動をまたいだハンドル保持を文書化しています
動的 Evalは、ローカルで宣言された変数、関数、ループ、フィールド変更、ロケール要求、記録されたホスト転送応答を含むソーステキストを、ネイティブコンパイラーと汎用ランタイムで実行します
Concat、Len、Left、Right、Substr、Replace、Lower、Upper、Trim、Space は、引用符付きリテラルとフィールド参照で動作します。数値の部分式は自動的にテキストに変換されます
日付関数
ネイティブのスカラー評価器は、ISO YYYY-MM-DD テキストを Date2Num と Num2Date で変換します。FormCalc のシリアル日は 1900-01-01 を第 1 日とし、Date() は今日のシリアル値を返します
EnableJavaScript 付きの汎用実行では、Date2Num(value, picture, locale)、Num2Date(serial, picture, locale)、DateFmt、TimeFmt、IsoTime2Num、Time2Num、Num2Time、Num2GMTime、Time によるロケールピクチャーにも対応します
汎用実行では、ピクチャーを省略した Num2Date は現在のロケールのデフォルトパターンを使うようになりました。以前の ISO 出力を保つには "YYYY-MM-DD" を明示的に指定し、厳密な ISO 入力には IsoDate2Num を使ってください
FormCalc のロケールとピクチャー関数は、パラメータ、継承されたロケール選択、埋め込み localeSet の上書き、数値/テキストピクチャー、単位、エンコーディング、数値単語を文書化しています
高度なピクチャー句は、科学的表記、明示された小数精度、序数と ISO 週日、クロックバリアント、グローバルシンボル、汎用イベント・計算・検証での複合解析を文書化しています
財務関数
財務関数は、ネイティブの calculate 評価器と汎用イベントコンパイラーで、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) と等価な非標準拡張のままです
無効な財務ドメインは汎用イベントをアトミックに拒否します。ネイティブの calculate 評価器は失敗した式を報告し、反復には設定された操作予算と時間予算が適用されます
汎用イベントライブラリー
汎用 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 などの反復数値セレクターを受け入れ、通常の引数リスト形式はスカラー式の集計を継続します
動的インスタンス要求
InstanceAdd(name, count) と InstanceRemove(name, index) は、呼び出し側が設定した検証済みインスタンスコールバックを呼び出し、結果のインスタンス数を返します
オプションの QuickJS パス、型付き配列、ランタイム分離、予算、テレメトリについては、境界付き XFA FormCalc と JavaScript を参照してください
明示的な HTTP 転送
汎用イベントスクリプトは、明示的なアプリケーションホスト転送を通じて、大文字小文字を区別しない Get、Post、Put に対応します。引数は順に転送され、応答はアプリケーションが供給します
これらの関数には EnableJavaScript と、ウィジェットランタイムに設定された HostTransport コールバックが必要です。ネイティブのスカラー評価器はネットワーク要求を行いません