表示ファイル機能を使って画面入出力を行うときのプログラム記述について、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. *============================================================