ページの先頭行へ戻る
NetCOBOL V11.0 入門ガイド
FUJITSU Software

3.2 表示ファイルのプログラミング

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