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
This commit is contained in:
qiuqiuqiu
2026-07-09 08:09:59 +08:00
parent 02dd36e094
commit 75475b3fa1
43 changed files with 7212 additions and 41 deletions
@@ -0,0 +1,49 @@
# KYU01CVT 使用資源一覧
## プログラム概要
- **プログラムID**: KYU01CVT
- **プログラム名**: 社員マスタCSV→FB変換処理
- **処理概要**: CSV形式の社員マスタを固定長80Bに変換する。引用符内改行をINSPECT CONVERTINGで処理し、項目チェックはSUB04CHKで実施。
## 使用ファイル
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|------|---------------|------|-------------|-----------|--------|
| KYU01R01 | CSV-INPUT | 順編成 | V (可変長) | 500B | なし(自前定義) |
| KYU01W01 | EMP-RECORD | 順編成 | F (固定長) | 80B | KYU01REC |
| KYU01W02 | ERROR-LOG | 順編成 | V (可変長) | 200B | KYU99REC |
## 使用COPY句
| COPY句 | 用途 | 使用箇所 |
|--------|------|---------|
| KYU01REC | レコード定義(W01出力ファイル) | FILE SECTION |
| KYU99REC | エラーログレコード定義(W02出力ファイル) | FILE SECTION |
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
| ZANCHKAC | 項目チェックサブPGM連絡領域 | WORKING-STORAGE |
## 使用サブプログラム
| サブPGM | 役割 | CALL箇所 |
|---------|------|---------|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
| SUB03END | ABEND処理 | 9999ABDSOR |
| SUB04CHK | 社員番号/時給数値チェック | 2000MAJSOR |
## 使用DB2テーブル
なし(DB操作なし)
## 処理フロー
1. 初期処理(開始メッセージ→OPEN→初回読込)
2. コメント行(#)はスキップ
3. 引用符状態チェック(奇数個の"で状態反転)
- 引用符内 → 行蓄積→次行読込
- 引用符外 → INSPECT CONVERTING(改行→SPACE)→ CSV分解
4. CSV分解(UNSTRINGで9項目に分解)
5. 項目数≠9 → ERROR-LOG出力
6. 社員番号空チェック → ERROR-LOG出力
7. SUB04CHKEMP-ID数値チェック、HOURLY-RATE数値チェック)
8. EMP-RECORD編集→W01出力
9. 終了処理(CLOSE→件数出力→終了メッセージ)
@@ -0,0 +1,45 @@
# KYU02REG 使用資源一覧
## プログラム概要
- **プログラムID**: KYU02REG
- **プログラム名**: 社員マスタDB2登録処理
- **処理概要**: EMP-RECORDをDB2 EMP-MASTERにINSERT/UPSERTする。重複時(-803)はUPDATEに切替。
## 使用ファイル
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|------|---------------|------|-------------|-----------|--------|
| KYU02R02 | EMP-RECORD | 順編成 | F (固定長) | 80B | KYU01REC |
| KYU02W03 | ERROR-LOG | 順編成 | V (可変長) | 200B | KYU99REC |
## 使用COPY句
| COPY句 | 用途 | 使用箇所 |
|--------|------|---------|
| KYU01REC | レコード定義(R02入力ファイル) | FILE SECTION |
| KYU99REC | エラーログレコード定義(W03出力ファイル) | FILE SECTION |
| SQLCA | SQL通信領域 | WORKING-STORAGE |
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
## 使用サブプログラム
| サブPGM | 役割 | CALL箇所 |
|---------|------|---------|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
| SUB03END | ABEND処理 | 9999ABDSOR |
## 使用DB2テーブル
| テーブル名 | アクセス種別 | 用途 |
|-----------|-------------|------|
| EMP-MASTER | INSERT / UPDATE | 社員マスタ登録(INSERT試行→-803時UPDATE |
## 処理フロー
1. 初期処理(開始メッセージ→OPEN→DB接続→初回読込)
2. DB2ホスト変数にMOVE
3. INSERT試行
- SQLCODE=0 → 正常登録
- SQLCODE=-803 → UPDATEに切替
- その他SQLエラー → ERROR-LOG出力
4. 終了処理(CLOSE→件数出力→終了メッセージ)
@@ -0,0 +1,43 @@
# KYU03AGG 使用資源一覧
## プログラム概要
- **プログラムID**: KYU03AGG
- **プログラム名**: 欠勤集約処理
- **処理概要**: JCL SORT済み欠勤データを社員単位に集約する。同一社員内の欠勤時間・回数を集計。
## 使用ファイル
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|------|---------------|------|-------------|-----------|--------|
| KYU03R01 | ABSENCE-SUMMARY | 順編成 | F (固定長) | 80B | なし(自前定義) |
| KYU03W01 | ABSENCE-AGGREGATE | 順編成 | F (固定長) | 80B | KYU02REC |
| KYU03W02 | ERROR-LOG | 順編成 | V (可変長) | 200B | KYU99REC |
## 使用COPY句
| COPY句 | 用途 | 使用箇所 |
|--------|------|---------|
| KYU02REC | レコード定義(W01出力ファイル) | FILE SECTION |
| KYU99REC | エラーログレコード定義(W02出力ファイル) | FILE SECTION |
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
## 使用サブプログラム
| サブPGM | 役割 | CALL箇所 |
|---------|------|---------|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
| SUB03END | ABEND処理 | 9999ABDSOR |
## 使用DB2テーブル
なし(DB操作なし)
## 処理フロー
1. 初期処理(開始メッセージ→OPEN→初回読込)
2. キーブレイク集約処理
- 初回 → 前レコード保持
- 同一社員 → 欠勤時間/回数加算
- 異社員 → 前社員集約出力→前レコード更新
3. 最終社員の集約出力
4. 終了処理(CLOSE→件数出力→終了メッセージ)
@@ -0,0 +1,50 @@
# KYU04CAL 使用資源一覧
## プログラム概要
- **プログラムID**: KYU04CAL
- **プログラム名**: 給与計算処理
- **処理概要**: 欠勤集約 + EMP-MASTER + OVT-MONTHLYを参照し給与計算を実行する。勤怠区分×手当種別の複合分岐はEVALUATE ALSO。
## 使用ファイル
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|------|---------------|------|-------------|-----------|--------|
| KYU04R02 | ABSENCE-AGGREGATE | 順編成 | F (固定長) | 80B | KYU02REC |
| KYU04R03 | PAY-PARAM | 順編成 | F (固定長) | 80B | なし(自前定義) |
| KYU04W03 | SALARY-DETAIL | 順編成 | F (固定長) | 240B | KYU03REC |
| KYU04W04 | ERROR-LOG | 順編成 | V (可変長) | 200B | KYU99REC |
## 使用COPY句
| COPY句 | 用途 | 使用箇所 |
|--------|------|---------|
| KYU02REC | レコード定義(R02入力ファイル) | FILE SECTION |
| KYU03REC | レコード定義(W03出力ファイル) | FILE SECTION |
| KYU99REC | エラーログレコード定義(W04出力ファイル) | FILE SECTION |
| SQLCA | SQL通信領域 | WORKING-STORAGE |
| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
## 使用サブプログラム
| サブPGM | 役割 | CALL箇所 |
|---------|------|---------|
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
| SUB03END | ABEND処理 | 9999ABDSOR |
## 使用DB2テーブル
| テーブル名 | アクセス種別 | 用途 |
|-----------|-------------|------|
| EMP-MASTER | SELECT | 社員情報(氏名・部署・給与関連項目)参照 |
| OVT-MONTHLY | SELECT | 残業時間合計(SUM(OVT-HOURS))参照 |
## 処理フロー
1. 初期処理(開始メッセージ→運用日付取得→PAY-PARAM読込→OPEN→DB接続→初回読込)
2. DB2 EMP-MASTER参照(社員情報取得)
3. DB2 OVT-MONTHLY参照(残業時間合計取得)
4. 給与計算(欠勤控除額→残業手当→EVALUATE ALSO(勤怠×手当)→支給総額)
5. SALARY-DETAIL出力
6. 終了処理(CLOSE→件数出力→終了メッセージ)
@@ -0,0 +1,49 @@
# KYU05DED 使用資源一覧
## プログラム概要
- **プログラムID**: KYU05DED
- **プログラム名**: 控除計算処理
- **処理概要**: SALARY-DETAILを入力に、源泉所得税・社会保険料・住民税を計算しSALARY-NETを出力する。TAX-TABLEDB2 SELECT ... BETWEEN)とINSURANCE-TABLESEARCH ALL)を参照。
## 使用ファイル
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|------|---------------|------|-------------|-----------|--------|
| KYU05R01 | SALARY-DETAIL | 順編成 | F (固定長) | 240B | KYU03REC |
| KYU05W01 | SALARY-NET | 順編成 | F (固定長) | 200B | KYU04REC |
| KYU05W02 | ERROR-LOG | 順編成 | V (可変長) | 200B | KYU99REC |
## 使用COPY句
| COPY句 | 用途 | 使用箇所 |
|--------|------|---------|
| KYU03REC | レコード定義(R01入力ファイル) | FILE SECTION |
| KYU04REC | レコード定義(W01出力ファイル) | FILE SECTION |
| KYU99REC | エラーログレコード定義(W02出力ファイル) | FILE SECTION |
| SQLCA | SQL通信領域 | WORKING-STORAGE |
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
## 使用サブプログラム
| サブPGM | 役割 | CALL箇所 |
|---------|------|---------|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
| SUB03END | ABEND処理 | 1100INSLOADSOR / 9999ABDSOR |
## 使用DB2テーブル
| テーブル名 | アクセス種別 | 用途 |
|-----------|-------------|------|
| TAX-TABLE | SELECT | 課税所得に対する税率・控除額(BETWEEN検索) |
| INSURANCE-TABLE | SELECTDECLARE/FETCH | 社会保険料率取得(全件LOAD→SEARCH ALL |
## 処理フロー
1. 初期処理(開始メッセージ→DB接続→INSURANCE-TABLE全件LOAD→OPEN→初回読込)
2. 課税所得計算(基本控除差引)
3. DB2 TAX-TABLE参照(BETWEEN条件で税率・控除額取得)
4. 社会保険料計算(SEARCH ALL:所得範囲一致)
5. 住民税計算(定率計算)
6. 差引支給額計算
7. SALARY-NET出力
8. 終了処理(CLOSE→件数出力→終了メッセージ)
@@ -0,0 +1,45 @@
# KYU06UPD 使用資源一覧
## プログラム概要
- **プログラムID**: KYU06UPD
- **プログラム名**: 給与計算結果DB2更新処理
- **処理概要**: SALARY-NETをDB2 SALARY-RESULTSに登録する。重複時(-803)はUPDATEに切替。
## 使用ファイル
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|------|---------------|------|-------------|-----------|--------|
| KYU06R02 | SALARY-NET | 順編成 | F (固定長) | 200B | KYU04REC |
| KYU06W03 | ERROR-LOG | 順編成 | V (可変長) | 200B | KYU99REC |
## 使用COPY句
| COPY句 | 用途 | 使用箇所 |
|--------|------|---------|
| KYU04REC | レコード定義(R02入力ファイル) | FILE SECTION |
| KYU99REC | エラーログレコード定義(W03出力ファイル) | FILE SECTION |
| SQLCA | SQL通信領域 | WORKING-STORAGE |
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
## 使用サブプログラム
| サブPGM | 役割 | CALL箇所 |
|---------|------|---------|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
| SUB03END | ABEND処理 | 9999ABDSOR |
## 使用DB2テーブル
| テーブル名 | アクセス種別 | 用途 |
|-----------|-------------|------|
| SALARY-RESULTS | INSERT / UPDATE | 給与計算結果登録(INSERT試行→-803時UPDATE |
## 処理フロー
1. 初期処理(開始メッセージ→PARM取得→OPEN→DB接続→初回読込)
2. DB2ホスト変数にMOVE
3. INSERT試行
- SQLCODE=0 → 正常登録
- SQLCODE=-803 → UPDATEに切替
- その他SQLエラー → ERROR-LOG出力
4. 終了処理(CLOSE→件数出力→終了メッセージ)
@@ -0,0 +1,44 @@
# KYU07DIV 使用資源一覧
## プログラム概要
- **プログラムID**: KYU07DIV
- **プログラム名**: 部門別分割出力処理
- **処理概要**: JCL SORT済SALARY-NETを部署コードに応じて50ファイルに分割出力する。常に1ファイルのみOPEN。
## 使用ファイル
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|------|---------------|------|-------------|-----------|--------|
| KYU07R01 | SALARY-NETSORT済) | 順編成 | F (固定長) | 200B | KYU04REC |
| KYU07SYS | 制御カード(SYSIN | 順編成 | F (固定長) | 80B | なし(自前定義) |
| KYU07D01〜D50 | 部署別出力(50ファイル) | 順編成 | F (固定長) | 200B | なし(自前定義 PIC X(200) |
| KYU07W99 | ERROR-LOG | 順編成 | V (可変長) | 200B | KYU99REC |
## 使用COPY句
| COPY句 | 用途 | 使用箇所 |
|--------|------|---------|
| KYU04REC | レコード定義(R01入力ファイル) | FILE SECTION |
| KYU99REC | エラーログレコード定義(W99出力ファイル) | FILE SECTION |
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
## 使用サブプログラム
| サブPGM | 役割 | CALL箇所 |
|---------|------|---------|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
| SUB03END | ABEND処理 | 9999ABDSOR |
## 使用DB2テーブル
なし(DB操作なし)
## 処理フロー
1. 初期処理(開始メッセージ→SYSIN読込(対象部署)→OPEN→初回読込)
2. SYSINパース("DEPT=01,02,05,10"形式、複数部署指定可)
3. 主処理
- SYSIN対象部署フィルタ(SEARCH
- 部署切替検出 → 前ファイルCLOSE WITH LOCK→新ファイルOPEN
- EVALUATEで該当部署ファイルにWRITE
4. 終了処理(最終部署CLOSE→CLOSE→件数出力→終了メッセージ)
@@ -0,0 +1,45 @@
# KYU08PRI 使用資源一覧
## プログラム概要
- **プログラムID**: KYU08PRI
- **プログラム名**: 給与明細印刷処理
- **処理概要**: JCL SORT済みSALARY-NETを給与明細(LINAGE)として印刷出力する。1社員1ページ。
## 使用ファイル
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|------|---------------|------|-------------|-----------|--------|
| KYU08R01 | SALARY-NETSORT済) | 順編成 | F (固定長) | 200B | KYU04REC |
| KYU08W01 | PAYSLIP印刷(LINAGE | 順編成 | F (固定長) | 200B | KYU05REC |
| KYU08W02 | ERROR-LOG | 順編成 | V (可変長) | 200B | KYU99REC |
## 使用COPY句
| COPY句 | 用途 | 使用箇所 |
|--------|------|---------|
| KYU04REC | レコード定義(R01入力ファイル) | FILE SECTION |
| KYU05REC | レコード定義(W01印刷出力ファイル) | FILE SECTION |
| KYU99REC | エラーログレコード定義(W02出力ファイル) | FILE SECTION |
| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
## 使用サブプログラム
| サブPGM | 役割 | CALL箇所 |
|---------|------|---------|
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
| SUB03END | ABEND処理 | 9999ABDSOR |
## 使用DB2テーブル
なし(DB操作なし)
## 処理フロー
1. 初期処理(開始メッセージ→運用日付取得→OPEN→初回読込)
2. ヘッダ出力(BEFORE ADVANCING PAGE + ページ番号)
3. 明細行編集(社員番号・氏名・基本給・差引支給額)
4. 明細WRITEAT END-OF-PAGEでフッタ→改ページ)
5. フッタ出力(BEFORE ADVANCING PAGE
6. 終了処理(CLOSE→件数出力→終了メッセージ)
@@ -0,0 +1,49 @@
# KYU09MRG 使用資源一覧
## プログラム概要
- **プログラムID**: KYU09MRG
- **プログラム名**: 支給データ結合処理
- **処理概要**: SALARY-NETとBONUS-DATAをMERGE文で社員番号昇順に結合し、同一社員内の給与(TYPE=S)と賞与(TYPE=B)を統合する。
## 使用ファイル
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|------|---------------|------|-------------|-----------|--------|
| KYU09M99 | MERGE-FILE(作業) | 順編成 | - | 200B | なし(自前定義 SD |
| KYU09M01 | SALARY-NETS=給与) | 順編成 | F (固定長) | 200B | KYU04REC |
| KYU09M02 | BONUS-DATAB=賞与) | 順編成 | F (固定長) | 200B | KYU04REC |
| KYU09W01 | PAYMENT-DATA | 順編成 | F (固定長) | 200B | KYU06REC |
| KYU09W02 | ERROR-LOG | 順編成 | V (可変長) | 200B | KYU99REC |
## 使用COPY句
| COPY句 | 用途 | 使用箇所 |
|--------|------|---------|
| KYU04REC | レコード定義(M01/M02入力ファイル) | FILE SECTION |
| KYU06REC | レコード定義(W01出力ファイル) | FILE SECTION |
| KYU99REC | エラーログレコード定義(W02出力ファイル) | FILE SECTION |
| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
## 使用サブプログラム
| サブPGM | 役割 | CALL箇所 |
|---------|------|---------|
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
| SUB03END | ABEND処理 | 9999ABDSOR |
## 使用DB2テーブル
なし(DB操作なし)
## 処理フロー
1. 初期処理(開始メッセージ→運用日付取得→OPEN)
2. MERGE実行(ON ASCENDING KEY MERGE-EMP-ID, USING SALARY-FILE BONUS-FILE
3. OUTPUT PROCEDURE2000MRGOUTSOR
- RETURN MERGE-FILE で受取
- 同一社員内でTYPE=S(給与)とTYPE=B(賞与)を統合
- 給与+賞与=支給総額算定
- PAYMENT-DATA出力
4. 終了処理(CLOSE→件数出力→終了メッセージ)