FOR statement

The FOR statement iterates through a list (for example, a message array).

Syntax

Read syntax diagramSkip visual syntax diagramFORcorrelation_nameASfield_referenceDOstatementsENDFOR

For each iteration, the FOR statement makes the correlation variable (correlation_name in the syntax diagram) equal to the current member of the list (field_reference), then executes the block of statements. The advantage of the FOR statement is that it iterates through a list without your having to write any sort of loop construct (and eliminates the possibility of infinite loops).

For example the following ESQL:
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;
generates the output message:
<Data>
 <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>