固定形式で記述する DO-WHILE文はそのままでは
フリー・フォーマットでのLOOP文の書き方を紹介する。
![]()
固定形式での多く使われていた DO-*HIVAL文は
0001.00 H DFTNAME(TESTLOOP2) DATEDIT(*YMD/) BNDDIR('QC2LE')
0002.00 F********** LOOP 文の使い方 *******************************************
0003.00 FSHOHIN IF E K DISK
0004.00 F**********************************************************************
0005.00
0006.00 C DO *HIVAL
0007.00 C READ SHOHIN 50
0008.00 C 50 LEAVE
0009.00 C ENDDO
0010.00 C SETON LR
0011.00 C RETURN
をフリー・フォーマットで書くと
[フリー・フォーマットのDO-WHILE文]
0001.00 H DFTNAME(TESTLOOP2) DATEDIT(*YMD/) BNDDIR('QC2LE')
0002.00 F********** LOOP 文の使い方 *******************************************
0003.00 FSHOHIN IF E K DISK
0004.00 F**********************************************************************
0005.00
0006.00 /FREE
0007.00 DOW %EOF = *OFF;
0008.00 READ SHOHIN;
0009.00 ENDDO;
0010.00 *INLR = *ON;
0011.00 RETURN;
0012.00 /END-FREE
という感じになる。
指数をカウント・アップするLOOPは
0001.00 H DFTNAME(TESTLOOP4) DATEDIT(*YMD/) BNDDIR('QC2LE')
0002.00 F********** LOOP 文の使い方 *******************************************
0003.00 F*
0004.00 F**********************************************************************
0005.00
0006.00 D MSR S 100 DIM(13)
0007.00 D N S 4S 0
0008.00 D MAX S 4S 0
0009.00 D MSG S 100A
0010.00
0011.00 C EVAL MAX = %ELEM(MSR)
0012.00 C 1 DO MAX N
0013.00 C MOVEL(P) MSR(N) MSG
0014.00 C ENDDO
0015.00 C SETON LR
0016.00 C RETURN
同じことをフリー・フォーマットで記述すると
[フリー・フォーマットのDO-LOOP文]
0001.00 H DFTNAME(TESTLOOP4) DATEDIT(*YMD/) BNDDIR('QC2LE')
0002.00 F********** LOOP 文の使い方 *******************************************
0003.00 F*
0004.00 F**********************************************************************
0005.00
0006.00 D MSR S 100 DIM(13)
0007.00 D N S 4S 0
0008.00 D MAX S 4S 0
0009.00 D MSG S 100A
0010.00
0011.00 /FREE
0012.00 FOR N = 1 TO %ELEM(MSR);
0013.00 MSG = MSR(N);
0014.00 ENDFOR;
0015.00 *INLR = *ON;
0016.00 RETURN;
0017.00 /END-FREE
このような処理を FOR-LOOP文と呼ぶがあるメール配信の解説では FOR-EACH文と説明していたが
C言語を始めとする他のあらゆる言語でも FOR-EACH文という表現は聞いたことがない。
VBAでFOR-EACHというのがあるがここでもEACHなんてどこにも使っていない。
正しくはFOR-LOOP文というべきである。
