プログラム例 2 (READ を使用したキーによる順次処理)
この例は先の例と同じですが、異なる点は、EMPL1 ファイルが全手順ファイル として定義されていて、ファイルの読み取りが READ 命令コードによって行わ れるということです。
図 1. キーによる順次処理、例 2
*****************************************************************
* プログラム名: YTDRPT2 *
* 関連ファイル: EMPL1 (論理ファイル) *
* PRINT (プリンター・ファイル) *
* 説明: このプログラムはキー順方式を使用 *
* 使用するレコードの処理例を示しています。 *
* このプログラムは各社員の情報および週間勤務 *
* 時間を印刷します。 *
*****************************************************************
FPRINT O F 80 PRINTER
FEMPL1 IF E K DISK
* 2 つのレコード (EMPREC と RCWEEK) は同じファイルに入っており、
* レコード識別標識は各レコードに割り当てられています。
* レコード識別標識は異なるレコード・タイプの処理の制御に使用されます。
* 全手順ファイルの場合には、制御レベルまたは突き合わせフィールドを
* 指定することはできません。
IEMPREC 01
I*
IRCWEEK 02
I*
* READ 命令コードは、EMPL1 ファイルからレコードを読み取ります。
* ファイルの終わり標識は 58 ~ 59 桁目に指定します。ファイルの終わり
* 標識 99 は READ 命令によってオンに設定され、プログラムは
* EOFEND タグに分岐して、ファイル終わりルーチンを処理
* します。
C SETOFF 12
C READ EMPL1 99
C 99 GOTO EOFEND
C*
C 01 MOVE ENUM EMPNO 5 0
C*
C IF (*IN02='1') AND (ENUM=EMPNO)
C SETON 12
C ENDIF
* EMPL1 は全手順ファイルとして定義されているため、最終レコードを
* 処理した後でプログラムを終了するために標識 *INLR をオンに
* 設定する必要があります。
C EOFEND TAG
C 99 SETON LR
OPRINT H 1P 2 6
O 40 'EMPLOYEE WEEKLY WORKING '
O 52 'HOURS REPORT'
O H 01 1
O 12 'EMPLOYEE: '
O ENAME 32
O H 01 1
O 12 'SERIAL #: '
O ENUM 17
O 27 'DEPT: '
O EDEPT 30
O 40 'TYPE: '
O ETYPE 41
O H 01 1
O 20 'WEEK #'
O 50 'HOURS WORKED'
O D 12 1
O WEEKNO 18
O EHWRK 3 45