プログラム例 1 (1 次ファイルを使用するキーによる順次処理)

この例では、社員マスター・レコード (EMPREC) および 週間勤務時間レコード (RCWEEK) が同じ論理ファイル EMPL1 に含まれています。 EMPL1 ファイルはプライマリー入力ファイルとして定義され、キーによる順次 で読み取られます。 このファイルのデータ記述仕様書で、EMPREC レコードのキーは ENUM (社員番号) フィールド として定義され、RCWEEK レコードのキーは ENUM フィールド、 プラス WEEKNO (週番号) フィールドとして、すなわち複合キーとして 定義されます。

図 1. キーによる順次処理、例 1
      *****************************************************************
      *  プログラム名:  YTDRPT1                                       *
      *  関連ファイル:  EMPL1    (論理ファイル)                       *
      *                 PRINT    (プリンター・ファイル)               *
      *          説明:  このプログラムはキー順方式を使用              *
      *                 するレコードの処理例です。                    *
      *                 このプログラムは各社員の情報および週間勤務    *
      *                 時間を印刷します。                            *
      *****************************************************************
     FPRINT     O    F   80        PRINTER
     FEMPL1     IP   E           K DISK
      *  各レコードにレコード識別標識を割り当てます。これらのレコード識別標識を
      *  使用して、異なるレコード・タイプの処理を
      *  制御します。
     IEMPREC        01
     I*
     IRCWEEK        02
     I*

      *  EMPL1 ファイルでは、キーによって有効な社員番号が順次読み取り
      *  されるため、RCWEEK レコードの ENUM は最後に検索された
      *  EMPREC の ENUM と同じでなければなりません。これは、EMPREC
      *  レコードの ENUM をフィールド EMPNO に保管し、これを
      *  RCWEEK レコードから読み取られた ENUM と比較することによって
      *  チェックする必要があり、そのチェックがここで行なわれます。
      *  ENUM が有効な場合に *IN12 がオンに設定されます。*IN12 は
      *  RCWEEK レコードの印刷の制御に使用されます。

     C                   SETOFF                                       12
     C   01              MOVE      ENUM          EMPNO             5 0
     C*
     C                   IF        (*IN02='1') AND (ENUM=EMPNO)
     C                   SETON                                        12
     C                   ENDIF

     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