技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

opensource COBOL:ファイル入出力サンプル

opensourceCOBOL(Windows版)の挙動把握のため、ファイル入出力のサンプルを作成しました。
ファイルを4バイトずつ読み込んで、改行コードを付けて別のファイルに出力するサンプルです。
 
これができるということは、実務に近いプログラムも作れるはずです。
ソースコードHELLO WORLDと比べると大分COBOLっぽくなってます。
 
ソースコード
       IDENTIFICATION    DIVISION.
       PROGRAM-ID.       FILINOUT.
       ENVIRONMENT       DIVISION.
       INPUT-OUTPUT      SECTION.
       FILE-CONTROL.   
           SELECT  F1  ASSIGN  TO  "C:\tmp\a.txt".
           SELECT  F2  ASSIGN  TO  "C:\tmp\b.txt".
      *
       DATA                  DIVISION.
       FILE                  SECTION.
       FD  F1.
       01  F1R.
           03  F1-REC        PIC X(04).
       FD  F2.
       01  F2R.
           03  F2-REC        PIC X(06).
      *
       WORKING-STORAGE       SECTION.
       01  WORK.
           03  F1-END        PIC X(01).
       01  F2-REC-WORK.
           03  F2-STR        PIC X(04).
           03  KAIGYO        PIC X(02) VALUE X"0D0A".
      *
       PROCEDURE         DIVISION.
      *
      * 各種処理の呼び出し
      *
       000-CONTROLLER-S.
           PERFORM  100-START-S THRU 100-START-E.
           PERFORM  200-MAIN-S  THRU 200-MAIN-E
               UNTIL F1-END = HIGH-VALUE.
           PERFORM  300-END-S   THRU 300-END-E.
           STOP RUN.
       000-CONTROLLER-E.
      *
      * 前処理
      *
       100-START-S.
           INITIALIZE WORK.
           OPEN  INPUT  F1.
           OPEN  OUTPUT F2.
           PERFORM 210-READ-S THRU 210-READ-E.
       100-START-E.
      *
      * 主処理
      *
       200-MAIN-S.
           MOVE F1-REC      TO F2-STR.
           MOVE F2-REC-WORK TO F2-REC.
           WRITE F2R.
           PERFORM 210-READ-S THRU 210-READ-E.
       200-MAIN-E.
      *
      * READ処理
      *
       210-READ-S.
           READ F1
           AT END
               MOVE HIGH-VALUE TO F1-END
           END-READ.
       210-READ-E.
      *
      * 後処理
      *
       300-END-S.
           CLOSE  F1.
           CLOSE  F2.
       300-END-E.
 
【テストデータ】
・C:\tmp\a.txt
HOGEFUGAPIYO
 
【出力結果】
・C:\tmp\b.txt
HOGE
FUGA
PIYO