Funções FormCalc de cadeias, datas e finanças
Os scripts calculate de XFA suportam as famílias de funções implementadas para além da aritmética: funções de cadeia, conversão de datas e a biblioteca financeira, com literais de cadeia e expressões de tipos mistos
String functions
Values and References documenta Ref, semântica de cópia de valores, atribuição de referências, desanexação null, argumentos de funções, comparações de identidade de objetos e handles retidos entre movimentos de instâncias repetidas
Dynamic Eval executa texto de origem através do compilador nativo e do runtime geral, incluindo variáveis declaradas localmente, funções, ciclos, mutações de campos, pedidos de locale e respostas registadas de transport do host
Concat, Len, Left, Right, Substr, Replace, Lower, Upper, Trim e Space operam sobre literais entre aspas e referências a campos; as subexpressões numéricas são convertidas em texto automaticamente
Date functions
O avaliador escalar nativo converte texto ISO YYYY-MM-DD com Date2Num e Num2Date; os dias seriais do FormCalc usam 1900-01-01 como dia 1, e Date() devolve o serial de hoje
A execução geral com EnableJavaScript também suporta pictures de locale através de Date2Num(value, picture, locale), Num2Date(serial, picture, locale), DateFmt, TimeFmt, IsoTime2Num, Time2Num, Num2Time, Num2GMTime e Time
Na execução geral, as pictures de Num2Date omitidas usam agora o padrão por defeito do locale ambiente; passe "YYYY-MM-DD" explicitamente para preservar a saída ISO anterior, e use IsoDate2Num para entrada ISO estrita
FormCalc Locale and Picture Functions documenta parâmetros, seleção de locale herdada, overrides de localeSet embedded, pictures numéricas/texto, unidades, encoding e números por extenso
Advanced Picture Clauses documenta notação científica, precisão fracionária expressa, datas ordinais e de semanas ISO, variantes de relógio, símbolos globais e parsing composto em eventos gerais, cálculos e validação
Finance functions
As funções financeiras seguem agora as semânticas de parâmetros do XFA FormCalc no avaliador nativo de cálculo e no compilador geral de eventos
| Função | Parâmetros e resultado |
|---|---|
Pmt(principal, rate, periods) | Prestação periódica positiva de um empréstimo; todos os argumentos têm de ser positivos |
FV(payment, rate, periods) | Valor futuro de prestações iguais; taxa zero devolve prestação vezes períodos |
PV(payment, rate, periods) | Valor presente de prestações iguais; taxa zero devolve prestação vezes períodos |
Rate(future, present, periods) | Taxa composta necessária para crescer o valor presente até ao valor futuro |
CTerm(rate, future, initial) | Períodos necessários para um investimento inicial composto |
Term(payment, rate, future) | Períodos necessários para prestações iguais atingirem o valor futuro |
Apr(principal, monthlyPayment, periods) | Taxa anual efetiva encontrada por um solver limitado de taxa mensal |
NPV(rate, cashFlow1, ...) | Fluxos de caixa descontados no fim do período, pela ordem dos argumentos |
IPmt e PPmt | Juro ou capital pago para (principal, annualRate, monthlyPayment, firstMonth, months); os índices de meses começam em 1, e 0 também seleciona o primeiro mês |
Isto corrige a ordenação de argumentos ao estilo de folhas de cálculo e o tratamento de sinais anteriores: migre Pmt(rate, periods, principal) para Pmt(principal, rate, periods) e espere um resultado positivo; FV e PV operam agora sobre prestações periódicas em vez de um único montante inicial ou final
Rate calcula agora crescimento composto; NPer(rate, payment, future) continua a ser uma extensão não standard equivalente a Term(payment, rate, future)
Domínios financeiros inválidos rejeitam eventos gerais atomicamente; o avaliador nativo de cálculo reporta uma expressão falhada, e a iteração consome os orçamentos configurados de operações e de tempo
General event library
O compilador geral de eventos FormCalc suporta nomes built-in insensíveis a maiúsculas e minúsculas, literais decimais com ponto à esquerda, Null, funções trigonométricas científicas, Pi, conversão graus/radianos, Stuff e Str; Count inclui texto vazio e omite valores null, e agregados todos null devolvem null
Mod preserva o sinal do dividendo em ambos os caminhos de avaliação; Mod(-13, 3) devolve -1
Typing
A avaliação numérica mantém-se do tipo Double: uma fórmula cujo início é uma função de cadeia é resolvida como texto, e os resultados financeiros voltam a converter-se em expressões numéricas, para que Round(Pmt(...), 2) funcione; qualquer incompatibilidade de tipos continua a degradar-se para um valor em branco
Conditional logic and repeated arrays
Comparações, And, Or, Not, booleans e expressões preguiçosas If(condition, whenTrue, whenFalse) fornecem fluxo de controlo condicional limitado
Sum, Avg, Min, Max e Count aceitam seletores numéricos repetidos como rows[*].amount, enquanto as respetivas formas comuns de lista de argumentos continuam a agregar expressões escalares
Dynamic instance requests
InstanceAdd(name, count) e InstanceRemove(name, index) invocam o callback de instâncias validado configurado por quem chama e devolvem a contagem de instâncias resultante
Ver Bounded XFA FormCalc and JavaScript para o caminho opcional com QuickJS, arrays tipados, isolamento de runtime, orçamentos e telemetria
Explicit HTTP transport
Os scripts de eventos gerais suportam Get, Post e Put insensíveis a maiúsculas e minúsculas através de transport explícito do host da aplicação; os argumentos reenviam-se pela ordem dada e a aplicação fornece a resposta
Estas funções exigem EnableJavaScript e um callback HostTransport configurado no runtime de widgets; o avaliador escalar nativo não faz pedidos de rede