索引付きファイルの作成

このプログラムでは、銀行預金者の記録の索引付きファイルを作成します。 各索引付きファイル・レコード内のキーは INDEX-KEY (預金者の口座番号) です。 入力レコードは、このキーの昇順に並べられています。 レコードは入力ファイルから読み取られて、索引付きファイル・レコード域に転送されます。 その後、索引付きファイルのレコードが書き込まれます。

図 127. 索引付きファイル・プログラムの例
 5722WDS V5R4M0  060210 LN  IBM ILE COBOL                 CBLGUIDE/CRTIND          ISERIES1   06/02/15 14:52:38        ページ    2
                                     ソ ー ス
  STMT PL SEQNO  -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S コピー名   変更日付
     1     000100 IDENTIFICATION DIVISION.
     2     000200 PROGRAM-ID.  CRTIND.
           000300
     3     000400 ENVIRONMENT DIVISION.
     4     000500 CONFIGURATION SECTION.
     5     000600   SOURCE-COMPUTER. IBM-ISERIES
     6     000700   OBJECT-COMPUTER. IBM-ISERIES.
     7     000800 INPUT-OUTPUT SECTION.
     8     000900 FILE-CONTROL.
     9     001000     SELECT INDEXED-FILE ASSIGN TO DISK-INDEXFILE
    11     001100         ORGANIZATION IS INDEXED
    12     001200          ACCESS IS SEQUENTIAL
    13     001300         RECORD KEY IS INDEX-KEY
    14     001400         FILE STATUS IS INDEXED-FILE-STATUS.
    15     001500     SELECT INPUT-FILE ASSIGN TO DISK-FILEG
    17     001600         FILE STATUS IS INPUT-FILE-STATUS.
           001700
    18     001800 DATA DIVISION.
    19     001900 FILE SECTION.
    20     002000 FD  INDEXED-FILE.
    21     002100 01  INDEX-RECORD.
    22     002200     05  INDEX-KEY                     PICTURE X(10).
    23     002300     05  INDEX-FLD1                    PICTURE X(10).
    24     002400     05  INDEX-NAME                    PICTURE X(20).
    25     002500     05  INDEX-BAL                     PICTURE S9(5)V99.
    26     002600 FD  INPUT-FILE.
    27     002700 01  INPUT-RECORD.
    28     002800     05  INPUT-KEY                     PICTURE X(10).
    29     002900     05  INPUT-NAME                    PICTURE X(20).
    30     003000     05  INPUT-BAL                     PICTURE S9(5)V99.
    31     003100 WORKING-STORAGE SECTION.
    32     003200 77  INDEXED-FILE-STATUS               PICTURE XX.
    33     003300 77  INPUT-FILE-STATUS                 PICTURE XX.
    34     003400 77  OP-NAME                           PICTURE X(7).
    35     003500 01  INPUT-END                         PICTURE X VALUE SPACES.
    36     003600     88  THE-END-OF-INPUT              VALUE "E".
           003700
    37     003800 PROCEDURE DIVISION.
    38     003900 DECLARATIVES.
           004000 INPUT-ERROR SECTION.
           004100       USE AFTER STANDARD ERROR PROCEDURE ON INPUT-FILE.
           004200 INPUT-ERROR-PARA.
    39     004300     DISPLAY "UNEXPECTED ERROR ON ", OP-NAME, " FOR INPUT-FILE ".
    40     004400     DISPLAY "FILE STATUS IS ", INPUT-FILE-STATUS.
    41     004500     DISPLAY "PROCESSING ENDED"
    42     004600     STOP RUN.
           004700
           004800 OUTPUT-ERROR SECTION.
           004900       USE AFTER STANDARD ERROR PROCEDURE ON INDEXED-FILE.
           005000 OUTPUT-ERROR-PARA.
    43     005100     DISPLAY "UNEXPECTED ERROR ON ", OP-NAME, " FOR INDEXED-FILE ".
    44     005200     DISPLAY "FILE STATUS IS ", INDEXED-FILE-STATUS.
    45     005300     DISPLAY "PROCESSING ENDED"
 5722WDS V5R4M0  060210 LN  IBM ILE COBOL                 CBLGUIDE/CRTIND          ISERIES1   06/02/15 14:52:38        ページ    3
  STMT PL SEQNO  -A 1 B..+....2....+....3....+....4....+....5....+....6....+....7..IDENTFCN  S コピー名   変更日付
    46     005400     STOP RUN.
           005500 END DECLARATIVES.
           005600
           005700 MAIN-PROGRAM SECTION.
           005800 MAINLINE.
    47     005900     MOVE "OPEN" TO OP-NAME.
    48     006000     OPEN INPUT INPUT-FILE
           006100         OUTPUT INDEXED-FILE.
           006200
    49     006300     MOVE "READ" TO OP-NAME.
    50     006400     READ INPUT-FILE
    51     006500          AT END SET THE-END-OF-INPUT TO TRUE
           006600     END-READ.
           006700
    52     006800     PERFORM UNTIL THE-END-OF-INPUT
    53     006900         MOVE INPUT-KEY TO INDEX-KEY
    54     007000         MOVE INPUT-NAME TO INDEX-NAME
    55     007100         MOVE INPUT-BAL TO INDEX-BAL
    56     007200         MOVE SPACES TO INDEX-FLD1
    57     007300         MOVE "WRITE" TO OP-NAME
    58     007400         WRITE INDEX-RECORD
           007500
    59     007600         MOVE "READ" TO OP-NAME
    60     007700         READ INPUT-FILE
    61     007800              AT END SET THE-END-OF-INPUT TO TRUE
           007900         END-READ
           008000     END-PERFORM.
           008100
    62     008200     MOVE "CLOSE" TO OP-NAME.
    63     008300     CLOSE INPUT-FILE
           008400           INDEXED-FILE.
    64     008500     STOP RUN.
           008600
                           * * * * *   ソ ー ス 仕 様 の 終 わ り   * * * * *