LOOP
LOOP allows the programmer to specify loops with multiple exit conditions.
COMMAND SYNTAX
LOOP statements1 WHILE | UNTIL expression DO statements2 REPEAT
SYNTAX ELEMENTS
statements1 and statements2 consist of any number of standard statements include the LOOP statement itself, thus allowing nested loops.
statements1 will always be executed at least once, after which the WHILE or UNTIL clause is evaluated.
expression is tested for Boolean TRUE/FALSE by either the WHILE clause or the UNTIL clause. When tested by the WHILE clause statements2 will only be executed if expression is Boolean TRUE. When tested by the UNTIL clause, statements2 will only be executed if the expression evaluates to Boolean FALSE.
REPEAT causes the loop to start again with the first statement following the LOOP statement.
NOTES
EXAMPLE
IF NOT( GETENV('TAFC_HOME', V.HOME) ) THEN CRT 'TAFC_HOME not defined' STOP END EXECUTE 'SELECT ' : V.HOME : '/jbcmessages SAMPLE 10' RTNLIST V.MSG.L * Retrieve @IDs one by one LOOP REMOVE V.ID FROM V.MSG.L SETTING V.STATUS CRT V.ID IF V.STATUS EQ 0 THEN BREAK ;* end of list reached REPEAT
Output looks like:
INV_FILE_TYPE DEVICE_QUIT RTN_NOGOSUB ARRAY_ILLEGAL_SIZE DIFF_COMMON QLNOVERB QLPARAMERR SP-HoldCount 603 1134
The loop used in this example can also be defined this way:
LOOP REMOVE V.ID FROM V.MSG.L SETTING V.STATUS CRT V.ID UNTIL V.STATUS EQ 0 REPEAT