キーによるランダム処理

キーによるランダム処理方式では、読み取るレコードのキーを識別する 検索引数を、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) を示します。

図 171. データベース・ファイル CHANGE (物理ファイル) の 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 フィールドをキー・フィールドとして 指定します。 読み取り / 更新処理は、演算仕様書に指定された命令によってすべて制御されま す。

図 172. 外部記述ファイルのキーによる ランダム処理
      *****************************************************************
      *  プログラム名:  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