プログラム例 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