Files
cobol-tna-system/詳細設計書/詳細設計書_KYU03AGG.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.3 KiB
Raw Blame History

詳細設計書

基本情報

# 項目 内容
1 システム名 給与計算システム
2 プログラムID KYU03AGG
3 プログラム名 欠勤集約処理
4 PGMタイプ メイン
5 PGMパターン キーブレイク(集約)
6 機能概要 JCL SORT済み欠勤データ(社員番号昇順)を読み込み、同一社員内の欠勤時間・回数を集約する。
7 社員単位に1件の集約レコードをABSENCE-AGGREGATEに出力する。
8 エラー時はERROR-LOGに出力する。

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

前提条件

NO 対象ファイル 条件
1 KYU02S01(ABSENCE-SUMMARY) JCL SORTにより社員番号(1-8桁)昇順に整列済みであること

使用ファイル一覧

NO 使用ファイル/DB名 識別子 DD名 I/O COPY群 形式 ブロック レコード長 媒体 備考
1 KYU02S01 R01 KYU03R01 I 自前(80B) FB 80 PS JCL SORT済み
2 ABSENCE-AGGREGATE W01 KYU03W01 O KYU02REC FB 80 PS 社員単位1件
3 ERROR-LOG W02 KYU03W02 O KYU99REC VB 200 PS

キー項目一覧

NO ファイル名 ソート条件(キー項目) キー条件(マッチング/キーブレイク)
1 KYU02S01 社員番号(1-8桁CH昇順) 社員番号による集約キーブレイク

使用モジュール一覧

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

処理詳細

1.初期処理(1000ITTSOR
  1-1.開始メッセージ出力
    【メッセージ編集】
    メッセージ番号:1(開始メッセージ)
  1-2.コンパイル日時出力
    【メッセージ編集】
    メッセージ番号:33(コンパイル日時)
    PARM1:コンパイル日時
    PARM2'COMPILED'
  1-3.ワークエリアの初期化
    INITIALIZE WRKARA
  1-4.使用ファイルのオープン
    OPEN INPUT R01INNFIL
    OPEN OUTPUT W01OUTFIL W02OUTFIL
  1-5.R01を読み込む。(1100R01INNSOR)(1回目)

2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
  2-1.キーブレイク判定
    2-1-1.前社員キー設定済み(WRK-PREV-Y)の場合
      2-1-1-1.WRK-PREV-EMP-ID = WRK-EMP-ID(同一社員)
        ADD 1 TO WRK-ABSENT-COUNT
        ADD WRK-ABSENT-HOURS TO WRK-TOTAL-HOURS
      2-1-1-2.異なる社員
        前社員の集約レコード出力(2100WRITOUTSOR
        WRK-PREV-EMP-ID ← WRK-EMP-ID
        INITIALIZE WRK-TOTAL-HOURS WRK-ABSENT-COUNT
            REPLACING NUMERIC DATA BY ZERO
        MOVE 1 TO WRK-ABSENT-COUNT
        MOVE WRK-ABSENT-HOURS TO WRK-TOTAL-HOURS
    2-1-2.初回(WRK-PREV-Y未設定)
      WRK-PREV-EMP-ID ← WRK-EMP-ID
      WRK-PREV-Y ← TRUE
      MOVE 1 TO WRK-ABSENT-COUNT
      MOVE WRK-ABSENT-HOURS TO WRK-TOTAL-HOURS
  2-2.R01を読み込む(1100R01INNSOR)(2件目以降)

3.終了処理(3000STPSOR
  3-1.最終社員の集約レコード出力
    IF WRK-PREV-Y → PERFORM 2100WRITOUTSOR
  3-2.入出力ファイルのクローズ
  3-3.入出力件数出力メッセージ出力
    【入力メッセージ編集】
    メッセージ番号:6(入力件数メッセージ)
    PARM1'KYU03R01'
    PARM2CUN-R01INN
    【出力メッセージ編集】
    メッセージ番号:7(出力件数メッセージ)
    PARM1'KYU03W01'
    PARM2CUN-W01OUT
    【出力メッセージ編集】
    メッセージ番号:7(出力件数メッセージ)
    PARM1'KYU03W02'
    PARM2CUN-W02OUT
  3-4.終了メッセージ出力
    【メッセージ編集】
    メッセージ番号:2(終了メッセージ)

補足:集約ロジック詳細
  WRK-PREV-EMP-ID:前社員キー保持変数
  WRK-TOTAL-HOURS:同一社員内の欠勤時間合計
  WRK-ABSENT-COUNT:同一社員内の欠勤回数
  初回設定後、同一社員の間は加算を継続し、異社員出現時に前社員の集約結果を出力する。
  全READ終了後、最終社員の出力を3000STPSORで実施する。

出力レコード定義

出力ファイル1W01/ABSENCE-AGGREGATE

COPY書式:KYU02REC80B FB

No 項目名 設定元 備考
1 EMP-ID WRK-PREV-EMP-ID 社員番号
2 YEAR-MONTH WRK-YEAR-MONTH 対象年月(YYYYMM
3 TOTAL-HOURS WRK-TOTAL-HOURS 欠勤時間合計
4 ABSENT-COUNT WRK-ABSENT-COUNT 欠勤回数
5 FILLER SPACE固定

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

COPY書式:KYU99RECVB 200B

No 項目名 設定元 備考
1 ERR-CATEGORY 区分固定値 エラー区分
2 ERR-DETAIL STRINGで編集 エラー内容