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

157 lines
5.9 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 | KYU01CVT |
| 3 | プログラム名 | 社員マスタCSV→FB変換処理 |
| 4 | PGMタイプ | メイン |
| 5 | PGMパターン | CSV→FB変換(改行あり) |
| 6 | 機能概要 | CSV形式の社員マスタを読み込み、固定長80Bに変換する。 |
| 7 | | 引用符内改行をINSPECT CONVERTINGで処理。 |
| 8 | | 項目チェックはSUB04CHKで実施。 |
| 9 | | 正常:EMP-RECORDW01)出力/異常:ERROR-LOGW02)出力 |
※PGMタイプ:メイン、サブ
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
### 前提条件
| NO | 対象ファイル | 条件 |
|----|-------------|------|
| 1 | EMP-MASTER.CSV | ソート不要。CSV形式(カンマ区切り、引用符内改行あり)。コメント行(先頭#)読み飛ばし |
### 使用ファイル一覧
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
| 1 | EMP-MASTER.CSV | R01 | KYU01R01 | I | 自前(500B) | V | | 500 | PS | CSV形式 |
| 2 | EMP-RECORD | W01 | KYU01W01 | O | KYU01REC | FB | | 80 | PS | |
| 3 | ERROR-LOG | W02 | KYU01W02 | O | KYU99REC | VB | | 200 | PS | |
### キー項目一覧
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|----|-----------|---------------------|-------------------------------------------|
| 1 | EMP-MASTER.CSV | なし | なし |
### 使用モジュール一覧
| NO | 機能 | プログラムID | 使用COPY名 |
|----|------|-------------|-----------|
| 1 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC |
| 2 | ABEND処理SUB | SUB03END | ZANENDAC |
| 3 | 項目チェックSUB | SUB04CHK | ZANCHKAC |
---
## 処理詳細
```
1.初期処理(1000ITTSOR
1-1.開始メッセージ出力
【メッセージ編集】
メッセージ番号:1(開始メッセージ)
1-2.コンパイル日時出力
【メッセージ編集】
メッセージ番号:33(コンパイル日時)
PARM1:コンパイル日時
PARM2'COMPILED'
1-3.ワークエリアの初期化
INITIALIZE WRKARA
MOVE SPACE TO WRK-CSV-ACCUM
MOVE ZERO TO WRK-ACCUM-LEN
1-4.使用ファイルのオープン
OPEN INPUT R01INNFIL
OPEN OUTPUT W01OUTFIL W02OUTFIL
1-6.R01を読み込む。(1100R01INNSOR)(1回目)
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
2-1.コメント行(先頭#)はスキップ(2000MAJSOR内インライン)
WRK-CSV-LINE(1:1) = '#' の場合、次行READしてEXIT SECTION
2-2.引用符内改行処理(2000MAJSOR内インライン)
2-2-1.WRK-IN-QUOTEフラグを追跡し、引用符内の改行を連結用ワーク領域(WRK-CSV-ACCUM)に蓄積
2-2-2.引用符内奇数個の"で状態反転(WRK-QUOTE-ACTIVE / WRK-QUOTE-INACTIVE
2-2-3.完全な1レコード分が揃ったら、INSPECT CONVERTING X"0D"/X"0A" BY SPACEで改行→スペース変換
2-3.CSV分解(2100CSVUNSOR
UNSTRING DELIMITED BY ',' INTO 各フィールド COUNT IN WS-FIELD-COUNT
項目数≠9の場合はERROR-LOG出力
2-4.社員番号空チェック
INSPECT WRK-CSV-EMP-ID TALLYING FOR LEADING SPACES
全桁SPACEの場合はERROR-LOG出力
2-5.項目チェック(SUB04CHK
2-5-1.社員番号(EMPID)数値妥当性チェック
2-5-2.時給(NUM)数値妥当性チェック
エラー時はERROR-LOG出力
2-6.社員名英字チェック(IF NOT ALPHABETIC、参考判定)
2-7.W01OUTREC編集
MOVE CSV各フィールド→W01OUTREC該当項目
2-8.W01出力(WRITE W01OUTREC
CUN-W01OUT加算
2-9.R01を読み込む(1100R01INNSOR)(2件目以降)
3.終了処理(3000STPSOR
3-1.入出力ファイルのクローズ
3-2.入出力件数出力メッセージ出力
【入力メッセージ編集】
メッセージ番号:6(入力件数メッセージ)
PARM1'KYU01R01'
PARM2CUN-R01INN
【出力メッセージ編集】
メッセージ番号:7(出力件数メッセージ)
PARM1'KYU01W01'
PARM2CUN-W01OUT
【出力メッセージ編集】
メッセージ番号:7(出力件数メッセージ)
PARM1'KYU01W02'
PARM2CUN-W02OUT
3-3.終了メッセージ出力
【メッセージ編集】
メッセージ番号:2(終了メッセージ)
```
### DECLARATIVES(ファイルエラー処理)
```
DECLARATIVES.
USE AFTER ERROR PROCEDURE ON R01INNFIL.
PERFORM 9999ABDSOR.
USE AFTER ERROR PROCEDURE ON W01OUTFIL.
PERFORM 9999ABDSOR.
USE AFTER ERROR PROCEDURE ON W02OUTFIL.
PERFORM 9999ABDSOR.
END DECLARATIVES.
```
---
## 出力レコード定義
### 出力ファイル1W01/EMP-RECORD
COPY書式:KYU01REC80B FB
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | EMP-ID | CSV同項目を設定 | |
| 2 | EMP-NAME | CSV同項目を設定 | |
| 3 | DEPT-CODE | CSV同項目を設定 | |
| 4 | REGION-CODE | CSV同項目を設定 | |
| 5 | CATEGORY-CODE | CSV同項目を設定 | |
| 6 | BASE-SALARY | CSV同項目を設定 | |
| 7 | HOURLY-RATE | CSV同項目を設定 | |
| 8 | DEPENDENT-COUNT | CSV同項目を設定 | |
| 9 | STATUS | CSV同項目を設定 | |
| 10 | FILLER | SPACE固定 | |
### 出力ファイル2W02/ERROR-LOG
COPY書式:KYU99RECVB 200B
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | ERR-CATEGORY | 'CSV-ERR'または'EMPID-ERR'で固定 | エラー区分 |
| 2 | ERR-DETAIL | STRINGで編集 | エラー内容(CSV行の先頭80B等) |