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