Funciones de cadena, fecha y finanzas de FormCalc
Los scripts de cálculo XFA ahora pueden usar las familias completas de funciones de FormCalc más allá de la aritmética: funciones de cadena, conversión de fecha y la biblioteca de finanzas, con literales de cadena y expresiones de tipo mixto
Funciones de cadena
Values and References documenta Ref, la semántica de copia de valores, la asignación de referencias, el desacoplamiento null, los argumentos de funciones, las comparaciones de identidad de objetos y los handles retenidos a través del movimiento de instancias repetidas
Dynamic Eval ejecuta texto fuente a través del compilador nativo y el runtime general, incluidas variables declaradas localmente, funciones, bucles, mutaciones de campos, solicitudes de locale y respuestas grabadas de transporte del host
Concat, Len, Left, Right, Substr, Replace, Lower, Upper, Trim y Space operan sobre literales entre comillas y referencias de campo; las subexpresiones 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 pictures de locale 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 usan ahora 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 incrustados, pictures numéricas/de texto, unidades, encoding y palabras numéricas
Advanced Picture Clauses documenta notación científica, precisión fraccional 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 siguen ahora la semántica de parámetros de XFA FormCalc en el evaluador de cálculo nativo y el compilador general de eventos
| 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; con tasa cero devuelve pago por períodos |
PV(payment, rate, periods) | Valor presente de pagos iguales; con tasa cero devuelve pago por períodos |
Rate(future, present, periods) | Tasa compuesta necesaria para hacer crecer el valor presente hasta el valor futuro |
CTerm(rate, future, initial) | Períodos necesarios para una inversión inicial capitalizada |
Term(payment, rate, future) | Períodos necesarios para que pagos iguales alcancen el valor futuro |
Apr(principal, monthlyPayment, periods) | Tasa anual porcentual hallada por un solver acotado de tasa mensual |
NPV(rate, cashFlow1, ...) | Flujos de caja descontados de fin de período en el orden de los argumentos |
IPmt y PPmt | Interés o capital 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 al estilo hoja de cálculo anterior: migre Pmt(rate, periods, principal) a Pmt(principal, rate, periods) y espere un resultado positivo; FV y PV operan ahora sobre pagos periódicos en lugar de un único importe inicial o final
Rate calcula ahora 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 informa una expresión fallida, y la iteración consume los presupuestos de operación y tiempo configurados
Biblioteca de eventos generales
El compilador general de eventos FormCalc soporta nombres integrados insensibles a mayúsculas, literales decimales con punto inicial, Null, funciones trigonométricas científicas, Pi, conversión grado/radián, Stuff y Str; Count incluye texto vacío y omite valores null, y los agregados todo-null devuelven null
Mod preserva el signo del dividendo en ambas rutas 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 discrepancia de tipo sigue degradándose a un valor en blanco
Lógica condicional y matrices repetidas
Las comparaciones, And, Or, Not, los booleanos y las expresiones perezosas If(condition, whenTrue, whenFalse) proporcionan flujo de control 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 continúan agregando expresiones escalares
Solicitudes dinámicas de instancia
InstanceAdd(name, count) e InstanceRemove(name, index) invocan la devolución de llamada de instancia validada configurada por el llamador y devuelven el recuento de instancias resultante
Consulte FormCalc XFA y JavaScript acotados para conocer la ruta opcional de QuickJS, las matrices tipadas, el aislamiento del tiempo de ejecución, 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 del 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