COBOL入門 Mission5

処 理 内 容 PROGRAM-ID 難易度 言語
集計印刷プログラム PRN010 1 COBOL
1:処理図
2:処理概要

社員マスタを読んで一覧表を印刷する
印刷する項目
 社員コード 部コード 課コード 氏名
 生年月日  性別  採用年月
 支給額 = 基本給 + 職務 + 超謹 + 扶養
 控除額 = 控除額
 支給額 = 支給額 ・ 控除額 (以上横計)
 各金額計            (縦計)

印刷条件
 3行目    大見出しと頁数を印刷
 6行目    小見出しを印刷
 8〜46行目 明細を印刷 (20件)
        (明細は1行とびに印刷する)
最終データの次に1行あけて各金額計を印刷



3:ファイル名称
I-O
外部ファイル名 編成 KP/KL RL/BF access
(1)社員マスタ in C:\dat\mas30.dat seq  /  71/1
(2)printer out   seq  /  / 
4:その他

★頁を送る(改頁命令)
move space to 出力領域
write 出力領域 after page (「page」は予約語です)
********** ( 集計印刷・横計・縦計 ) **********
 IDENTIFICATION             DIVISION.
 PROGRAM-ID.                PRN010.
*
 ENVIRONMENT                DIVISION.
 INPUT-OUTPUT               SECTION.
 FILE-CONTROL.
     SELECT  F1  ASSIGN  TO  "C:\DAT\MAS30.DAT"  STATUS  FST
                            ACCESS  MODE  IS  SEQUENTIAL.
     SELECT  F2  ASSIGN  TO  PRINTER.
*
 DATA                       DIVISION.
 FILE                       SECTION.
 FD  F1.
 01  F1R.
     03                     PIC X(01).
     03  F1SCD              PIC X(04).
     03  F1BCD              PIC X(01).
     03  F1KCD              PIC X(02).
     03  F1NAM              PIC X(15).
     03  F1UMA              PIC X(07).
     03  F1SEI              PIC X(01).
     03  F1SAI              PIC X(05).
     03  F1-KIN             PIC 9(07) OCCURS 5.

 FD  F2.
 01  F2R                    PIC X(90).
*
 WORKING-STORAGE            SECTION.
 01  FST                    PIC X(02).

 01  COUNT-AREA VALUE ZERO.
     03  LCNT               PIC 9(02).
     03  PCNT               PIC 9(02).
     03  I                  PIC 9(01).
*    ***** 明細編集領域 *****
 01  W1R.
     03  W1SCD              PIC B(03)X(04).
     03  W1BCD              PIC B(01)X(01).
     03  W1KCD              PIC B(01)X(02).
     03  W1NAM              PIC B(01)X(15).
     03  W1UMA              PIC B(01)X(07).
     03  W1SEI              PIC B(01)X(01).
     03  W1SAI              PIC B(01)X(05).
     03  W1KIN              PIC \\\\,\\\,\\9 OCCURS 3.

*    ***** 金額累計領域 *****
 01  K1R                    VALUE ZERO.
     03  WKSIK              PIC 9(08).
     03  WKSIH              PIC 9(08).
     03  RKGAK              PIC 9(08) OCCURS 3.

*    ***** 見出1領域 *****
 01  MIDA1.
     03  PIC X(35) VALUE "                      ***  シャイン".
     03  PIC X(35) VALUE "マスターイチランヒョウ  ***        ".
     03  PIC X(08) VALUE " PAGE - ".
     03  P-PAGE    PIC 99.

*    ***** 見出2領域 *****
 01  MIDA2.
     03  PIC X(37) VALUE "  コード  ブ  カ   シメイ  ネンツキ  ".
     03  PIC X(37) VALUE "ヒ サイヨウ シキュウガク コウジョガク".
     03  PIC X(13) VALUE " シハライガク".
 PROCEDURE                  DIVISION.
**********  ( CONTROL - MODULE )  ********
     OPEN  INPUT  F1  OUTPUT  F2
     PERFORM  MI-RTN  THRU  MI-EX
     PERFORM  UNTIL  FST  NOT  =  "00"
        READ  F1
             END       CONTINUE
             NOT  END  ADD  1  TO  LCNT
                       IF  LCNT  >  20
                           THEN  PERFORM  KP-RTN  THRU  KP-EX
                                 PERFORM  MI-RTN  THRU  MI-EX
                                 MOVE  1  TO   LCNT
                           ELSE  CONTINUE
                       END-IF
                       PERFORM   ME-RTN  THRU  ME-EX
        END-READ
     END-PERFORM
     PERFORM  GK-RTN  THRU  GK-EX
     PERFORM  KP-RTN  THRU  KP-EX
     CLOSE  F1 F2
     STOP  RUN.

**********  (  PROCESS - MODULE )  ********************
***** 明細処理 *****
 ME-RTN.
*    ***** 支払額(横計)の計算 *****
     COMPUTE WKSIK = F1KIN(1) + F1KIN(2) + F1KIN(3) + F1KIN(4)
     COMPUTE WKSIH = WKSIK - F1KIN(5)
     ***** 明細の編集・印刷 *****
     MOVE  F1SCD  TO  W1SCD   MOVE  F1BCD  TO  W1BCD
     MOVE  F1KCD  TO  W1KCD   MOVE  F1NAM  TO  W1NAM
     MOVE  F1UMA  TO  W1UMA   MOVE  F1SEI  TO  W1SEI
     MOVE  F1SAI  TO  W1SAI
     MOVE  WKSIK  TO  W1KIN(1)
     MOVE  F1KIN(5)  TO  W1KIN(2)
     MOVE  WKSIH  TO  W1KIN(3)
     WRITE  F2R  FROM  W1R  AFTER  2

*    ***** 累計金額(縦計)の加算 *****
     ADD  WKSIK  TO  RKGAK(1)   ADD  F1KIN(5)  TO  RKGAK(2)
     ADD  WKSIH  TO  RKGAK(3)

 ME-EX. EXIT.
***** 改頁処理 *****
 KP-RTN.  MOVE  SPACE  TO  F2R  WRITE  F2R  AFTER  PAGE
 KP-EX.
***** 見出処理 *****
 MI-RTN.
     ADD  1  TO  PCNT  MOVE  PCNT  TO  P-PAGE
     WRITE  F2R  FROM  MIDA1  AFTER  2
     WRITE  F2R  FROM  MIDA2  AFTER  3
 MI-EX. EXIT.

***** ( 合計処理 ) *****
 GK-RTN.
     MOVE  SPACE  TO  W1R
     PERFORM VARYING I FROM 1 BY 1 UNTIL I > 3
          MOVE  WRGK(I)  TO  W1KIN(I)
     END-PERFORM
     WRITE  F2R  FROM  W1R  AFTER 2
 GK-EX. EXIT.

<< Back    Index    Next >>   < Top >