Funciones FormCalc de cadenas, fechas y finanzas
Los scripts XFA calculate soportan las familias de funciones implementadas más allá de la aritmética: funciones de cadena, conversión de fechas y la librería de finanzas, con string literals y expresiones de tipos mezclados
Funciones de cadena
Values and References documenta Ref, la semántica de copia de valores, la asignación de referencias, el desacoplamiento de null, los argumentos de funciones, las comparaciones de identidad de objetos y los handles retenidos tras movimientos de instancias repetidas
Dynamic Eval ejecuta texto fuente a través del compilador nativo y el runtime general, incluyendo variables declaradas localmente, funciones, loops, mutaciones de campos, solicitudes de locale y respuestas grabadas del transporte de host
Concat, Len, Left, Right, Substr, Replace, Lower, Upper, Trim y Space operan sobre literales entre comillas y referencias a campos; las sub-expresiones numéricas se convierten a texto automáticamente
Funciones de fecha
El evaluador escalar nativo convierte texto ISO YYYY-MM-DD con Date2Num y Num2Date; los días seriales de FormCalc usan 1900-01-01 como día 1, y Date() devuelve el serial de hoy
La ejecución general con EnableJavaScript también soporta locale pictures mediante Date2Num(value, picture, locale), Num2Date(serial, picture, locale), DateFmt, TimeFmt, IsoTime2Num, Time2Num, Num2Time, Num2GMTime y Time
En la ejecución general, las pictures omitidas de Num2Date ahora usan el patrón por defecto del locale ambiente; pase "YYYY-MM-DD" explícitamente para preservar la salida ISO anterior, y use IsoDate2Num para entrada ISO estricta
FormCalc Locale and Picture Functions documenta parámetros, selección de locale heredada, overrides de localeSet embebidos, pictures numéricas/de texto, unidades, encoding y palabras numéricas
Advanced Picture Clauses documenta notación científica, precisión fraccionaria expresada, fechas ordinales y de semana ISO, variantes de reloj, símbolos globales y parseo compuesto en eventos generales, cálculos y validación
Funciones de finanzas
Las funciones financieras ahora siguen la semántica de parámetros XFA FormCalc en el evaluador de cálculo nativo y en el compilador de eventos general
| Función | Parámetros y resultado |
|---|---|
Pmt(principal, rate, periods) | Pago periódico positivo de un préstamo; todos los argumentos deben ser positivos |
FV(payment, rate, periods) | Valor futuro de pagos iguales; una tasa cero devuelve payment por periods |
PV(payment, rate, periods) | Valor presente de pagos iguales; una tasa cero devuelve payment por periods |
Rate(future, present, periods) | Tasa compuesta requerida para hacer crecer el valor presente hasta el valor futuro |
CTerm(rate, future, initial) | Períodos requeridos para una inversión inicial compuesta |
Term(payment, rate, future) | Períodos requeridos para que pagos iguales alcancen el valor futuro |
Apr(principal, monthlyPayment, periods) | Tasa anual porcentual encontrada por un solver acotado de tasa mensual |
NPV(rate, cashFlow1, ...) | Flujos de cash descontados de fin de período en el orden de argumentos |
IPmt y PPmt | Interés o principal pagado para (principal, annualRate, monthlyPayment, firstMonth, months); los índices de mes empiezan en 1 y 0 también selecciona el primer mes |
Esto corrige el orden de argumentos y el manejo de signos estilo hoja de cálculo anteriores: migre Pmt(rate, periods, principal) a Pmt(principal, rate, periods) y espere un resultado positivo; FV y PV ahora operan sobre pagos periódicos en lugar de un único monto inicial o final
Rate ahora computa crecimiento compuesto; NPer(rate, payment, future) sigue siendo una extensión no estándar equivalente a Term(payment, rate, future)
Los dominios financieros inválidos rechazan los eventos generales de forma atómica; el evaluador de cálculo nativo reporta una expresión fallida, y la iteración consume los presupuestos configurados de operaciones y tiempo
Librería de eventos generales
El compilador de eventos generales de FormCalc soporta nombres built-in insensibles a mayúsculas, literales decimales con punto inicial, Null, funciones trigonométricas científicas, Pi, conversión de grados/radianes, Stuff y Str; Count incluye el texto vacío y omite los valores null, y los agregados todo-null devuelven null
Mod preserva el signo del dividendo en ambas vías de evaluación; Mod(-13, 3) devuelve -1
Tipado
La evaluación numérica permanece tipada como Double: una fórmula cuya cabeza es una función de cadena se resuelve textualmente, y los resultados de finanzas se convierten de vuelta en expresiones numéricas para que Round(Pmt(...), 2) funcione; cualquier mismatch de tipos sigue degradando a un valor en blanco
Lógica condicional y arrays repetidos
Las comparaciones, And, Or, Not, los booleans y las expresiones lazy If(condition, whenTrue, whenFalse) aportan control de flujo condicional acotado
Sum, Avg, Min, Max y Count aceptan selectores numéricos repetidos como rows[*].amount, mientras que sus formas ordinarias de lista de argumentos siguen agregando expresiones escalares
Solicitudes de instancias dinámicas
InstanceAdd(name, count) y InstanceRemove(name, index) invocan el callback de instancias validado configurado por el llamador y devuelven el conteo de instancias resultante
Consulte Bounded XFA FormCalc and JavaScript para conocer la vía opcional de QuickJS, los arrays tipados, el aislamiento de runtime, los presupuestos y la telemetría
Transporte HTTP explícito
Los scripts de eventos generales soportan Get, Post y Put insensibles a mayúsculas a través del transporte explícito de host de la aplicación; los argumentos se reenvían en orden y la aplicación suministra la respuesta
Estas funciones exigen EnableJavaScript y un callback HostTransport configurado en el runtime de widgets; el evaluador escalar nativo no realiza solicitudes de red