Files
cobol-tna-system/詳細設計書/詳細設計書_KYU08PRI.md
T
qiuqiuqiu 75475b3fa1 Add Subsystem C (KYU01-09): all 9 programs, design docs, resource lists, DDL, COPY, coverage stats
KYU programs for payroll calculation:
  KYU01CVT - CSV conversion
  KYU02REG - attendance registration
  KYU03AGG - aggregation
  KYU04CAL - salary calculation
  KYU05DED - deduction calculation
  KYU06UPD - DB update
  KYU07DIV - division/pay-slip
  KYU08PRI - print output
  KYU09MRG - merge output

Includes:
  - Source programs (9 .cbl)
  - Compiled executables (9 .exe)
  - Detailed design docs (9 + sign-off)
  - Basic design doc (subsystem C overview)
  - Resource lists (9)
  - DDL schema (schema_kyu.sql)
  - COPY book (KYU99REC.cpy)
  - Coverage statistics update
  - DB definition update (STATUS values)
  - Overall system design document
2026-07-09 08:09:59 +08:00

5.7 KiB
Raw Blame History

詳細設計書

基本情報

# 項目 内容
1 システム名 給与計算システム
2 プログラムID KYU08PRI
3 プログラム名 給与明細印刷処理
4 PGMタイプ メイン
5 PGMパターン レイアウト編集のみ(GETPUT
6 機能概要 JCL SORT済みSALARY-NETを給与明細書としてLINAGEページ制御で印刷出力する。
7 1社員1ページ、ヘッダ・明細行・フッタの構成でPAGE-COUNTER自動管理。
8 BLANK WHEN ZERO / JUSTIFIED RIGHTによる編集出力。

※PGMタイプ:メイン、サブ ※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新

前提条件

NO 対象ファイル 条件
1 KYU05S01(SALARY-NET) JCL SORTで社員番号(EMP-ID)昇順ソート済みであること

使用ファイル一覧

NO 使用ファイル/DB名 識別子 DD名 I/O COPY群 形式 ブロック レコード長 媒体 備考
1 SALARY-NET R01 KYU08R01 I KYU04REC F 200 PS JCL SORT済み
2 PAYSLIP W01 KYU08W01 O KYU05REC F 200 SYSOUT A LINAGE 66行
3 ERROR-LOG W02 KYU08W02 O KYU99REC VB 200 PS

キー項目一覧

NO ファイル名 ソート条件(キー項目) キー条件(マッチング/キーブレイク)
1 KYU05S01 社員番号(昇順) なし(全件印刷)

使用モジュール一覧

NO 機能 プログラムID 使用COPY名
1 運用日付取得SUB SUB01DAT ZANDATAC
2 メッセージ編集出力SUB SUB02MSG ZANMSGAC
3 ABEND処理SUB SUB03END ZANENDAC

処理詳細

1.初期処理(1000ITTSOR
  1-1.開始メッセージ出力
    【メッセージ編集】
    メッセージ番号:1(開始メッセージ)
  1-2.コンパイル日時出力
    【メッセージ編集】
    メッセージ番号:33(コンパイル日時)
    PARM1:コンパイル日時
    PARM2'COMPILED'
  1-3.ワークエリアの初期化
  1-4.運用日付取得SUB(SUB01DAT)により運用日を取得する。
    復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。
    【メッセージ編集】
    メッセージ番号:5(サブエラー)
    PARM1'SUB01DAT'
    PARM2:復帰コード
    【ABEND処理SUB】
    ABENDコード:999
  1-5.使用ファイルのオープン
    R01INNFIL(INPUT)、W01OUTFIL(OUTPUT)、W02OUTFIL(OUTPUT)をOPEN
    W01OUTFILはLINAGE IS 66 LINESで定義
    FOOTING AT 60 / TOP 6 / BOTTOM 6
  1-6.R01を読み込む。(1100R01INNSOR)(1回目)

2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
  2-1.ページカウンタ加算
    WRK-PAGE-COUNTERを+1
  2-2.ヘッダ行編集・出力
    【ヘッダ編集】
    タイトル行'========== 給与明細書 =========='を設定
    WRK-PAGE-COUNTERをPIC Z(03)9で編集
    WRITE W01OUTREC FROM HEADER-LINE
      BEFORE ADVANCING PAGE(改ページ)
  2-3.明細行編集・出力
    【明細編集】
    EMP-IDR01同項目をX(008)で設定
    EMP-NAMER01同項目をX(020) JUSTIFIED RIGHTで設定
    BASIC-SALARYR01-GROSS-PAYMENTをZ(08)9 BLANK WHEN ZEROで設定
    NET-PAYMENTR01-NET-PAYMENTをZ(08)9 BLANK WHEN ZEROで設定
    WRITE W01OUTREC FROM DETAIL-LINE
      BEFORE ADVANCING 1 LINE
      AT END-OF-PAGE
        WRITE W01OUTREC FROM FOOTER-LINE
          BEFORE ADVANCING PAGE
    CUN-W01OUTを+1
  2-4.フッタ出力
    【フッタ編集】
    '--- 明細終了 ---'を設定
    WRITE W01OUTREC FROM FOOTER-LINE
      BEFORE ADVANCING PAGE(改ページ=次社員)
  2-5.R01を読み込む。(1100R01INNSOR)(2件目以降)

3.終了処理(3000STPSOR
  3-1.入出力ファイルのクローズ
    R01INNFIL、W01OUTFIL、W02OUTFILをCLOSE
  3-2.入出力件数出力メッセージ出力
    【入力メッセージ編集】
    メッセージ番号:6(入力件数メッセージ)
    PARM1'KYU08R01'
    PARM2CUN-R01INN
    【出力メッセージ編集】
    メッセージ番号:7(出力件数メッセージ)
    PARM1'KYU08W01'
    PARM2CUN-W01OUT
    【出力メッセージ編集】
    メッセージ番号:7(出力件数メッセージ)
    PARM1'KYU08W02'
    PARM2CUN-W02OUT
  3-3.終了メッセージ出力
    【メッセージ編集】
    メッセージ番号:2(終了メッセージ)

出力レコード定義

出力ファイル1W01/PAYSLIP

No 項目名 設定元 備考
1 EMP-ID R01-EMP-IDを設定 X(008)
2 FILLER SPACE X(002)
3 EMP-NAME R01-EMP-NAMEを設定 X(020) JUSTIFIED RIGHT
4 FILLER SPACE X(002)
5 BASIC-SALARY R01-GROSS-PAYMENTを設定 Z(008)9 BLANK WHEN ZERO
6 FILLER SPACE X(002)
7 NET-PAYMENT R01-NET-PAYMENTを設定 Z(008)9 BLANK WHEN ZERO
8 FILLER SPACE X(002)
9 PAGE-TITLE ヘッダ編集 X(040)
10 FILLER SPACE X(106)

出力ファイル2W02/ERROR-LOG

No 項目名 設定元 備考
1 ERR-CATEGORY 該当エラー種別 X(008)
2 ERR-DETAIL STRINGで編集 エラー内容