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

194 lines
9.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 | KYU07DIV |
| 3 | プログラム名 | 部門別分割出力処理 |
| 4 | PGMタイプ | メイン |
| 5 | PGMパターン | 50分割 |
| 6 | 機能概要 | JCL SORT済みSALARY-NETを部署コードに応じて50ファイルに分割出力する。 |
| 7 | | 常に1ファイルのみOPEN状態を保ち、部署コード切替時にファイルを開閉する。 |
| 8 | | SYSIN制御カードにより出力対象部署の絞り込みが可能(省略時は全50部署)。 |
※PGMタイプ:メイン、サブ
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
### 前提条件
| NO | 対象ファイル | 条件 |
|----|-------------|------|
| 1 | KYU04S01(SALARY-NET) | JCL SORTで部署コード(DEPT-CODE 50-51桁目)昇順ソート済みであること |
| 2 | SYSIN(制御カード) | 省略時は全50部署を出力対象とする |
### 使用ファイル一覧
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
| 1 | SALARY-NET | R01 | KYU07R01 | I | KYU04REC | F | | 200 | PS | JCL SORT済み |
| 2 | SYSIN | SYSIN | KYU07SYS | I | 自前(80B) | F | | 80 | PS | 制御カード |
| 3 | DEPT-OUT-01 | D01 | KYU07D01 | O | KYU04REC | F | | 200 | PS | |
| 4 | DEPT-OUT-02 | D02 | KYU07D02 | O | KYU04REC | F | | 200 | PS | |
| 5 | DEPT-OUT-03 | D03 | KYU07D03 | O | KYU04REC | F | | 200 | PS | |
| 6 | DEPT-OUT-04 | D04 | KYU07D04 | O | KYU04REC | F | | 200 | PS | |
| 7 | DEPT-OUT-05 | D05 | KYU07D05 | O | KYU04REC | F | | 200 | PS | |
| 8 | DEPT-OUT-06 | D06 | KYU07D06 | O | KYU04REC | F | | 200 | PS | |
| 9 | DEPT-OUT-07 | D07 | KYU07D07 | O | KYU04REC | F | | 200 | PS | |
| 10 | DEPT-OUT-08 | D08 | KYU07D08 | O | KYU04REC | F | | 200 | PS | |
| 11 | DEPT-OUT-09 | D09 | KYU07D09 | O | KYU04REC | F | | 200 | PS | |
| 12 | DEPT-OUT-10 | D10 | KYU07D10 | O | KYU04REC | F | | 200 | PS | |
| 13 | DEPT-OUT-11 | D11 | KYU07D11 | O | KYU04REC | F | | 200 | PS | |
| 14 | DEPT-OUT-12 | D12 | KYU07D12 | O | KYU04REC | F | | 200 | PS | |
| 15 | DEPT-OUT-13 | D13 | KYU07D13 | O | KYU04REC | F | | 200 | PS | |
| 16 | DEPT-OUT-14 | D14 | KYU07D14 | O | KYU04REC | F | | 200 | PS | |
| 17 | DEPT-OUT-15 | D15 | KYU07D15 | O | KYU04REC | F | | 200 | PS | |
| 18 | DEPT-OUT-16 | D16 | KYU07D16 | O | KYU04REC | F | | 200 | PS | |
| 19 | DEPT-OUT-17 | D17 | KYU07D17 | O | KYU04REC | F | | 200 | PS | |
| 20 | DEPT-OUT-18 | D18 | KYU07D18 | O | KYU04REC | F | | 200 | PS | |
| 21 | DEPT-OUT-19 | D19 | KYU07D19 | O | KYU04REC | F | | 200 | PS | |
| 22 | DEPT-OUT-20 | D20 | KYU07D20 | O | KYU04REC | F | | 200 | PS | |
| 23 | DEPT-OUT-21 | D21 | KYU07D21 | O | KYU04REC | F | | 200 | PS | |
| 24 | DEPT-OUT-22 | D22 | KYU07D22 | O | KYU04REC | F | | 200 | PS | |
| 25 | DEPT-OUT-23 | D23 | KYU07D23 | O | KYU04REC | F | | 200 | PS | |
| 26 | DEPT-OUT-24 | D24 | KYU07D24 | O | KYU04REC | F | | 200 | PS | |
| 27 | DEPT-OUT-25 | D25 | KYU07D25 | O | KYU04REC | F | | 200 | PS | |
| 28 | DEPT-OUT-26 | D26 | KYU07D26 | O | KYU04REC | F | | 200 | PS | |
| 29 | DEPT-OUT-27 | D27 | KYU07D27 | O | KYU04REC | F | | 200 | PS | |
| 30 | DEPT-OUT-28 | D28 | KYU07D28 | O | KYU04REC | F | | 200 | PS | |
| 31 | DEPT-OUT-29 | D29 | KYU07D29 | O | KYU04REC | F | | 200 | PS | |
| 32 | DEPT-OUT-30 | D30 | KYU07D30 | O | KYU04REC | F | | 200 | PS | |
| 33 | DEPT-OUT-31 | D31 | KYU07D31 | O | KYU04REC | F | | 200 | PS | |
| 34 | DEPT-OUT-32 | D32 | KYU07D32 | O | KYU04REC | F | | 200 | PS | |
| 35 | DEPT-OUT-33 | D33 | KYU07D33 | O | KYU04REC | F | | 200 | PS | |
| 36 | DEPT-OUT-34 | D34 | KYU07D34 | O | KYU04REC | F | | 200 | PS | |
| 37 | DEPT-OUT-35 | D35 | KYU07D35 | O | KYU04REC | F | | 200 | PS | |
| 38 | DEPT-OUT-36 | D36 | KYU07D36 | O | KYU04REC | F | | 200 | PS | |
| 39 | DEPT-OUT-37 | D37 | KYU07D37 | O | KYU04REC | F | | 200 | PS | |
| 40 | DEPT-OUT-38 | D38 | KYU07D38 | O | KYU04REC | F | | 200 | PS | |
| 41 | DEPT-OUT-39 | D39 | KYU07D39 | O | KYU04REC | F | | 200 | PS | |
| 42 | DEPT-OUT-40 | D40 | KYU07D40 | O | KYU04REC | F | | 200 | PS | |
| 43 | DEPT-OUT-41 | D41 | KYU07D41 | O | KYU04REC | F | | 200 | PS | |
| 44 | DEPT-OUT-42 | D42 | KYU07D42 | O | KYU04REC | F | | 200 | PS | |
| 45 | DEPT-OUT-43 | D43 | KYU07D43 | O | KYU04REC | F | | 200 | PS | |
| 46 | DEPT-OUT-44 | D44 | KYU07D44 | O | KYU04REC | F | | 200 | PS | |
| 47 | DEPT-OUT-45 | D45 | KYU07D45 | O | KYU04REC | F | | 200 | PS | |
| 48 | DEPT-OUT-46 | D46 | KYU07D46 | O | KYU04REC | F | | 200 | PS | |
| 49 | DEPT-OUT-47 | D47 | KYU07D47 | O | KYU04REC | F | | 200 | PS | |
| 50 | DEPT-OUT-48 | D48 | KYU07D48 | O | KYU04REC | F | | 200 | PS | |
| 51 | DEPT-OUT-49 | D49 | KYU07D49 | O | KYU04REC | F | | 200 | PS | |
| 52 | DEPT-OUT-50 | D50 | KYU07D50 | O | KYU04REC | F | | 200 | PS | |
| 53 | ERROR-LOG | W99 | KYU07W99 | O | KYU99REC | VB | | 200 | PS | |
### キー項目一覧
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|----|-----------|---------------------|-------------------------------------------|
| 1 | KYU04S01 | 部署コード(昇順) | 部署コード切替(分割キー) |
### 使用モジュール一覧
| 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.ワークエリアの初期化
WRKARA初期化、WRK-FIRST='1'設定
1-4.SYSIN読込(1100SYSINSOR
制御カードから対象部署一覧を取得する。
SYSINファイルOPEN→READ→CLOSE。
カードなし(AT END):全部署対象(WRK-ALL-DEPTS)
カードあり:"DEPT=01,02,05,10"形式をパースし、
WRK-TARGET-DEPTテーブルに格納。
1-5.入出力ファイルのOPEN
R01INNFIL(INPUT)、W99OUTFIL(OUTPUT)をOPEN
1-6.R01を読み込む。(1200R01INNSOR)(1回目)
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
2-1.R01の部署コードを取得(MOVE R01DEPT-CODE TO WRK-DEPT-CODE)
2-2.SYSIN対象部署フィルタ
WRK-FILTER-DEPTSの場合、SEARCHでWRK-TARGET-DEPTテーブルを検索。
該当なし→次レコード読込(1200R01INNSOR)してEXIT SECTION。
2-3.部署切替判定
2-3-1.WRK-FIRST-Yの場合(初回)
WRK-FIRSTを'0'に設定し、2100OPENSORを実行
2-3-2.WRK-PREV-DEPT ≠ WRK-DEPT-CODEの場合(部署切替)
2200CLOSESORで前部署ファイルをCLOSE WITH LOCK
2100OPENSORで新部署ファイルをOPEN
2-4.現部署コードをWRK-PREV-DEPTに保存
2-5.該当ファイルにWRITE2300WRITESOR
EVALUATE WRK-DEPT-CODEでD01〜D50の該当ファイルにWRITE
WHEN OTHERは無視
CUN-DEPT-OUTを+1
2-6.R01を読み込む。(1200R01INNSOR)(2件目以降)
3.終了処理(3000STPSOR
3-1.WRK-PREV-DEPT > SPACESの場合、2200CLOSESOR実行
3-2.入出力ファイルのクローズ
R01INNFIL、W99OUTFILをCLOSE
3-3.入出力件数出力メッセージ出力
【入力メッセージ編集】
メッセージ番号:6(入力件数メッセージ)
PARM1'KYU07R01'
PARM2CUN-R01INN
【出力メッセージ編集】
メッセージ番号:7(出力件数メッセージ)
PARM1'DEPT-OUT'
PARM2CUN-DEPT-OUT
【出力メッセージ編集】
メッセージ番号:7(出力件数メッセージ)
PARM1'KYU07W99'
PARM2CUN-W99OUT
3-4.終了メッセージ出力
【メッセージ編集】
メッセージ番号:2(終了メッセージ)
```
---
## 出力レコード定義
### 出力ファイル(D01〜D50/DEPT-OUT-01〜50
KYU04RECSALARY-NET形式)をそのまま出力する。
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | EMP-ID | R01同項目を設定 | |
| 2 | REC-TYPE | R01同項目を設定 | |
| 3 | EMP-NAME | R01同項目を設定 | |
| 4 | DEPT-CODE | R01同項目を設定 | |
| 5 | REGION-CODE | R01同項目を設定 | |
| 6 | CATEGORY-CODE | R01同項目を設定 | |
| 7 | GROSS-PAYMENT | R01同項目を設定 | |
| 8 | INCOME-TAX | R01同項目を設定 | |
| 9 | INSURANCE | R01同項目を設定 | |
| 10 | RESIDENT-TAX | R01同項目を設定 | |
| 11 | NET-PAYMENT | R01同項目を設定 | |
| 12 | TAXABLE-INCOME | R01同項目を設定 | |
| 13 | PAY-AMOUNT | R01同項目を設定 | |
| 14 | FILLER | R01同項目を設定 | |
### 出力ファイル(W99/ERROR-LOG
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | ERR-CATEGORY | 固定値'INVDEPT' | 無効部署コード時 |
| 2 | ERR-DETAIL | 'INVALID DEPT' | 部署コード範囲外 |