Files
cobol-tna-system/詳細設計書/詳細設計書_KYU03AGG.md
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

140 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 詳細設計書
## 基本情報
| # | 項目 | 内容 |
|---|------|------|
| 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で編集 | エラー内容 |