A instrução FOR repete-se através de uma lista (por exemplo, uma matriz de mensagem).
>>-FOR--correlation_name--AS--field_reference--DO--instruções---> >--END--FOR----------------------------------------------------><
Para cada iteração, a instrução FOR cria a variável de correlação (correlation_name no diagrama de sintaxe) igual ao membro atual da lista (field_reference), em seguida, executa o bloco de instruções. A vantagem da instrução FOR é que ela se repete através de uma lista sem precisar gravar nenhum tipo de construção em loop (e elimina a possibilidade de ciclos infinitos).
SET OutputRoot.MQMD=InputRoot.MQMD;
SET Environment.SourceData.Folder[1].Field1 = 'Field11Value';
SET Environment.SourceData.Folder[1].Field2 = 'Field12Value';
SET Environment.SourceData.Folder[2].Field1 = 'Field21Value';
SET Environment.SourceData.Folder[2].Field2 = 'Field22Value';
DECLARE i INTEGER 1;
FOR source AS Environment.SourceData.Folder[] DO
CREATE LASTCHILD OF OutputRoot.XMLNSC.Data.ResultData.MessageArrayTest.Folder[i]
NAME 'FieldA' VALUE '\' || source.Field1 || '\' || CAST(i
AS CHAR);
CREATE LASTCHILD OF OutputRoot.XMLNSC.Data.ResultData.MessageArrayTest.Folder[i]
NAME 'FieldB' VALUE '\' || source.Field2 || '\' || CAST(i
AS CHAR);
SET i = i + 1;
END FOR;
gera a mensagem de saída: <Dados>
<ResultData>
<MessageArrayTest>
<Folder>
<FieldA>Field11Value\1</FieldA>
<FieldB>Field12Value\1</FieldB>
</Folder>
<Folder>
<FieldA>Field21Value\2</FieldA>
<FieldB>Field22Value\2</FieldB>
</Folder>
</MessageArrayTest>
</ResultData>
</Data>