表示ファイル機能を使って画面入出力を行うときのプログラム記述について、COBOLの各部ごとに説明します。
[ADDR.cob]
COBOLソースプログラムは以下を使用します。
IDENTIFICATION DIVISION.
PROGRAM-ID. ADDR.
*
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ディスプレイファイル ASSIGN TO GS-DSPFILE
SYMBOLIC DESTINATION IS "DSP"
FORMAT IS DSP-FORMAT
GROUP IS DSP-GROUP
PROCESSING MODE IS DSP-MODE
UNIT CONTROL IS DSP-CONTROL
SELECTED FUNCTION IS DSP-ATTN
FILE STATUS IS DSP-STATUS1 DSP-STATUS2.
SELECT プリンタファイル ASSIGN TO GS-PRTFILE
SYMBOLIC DESTINATION IS "PRT"
FORMAT IS PRT-FORMAT
GROUP IS PRT-GROUP
PROCESSING MODE IS PRT-MODE
UNIT CONTROL IS PRT-CONTROL
FILE STATUS IS PRT-STATUS1 PRT-STATUS2.
* DATA DIVISION.
FILE SECTION.
FD ディスプレイファイル.
COPY ADDRDSP OF XMDLIB.
FD プリンタファイル.
COPY ADDRPRT OF XMDLIB.
*
WORKING-STORAGE SECTION.
01 DSP-FORMAT PIC X(08).
01 DSP-GROUP PIC X(08).
01 DSP-MODE PIC X(02).
01 DSP-CONTROL PIC X(06).
01 DSP-ATTN PIC X(04).
01 DSP-STATUS1 PIC X(02).
01 DSP-STATUS2 PIC X(04).
*
01 PRT-FORMAT PIC X(08).
01 PRT-GROUP PIC X(08).
01 PRT-MODE PIC X(02).
01 PRT-CONTROL PIC X(06).
01 PRT-STATUS1 PIC X(02).
01 PRT-STATUS2 PIC X(04).
*
PROCEDURE DIVISION.
*
PERFORM 画面オープン.
INITIALIZE 住所録入力画面.
PERFORM NO LIMIT
PERFORM 画面出力
PERFORM 画面入力
EVALUATE DSP-ATTN
WHEN "PRT "
PERFORM 印刷オープン
INITIALIZE 住所録印刷帳票
PERFORM 印刷データ設定
PERFORM 印刷処理
PERFORM 印刷クローズ
WHEN "END "
CLOSE ディスプレイファイル
GO TO 終了処理
END-EVALUATE
END-PERFORM.
*
*============================================================
画面オープン.
OPEN I-O ディスプレイファイル.
IF DSP-STATUS2 NOT = "0000" THEN
PERFORM 終了処理
END-IF.
*============================================================
画面出力.
MOVE "ADDRDSP" TO DSP-FORMAT.
MOVE "@ALLF" TO DSP-GROUP.
MOVE " " TO DSP-MODE.
WRITE 住所録入力画面.
IF DSP-STATUS2 NOT = "0000" THEN
CLOSE ディスプレイファイル
GO TO 終了処理
END-IF.
*============================================================
画面入力.
MOVE "@ALLF" TO DSP-GROUP.
MOVE "NE" TO DSP-MODE.
READ ディスプレイファイル.
IF DSP-STATUS2 NOT = "0000" THEN
CLOSE ディスプレイファイル
GO TO 終了処理
END-IF.
*============================================================
印刷オープン.
OPEN OUTPUT プリンタファイル.
IF PRT-STATUS2 NOT = "0000" THEN
CLOSE ディスプレイファイル
GO TO 終了処理
END-IF.
*============================================================
印刷データ設定.
MOVE 名前 OF 住所録入力画面 TO 名前 OF 住所データ OF 住所録印刷帳票(1).
MOVE 住所 OF 住所録入力画面 TO 住所 OF 住所データ OF 住所録印刷帳票(1).
MOVE 電話番号 OF 住所録入力画面 TO 電話番号 OF 住所データ OF 住所録印刷帳票(1).
MOVE メール OF 住所録入力画面 TO メール OF 住所データ OF 住所録印刷帳票(1).
MOVE 生年月日 OF 住所録入力画面 TO 生年月日 OF 住所データ OF 住所録印刷帳票(1).
*============================================================
印刷処理.
MOVE "ADDRPRT" TO PRT-FORMAT.
MOVE "@ALLF" TO PRT-GROUP.
MOVE " " TO PRT-MODE.
WRITE 住所録印刷帳票.
IF PRT-STATUS2 NOT = "0000" THEN
CLOSE ディスプレイファイル
CLOSE プリンタファイル
GO TO 終了処理
END-IF.
*============================================================
印刷クローズ.
CLOSE プリンタファイル.
*============================================================
終了処理.
END PROGRAM ADDR.
*============================================================