キーによるランダム処理方式では、読み取るレコードのキーを識別する 検索引数を、CHAIN 命令の演算仕様書の演算項目 1 に指定します。 図 172 は、キーによって ランダムに処理される外部記述 DISK ファイルの例を示します。 指定したレコードは 明細演算時または合計演算時にファイルから 読み取られます。
キーによるランダム処理の処理方式は、入力ファイルまたは更新ファイルとし て指定されている全手順ファイルに有効です。
外部記述ファイルについては、ファイル仕様書の 34 桁目に K を入れ、 ファイルがキーについて作成されるアクセス・パスにしたがって処理されるというこ とを示さなければなりません。
ファイルのデータ記述仕様書 (DDS) にはキー値が入っているフィールド (キー・フィールド) を指定します。 ファイル仕様書の 35 桁目はブランクでなければなりません。
プログラム記述ファイルは、索引付きファイル (35 桁目に I) として指定されていなければならず、 また、ファイル仕様書の 34 桁目は A、D、G、P、T、または Z を含む 必要があります。キー・フィールドの長さはファイル仕様書の 29 - 33 桁で識別され、 キー・フィールドの開始位置は KEYLOC キーワードに指定されます。 データ記述仕様書は、プログラム記述入力ファイルのアクセス・パスを作成する ために使用しなければなりません。(索引付きファイルを参照してください。)
以下は、キーによるランダム処理のデータ処理方式の 使用法を示す例です。図 165 および図 171 は、EMSTUPD (図 172) に よって使われる物理ファイルのデータ記述仕様書 (DDS) を示します。
A***************************************************************** A* 関連プログラム: EMSTUPD * A* 説明: これは物理ファイル CHANGE の DDS です。 * A* これには 1 つのレコード様式 CHGREC が入っています。 * A* このファイルには、EMPMST ファイルの更新に使用する * A* 新しいデータが入っています。 * A***************************************************************** A* A R CHGREC A ENUM 5 0 TEXT('EMPLOYEE NUMBER') A NNAME 20 TEXT('NEW NAME') A NTYPE 1 TEXT('NEW TYPE') A NDEPT 3 0 TEXT('NEW DEPARTMENT') A NNHRS 3 1 TEXT('NEW NORMAL WEEK HOURS') A K ENUM
この例では、EMPMST ファイルが全手順更新ファイルとして定義されてい ます。 更新ファイル CHANGE はキーによって処理されます。 外部記述ファイル (EMPMST と CHANGE) の それぞれの DDS が、ENUM フィールドをキー・フィールドとして 指定します。 読み取り / 更新処理は、演算仕様書に指定された命令によってすべて制御されま す。
***************************************************************** * プログラム名: EMSTUPD * * 関連ファイル: EMPMST (物理ファイル) * * CHANGE (物理ファイル) * * 説明: このプログラムはキーによるランダム処理方式を * * 使用するレコード処理例を示しています。CHAIN * * 命令コードが使用されます。 * * 物理ファイル CHANGE には、 * * EMPMST ファイルに行なわれた変更がすべて入って * * います。レコード様式名は CHGREC です。 * * CHGREC にはブランクのままのフィールドもあり * * ますが、その場合にはそのフィールドには変更は * * 行なわれていません。 * ***************************************************************** FCHANGE IP E K DISK FEMPMST UF E K DISK * 各レコードがプライマリー入力ファイルから読み取られるたびに、 * 社員番号 (ENUM) が検索引数として使用され、EMPMST * ファイルの対応するレコードに連鎖されます。 * *IN03 は、対応するレコードが見付からなかった場合にオンに設定 * されます。これは正しくない ENUM が CHGREC レコードに入れられた時に * 起こります。 C ENUM CHAIN EMPREC 03 C 03 GOTO NEXT C NNAME IFNE *BLANK C MOVE NNAME ENAME C ENDIF C NTYPE IFNE *BLANK C MOVE NTYPE ETYPE C ENDIF C NDEPT IFNE *ZERO C MOVE NDEPT EDEPT C ENDIF C NNHRS IFNE *ZERO C MOVE NNHRS ENHRS C ENDIF C UPDATE EMPREC C* C NEXT TAG
(C) Copyright IBM Corporation 1992, 2006. All Rights Reserved.