FormCalc String, Date ve Finance Functions
XFA calculate script'leri, aritmetiğin ötesindeki uygulanan function ailelerini destekler: string function'ları, date conversion ve finance kütüphanesi — string literal'ler ve karışık-türlü ifadelerle birlikte
String fonksiyonları
Value'lar ve Referanslar, Ref'i, value-copy semantiğini, referans atamasını, null detachment'ını, function argümanlarını, object identity karşılaştırmalarını ve tekrar-instance hareketi boyunca tutulan handle'ları belgeler
Dinamik Eval, kaynak metni native compiler ve genel runtime üzerinden yürütür — lokal bildirilmiş variable'lar, function'lar, döngüler, field mutation'ları, locale istekleri ve kayıtlı host transport response'ları dâhil
Concat, Len, Left, Right, Substr, Replace, Lower, Upper, Trim ve Space, tırnaklı literal'ler ve field referansları üzerinde çalışır; sayısal alt ifadeler otomatik olarak metne çevrilir
Tarih fonksiyonları
Native scalar evaluator, ISO YYYY-MM-DD metnini Date2Num ve Num2Date ile dönüştürür; FormCalc seri günleri 1900-01-01'i 1. gün sayar ve Date() bugünün serisini döndürür
EnableJavaScript ile genel yürütme ayrıca Date2Num(value, picture, locale), Num2Date(serial, picture, locale), DateFmt, TimeFmt, IsoTime2Num, Time2Num, Num2Time, Num2GMTime ve Time üzerinden locale picture'larını destekler
Genel yürütmede, atlanan Num2Date picture'ları artık ambient locale'in default pattern'ini kullanır; önceki ISO output'u korumak için "YYYY-MM-DD"'yi açıkça geçirin ve katı ISO girdisi için IsoDate2Num'i kullanın
FormCalc Locale ve Picture Functions, parametreleri, kalıtılan locale seçimini, gömülü localeSet override'larını, sayısal/metin picture'larını, unit'leri, encoding'i ve sayı kelimelerini belgeler
Gelişmiş Picture Clause'ları, bilimsel gösterimi, ifade edilen kesirli hassasiyeti, sıra ve ISO hafta tarihlerini, saat varyantlarını, global sembolleri ve genel event'lerde, calculation ve validation'da bileşik parsing'i belgeler
Finans fonksiyonları
Finans function'ları, artık native calculate evaluator'da ve genel event compiler'ında XFA FormCalc parametre semantiğini izler
| Function | Parametreler ve result |
|---|---|
Pmt(principal, rate, periods) | Pozitif periyodik kredi ödemesi; tüm argümanlar pozitif olmalıdır |
FV(payment, rate, periods) | Eşit ödemelerin gelecek değeri; sıfır rate, ödeme çarpı period sayısını döndürür |
PV(payment, rate, periods) | Eşit ödemelerin bugünkü değeri; sıfır rate, ödeme çarpı period sayısını döndürür |
Rate(future, present, periods) | Bugünkü değeri gelecek değere büyütmek için gereken bileşik rate |
CTerm(rate, future, initial) | Bileşikli bir başlangıç yatırımı için gereken period sayısı |
Term(payment, rate, future) | Eşit ödemelerin gelecek değere ulaşması için gereken period sayısı |
Apr(principal, monthlyPayment, periods) | Sınırlı bir aylık-rate çözücüyüyle bulunan yıllık yüzde rate |
NPV(rate, cashFlow1, ...) | Argüman sırasında iskonto edilmiş period-sonu nakit akışları |
IPmt ve PPmt | (principal, annualRate, monthlyPayment, firstMonth, months) için ödenen faiz veya anapara; ay indeksleri 1'den başlar ve 0 da ilk ayı seçer |
Bu, önceki spreadsheet-tarzı argüman sıralamasını ve işaret handling'ini düzeltir: Pmt(rate, periods, principal)'i Pmt(principal, rate, periods)'e taşıyın ve pozitif bir sonuç bekleyin; FV ve PV artık tek bir başlangıç veya nihai tutar yerine periyodik ödemeler üzerinde çalışır
Rate artık bileşik büyümeyi hesaplar; NPer(rate, payment, future), Term(payment, rate, future)'a eşdeäer nonstandard bir uzantı olarak kalır
Geçersiz finans domain'leri genel event'leri atomik reddeder; native calculate evaluator, başarısız bir ifade raporlar ve iterasyon, yapılandırılmış operation ve süre bütçelerini tüketir
Genel event kütüphanesi
Genel FormCalc event compiler'ı, büyük-küçük-harf-duyumsuz built-in adları, baştaki ondalık literal'leri, Null'u, bilimsel trigonometrik function'ları, Pi'yi, derece/radyan dönüşümünü, Stuff'u ve Str'i destekler; Count, boş metni dâhil eder ve null value'ları atlar, tüm-null agregatlar null döndürür
Mod, her iki değerlendirme path'inde bölümün işaretini korur; Mod(-13, 3) -1 döndürür
Tipleme
Sayısal değerlendirme Double türlü kalır: başı bir string fonksiyonu olan formül metinsel çözülür, finans sonuçları sayısal ifadelere geri çevrilir, böylece Round(Pmt(...), 2) çalışır; herhangi bir tür uyuşmazlığı yine boş bir değere düşer
Koşullu mantık ve tekrarlanan diziler
Karşılaştırmalar, And, Or, Not, boolean'lar ve tembel değerlendirmeli If(condition, whenTrue, whenFalse) ifadeleri sınırlı koşullu kontrol akışı sağlar
Sum, Avg, Min, Max ve Count, rows[*].amount gibi tekrarlanan sayısal selector'ları kabul eder; sıradan argüman-listesi biçimleri ise skaler ifadeleri toplamayı sürdürür
Dinamik instance istekleri
InstanceAdd(name, count) ve InstanceRemove(name, index), çağıranın yapılandırdığı doğrulanmış instance callback'ini çağırır ve ortaya çıkan instance sayısını döndürür
İsteğe bağlı QuickJS yolu, tipli diziler, runtime izolasyonu, bütçeler ve telemetry için Sınırlı XFA FormCalc ve JavaScript sayfasına bakın
Açık HTTP transport
Genel event script'leri, açık uygulama host transport'u üzerinden büyük-küçük-harf-duyumsuz Get, Post ve Put destekler; argümanlar sırayla iletilir ve response'u uygulama sağlar
Bu function'lar, EnableJavaScript ve widget runtime'ında yapılandırılmış bir HostTransport callback gerektirir; native scalar evaluator ağ istekleri yapmaz