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