Addition 1
... VARYING f FROM f1 NEXT f2
Effect
This addition is useful if you have a series of fields of the same type and the same distance from each other.f is a variable which you define in a DATA statement. On each loop pass, f contains a new value. The field f1 after " FROM " specifies the first value of the variable f , while the field f2 after " NEXT " specifies the value to be assigned to the variable f in the second pass. For each subsequent pass, the variable f contains the next value in the sequence determined by the distance between the fields f1 and f2 in memory.
The fields f1 and f2 should be type-compatible and convertible to f .If the value of f changes during the loop pass, the new value is then placed in the appropriate field fn assigned to f (transfer type: pass by value and result). If the loop pass terminates because of a dialog message, the new value is not passed back if f changes.The addition ... VARYING f FROM f1 NEXT f2 can be used several times in a DO statement.
Example
DATA: BEGIN OF WORD,
ONE VALUE 'E',
TWO VALUE 'x',
THREE VALUE 'a',
FOUR VALUE 'm',
FIVE VALUE 'p',
SIX VALUE 'l',
SEVEN VALUE 'e',
EIGHT VALUE '!',
END OF WORD,
LETTER1, LETTER2.
DO VARYING LETTER1 FROM WORD-ONE THEN WORD-THREE
VARYING LETTER2 FROM WORD-TWO THEN WORD-FOUR.
WRITE: LETTER1, LETTER2.
IF LETTER2 = '!'.
EXIT.
ENDIF.
ENDDO.
The resulting output is the character string
"E x a m p l e !".
Note
When using this addition, ensure that the DO loop terminates at the "right" time, in order to avoid assigning meaningless values that happen to be in memory after this sequence of fields. This could result in a runtime error.
No comments :
Post a Comment