Originalmente introduzido em 4D v14 R4
As etiquetas de transformação 4D (anteriormente chamadas Etiquetas HTML 4D) foram estendidas:
- uma nova etiqueta 4DEVAL foi adicionado
- a etiqueta 4DLOOP agora é compatível com qualquer expressão 4D ou com um ponteiro a um array como parâmetro.
Nota: o comando PROCESS 4D TAGS foi estendido também em 4D v14 R4. Para obter mais informação, consulte a seção PROCESS 4D TAGS.
Sintaxe: <!--#4DEVAL VarName--> o <!--#4DEVAL 4DExpression-->
A nova etiqueta 4DEVAL lhe permite avaliar uma variável ou uma expressão 4D.
Igualmente que a etiqueta 4DHTML existente, 4DEVAL não escapa os caracteres HTML ao devolver texto. No entanto, a diferença de 4DHTML ou 4DTEXT, 4DEVAL lhe permite executar toda instrução 4D válida, incluindo atribuições e expressões que não devolvem nenhum valor.
Por exemplo, pode executar:
$input:="<!--#4DEVAL a:=42-->"
$input:=$input+"<!--#4DEVAL a+1-->"
PROCESS 4D TAGS($input;$output)
Pode utilizar os comandos ou funções 4D diretamente como expressões. Neste caso, é uma boa ideia inserir o código de escape do número de comando no parâmetro Expresion4D. Desta maneira a expressão será avaliada corretamente sem importar a versão da linguagem 4D utilizada, ou se o nome do comando muda em um lançamento 4D futuro. A sintaxe a utilizar é "<nome_comando>:C<número_comando>. Por exemplo, para chamar Current time Current time, escreva "Current time:C178".
Nota: os números dos comandos podem ser encontradas na página Comandos do Explorador:

Em caso de um erro de avaliação, o texto inserido será da forma: “<!--#4DEVAL expression--> : ## error # error code”.
Nota: a execução de um método 4D via um 4DEVAL desde uma petição Web requer que a opção "Disponível através das etiquetas 4D e URLs (4DACTION...)" esteja selecionada nas propriedades do método. Para obter mais informação, consulte a seção Segurança das conexões.
A etiqueta 4DLOOP agora aceita dois novos tipos de condições (além disso de tabela, array e método): uma expressão 4D e um ponteiro de array.
- <!--#4DLOOP 4DExpression-->
Com esta sintaxe, a etiqueta 4DLOOP fará um laço em tanto que a expressão 4D devolve True. A expressão pode ser qualquer expressão booleana válida e deve conter uma parte variável a avaliar em cada laço para evitar laços infinitos.
Por exemplo, o seguinte código:
<!--#4DEVAL $i:=0-->
<!--#4DLOOP ($i<4)-->
<!--#4DEVAL $i-->
<!--#4DEVAL $i:=$i+1-->
<!--#4DENDLOOP-->
produzirá:
0
1
2
3
- <!--#4DLOOP pointerArray-->
Neste caso, a etiqueta 4DLOOP funcionará como é feito com um array: é feito um laço para cada elemento do array. O elemento atual do array se incrementa cada vez que a porção de código se repete.
Esta sintaxe é útil quando se passa um ponteiro de array como parâmetro ao comando PROCESS 4D TAGS.
Exemplo:
ARRAY TEXT($array;2)
$array{1}:="hello"
$array{2}:="world"
$input:="<!--#4DEVAL $1-->"
$input:=$input+"<!--#4DLOOP $2-->"
$input:=$input+"<!--#4DEVAL $2->{$2->}--> "
$input:=$input+"<!--#4DENDLOOP-->"
PROCESS 4D TAGS($input;$output;"elements = ";->$array)