COBOL入門 Mission4

処 理 内 容 PROGRAM-ID 難易度 言語
表検索 (Table-Search) TBL040 1 COBOL
1:処理図
2:処理概要

駅データファイルを読んで、駅コードで表検索し
 駅コード 駅名 金額 を表示する
 駅コード  駅  名   金額
  1022   高尾駅    011111
  1021   西八王子駅  022222
  1020   八王子駅   033333
  1019   豊田駅    044444
  1018   日野駅    055555
 
      (以下略)

   表検索の基本パターン
 駅コード 金額は ファイル(TB03A.DAT)を
   駅名はテーブルを参照する


3:ファイル名称
I-O
外部ファイル名 編成 KP/KL RL/BF access
(1)駅データファイル in C:\dat\TB03A.dat seq  /  10/1
4:外部フォーマット定義(画面・書式等)
       TB03A.DAT フォーマット  駅コード  金額
                        X(04)   9(06)
**********  表検索  **********

 IDENTIFICATION             DIVISION.
 PROGRAM-ID.                TBL040.

 ENVIRONMENT                DIVISION.
 INPUT-OUTPUT               SECTION.
 FILE-CONTROL.
     SELECT  F1  ASSIGN  TO  "C:\DAT\TB03A.DAT"  STATUS  FST
                            ACCESS  MODE  IS  SEQUENTIAL.
 DATA                       DIVISION.
 FILE                       SECTION.
 FD  F1.
 01  F1R.
     03  F1CD               PIC X(04).
     03  F1KIN              PIC 9(06).

 WORKING-STORAGE            SECTION.
***** ( ファイルステータス ) *****
 01  FST                    PIC X(02).
***** ( 添え字領域 ) *****
 01  I                      PIC 9(02).
***** ( 表示用編集領域 ) *****
 01  D1R.
     03  D1CD               PIC X(04)B(02).
     03  D1NM               PIC X(12)B(02).
     03  D1KIN              PIC X(06).
***** ( 文字常数領域 ) *****
 01  TBL-CNST.
     03  PIC X(16)  VALUE "1001新  宿  駅  ".
     03  PIC X(16)  VALUE "1002大 久 保 駅 ".
     03  PIC X(16)  VALUE "1003東 中 野 駅 ".
     03  PIC X(16)  VALUE "1004中  野  駅  ".
     03  PIC X(16)  VALUE "1005高 円 寺 駅 ".
     03  PIC X(16)  VALUE "1006阿佐ヶ谷駅  ".
     03  PIC X(16)  VALUE "1007荻  窪  駅  ".
     03  PIC X(16)  VALUE "1008西 荻 窪 駅 ".
     03  PIC X(16)  VALUE "1009吉 祥 寺 駅 ".
     03  PIC X(16)  VALUE "1010三  鷹  駅  ".
     03  PIC X(16)  VALUE "1011武 蔵 境 駅 ".
     03  PIC X(16)  VALUE "1012東小金井駅  ".
     03  PIC X(16)  VALUE "1013武蔵小金井駅".
     03  PIC X(16)  VALUE "1014国 分 寺 駅 ".
     03  PIC X(16)  VALUE "1015西国分寺駅  ".
     03  PIC X(16)  VALUE "1016国  立  駅  ".
     03  PIC X(16)  VALUE "1017立  川  駅  ".
     03  PIC X(16)  VALUE "1018日  野  駅  ".
     03  PIC X(16)  VALUE "1019豊  田  駅  ".
     03  PIC X(16)  VALUE "1020八 王 子 駅 ".
     03  PIC X(16)  VALUE "1021西八王子駅  ".
     03  PIC X(16)  VALUE "1022高  尾  駅  ".
***** ( テーブルとして再定義する ) *****
 01  TBL  REDEFINES  TBL-CNST.
     03  TB  OCCURS  22.
*        *** 駅コード ***
         05  TBCD  PIC X(04).
*        ***   駅名   ***
         05  TBNM  PIC X(12).
*
 PROCEDURE                  DIVISION.
     OPEN  INPUT  F1
     PERFORM  UNTIL  FST NOT  =  "00"
         READ  F1
              END  CONTINUE
              NOT  END  PERFORM VARYING I FROM 1 BY 1 
                                UNTIL I > 22  OR  F1CD = TBCD(I)
                            CONTINUE
                        END-PERFORM
                    IF  I  >  22
                        THEN  DISPLAY F1CD "  駅コード見当たらず  "
                        ELSE  MOVE  TBCD(I)  TO  D1CD
                              MOVE  TBNM(I)  TO  D1NM
                              MOVE  F1KIN    TO  D1KIN  DISPLAY  D1R
                    END-IF
         END-READ
     END-PERFORM
     CLOSE  F1
     DISPLAY  "!!! 作業終了しました !!!"
     STOP  RUN.

<< Back    Index    Next >>   < Top >