repository restructure: move .git to production/, rename dirs (design→基本設計書, list→品質管理, docs→参考資料), add Subsystem A KIN01-03 files, update AGENTS.md and README.md, cleanup tmp/ tools/ bk/

This commit is contained in:
qiuqiuqiu
2026-06-27 01:09:40 +08:00
parent 6754df70cd
commit 3379941b44
22 changed files with 3325 additions and 57 deletions
+153
View File
@@ -0,0 +1,153 @@
# 詳細設計書
## 基本情報
| # | 項目 | 内容 |
|---|------|------|
| 1 | システム名 | 勤怠休暇管理システム |
| 2 | プログラムID | KIN01INP |
| 3 | プログラム名 | 休暇申請CSV取込・検証処理 |
| 4 | PGMタイプ | メイン |
| 5 | PGMパターン | 振り分け |
| 6 | 機能概要 | CSV形式の休暇申請ファイルを読み込み、休暇種別テーブル検索と項目チェックを行い、ステータスによってWORK-LEAVEまたはERROR-LOGへ振り分ける。 |
| 7 | | ステータス'1':有効申請としてWORK-LEAVEに出力(項目チェック実施) |
| 8 | | ステータス'9':取消申請としてWORK-LEAVEに出力(項目チェックなし、APPL-ID保持) |
| 9 | | その他・フィールド数異常・休暇種別異常:ERROR-LOGに出力 |
※PGMタイプ:メイン、サブ
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
### 前提条件
| NO | 対象ファイル | 条件 |
|----|-------------|------|
| 1 | KIN01R01(CSV) | ソート不要。CSV形式(カンマ区切り、8項目) |
### 使用ファイル一覧
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
| 1 | CSV-INPUT | R01 | KIN01R01 | I | 自前(80B) | F | | 80 | PS | CSV形式 |
| 2 | WORK-LEAVE | W01 | KIN01W01 | O | KIN01REC | FB | | 80 | PS | |
| 3 | ERROR-LOG | W02 | KIN01W02 | O | KIN05REC | VB | | 200 | PS | |
### キー項目一覧
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|----|-----------|---------------------|-------------------------------------------|
| 1 | CSV-INPUT | なし | なし |
### 使用モジュール一覧
| NO | 機能 | プログラムID | 使用COPY名 |
|----|------|-------------|-----------|
| 1 | 運用日付取得SUB | SUB01DAT | ZANDATAC |
| 2 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC |
| 3 | ABEND処理SUB | SUB03END | ZANENDAC |
| 4 | 項目チェックSUB | SUB04CHK | ZANCHKAC |
---
## 処理詳細
```
1.初期処理(1000ITTSOR
1-1.開始メッセージ出力
【メッセージ編集】
メッセージ番号:1(開始メッセージ)
1-2.コンパイル日時出力
【メッセージ編集】
メッセージ番号:33(コンパイル日時)
PARM1:コンパイル日時
PARM2'COMPILED'
1-3.ワークエリアの初期化
1-4.休暇種別テーブル設定(WRK-LEAVE-TYPE-TABLE)
WRK-LT-CODE(1)='01' (年休/年假)
WRK-LT-CODE(2)='02' (事假)
WRK-LT-CODE(3)='03' (因公特批假)
WRK-LT-CODE(4)='04' (病欠)
1-5.運用日付取得SUB(SUB01DAT)により運用日を取得する。
復帰コード≠ZEROの場合、メッセージを出力し、ABEND処理SUBを呼び出し異常終了する。
【メッセージ編集】
メッセージ番号:5(サブエラー)
PARM1'SUB01DAT'
PARM2:復帰コード
【ABEND処理SUB】
ABENDコード:999
1-6.使用ファイルのオープン(R01:入力、W01/W02:出力)
1-7.R01を読み込む。(1100R01INNSOR)(1回目)
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
2-1.CSVの分解(2010CSVSOR)
UNSTRINGでカンマ区切りのCSVを8項目に分解する。
(APPL-ID, EMP-ID, START-DATE, START-TIME, END-DATE, END-TIME, LEAVE-TYPE, STATUS)
2-2.休暇種別テーブル検索(2020LEAVSERSOR)
SEARCH(非ALL)でWRK-LEAVE-TYPE-TABLEを検索し、休暇種別の妥当性を検証する。
2-3.エラー判定
2-3-1.フィールド数≠8の場合
ERROR-LOGに出力する。(2050ERRORSOR)
エラー種別:'F'(FIELD COUNT ERROR)
2-3-2.休暇種別がテーブルに存在しない場合
ERROR-LOGに出力する。(2050ERRORSOR)
エラー種別:'L'(INVALID LEAVE TYPE)
2-3-3.ステータス'1'(有効)の場合
項目チェックを実施し、エラーがあればERROR-LOGに出力、なければWORK-LEAVEに出力する。(2030VALIDATESOR)
2-3-3-1.SUB04CHKで社員番号チェック(EMPID): WRK-CSV-EMP-IDをC01CHKDATに設定し、CALL 'SUB04CHK' EMPIDタイプで社員番号フォーマットの妥当性を検証する。エラーの場合はW02ERR-CATEGORY='01'でエラーログに出力し本レコードをスキップ。
2-3-3-2.開始日付チェック(SUB04CHK)。エラー→W02出力
2-3-3-3.開始時刻チェック(SUB04CHK)。エラー→W02出力
2-3-3-4.終了日付チェック(SUB04CHK)。エラー→W02出力
2-3-3-5.終了時刻チェック(SUB04CHK)。エラー→W02出力
2-3-3-6.複合条件チェック(AND+OR+3段ネスト)
開始日>0 AND 終了日>0 AND 開始時刻>0 の場合:
- 開始日>終了日 → WRK-DEMO-TYPE=10
- 開始日=終了日 AND 開始時刻>=終了時刻 → WRK-DEMO-TYPE=10
- 上記以外 → WRK-DEMO-TYPE=20
2-3-3-7.すべて通過→W01出力(APPL-ID=0, STATUS='1')
2-3-4.ステータス'9'(取消)の場合
WORK-LEAVEにそのまま出力する。(2040CANCELSOR)
APPL-ID=CSV値、STATUS='9'(項目チェックなし)
2-3-5.その他のステータスの場合
ERROR-LOGに出力する。(2050ERRORSOR)
エラー種別:'S'(INVALID STATUS)
2-4.R01を読み込む。(1100R01INNSOR)(2件目以降)
3.終了処理(3000STPSOR
3-1.入出力ファイルのクローズ
3-2.入出力件数出力メッセージ出力
【入力メッセージ編集】
メッセージ番号:6(入力件数メッセージ)
PARM1'KIN01R01'
PARM2:当該入力ファイルの件数
【出力メッセージ編集】
メッセージ番号:7(出力件数メッセージ)
PARM1'KIN01W01'、'KIN01W02'
PARM2:当該出力ファイルの件数
3-3.終了メッセージ出力
【メッセージ編集】
メッセージ番号:2(終了メッセージ)
```
---
## 出力レコード定義
### 出力ファイル1W01/WORK-LEAVE KIN01REC 80B FB
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | APPL-ID | WRK-CSV-APPL-ID | 有効時=0、取消時=CSV値 |
| 2 | EMP-ID | WRK-CSV-EMP-ID | |
| 3 | LEAVE-TYPE | WRK-CSV-LEAVE-TYPE | 01/02/03/04 |
| 4 | START-DATE | WRK-CSV-START-DATE | YYYYMMDD |
| 5 | START-TIME | WRK-CSV-START-TIME | HHMM |
| 6 | END-DATE | WRK-CSV-END-DATE | YYYYMMDD |
| 7 | END-TIME | WRK-CSV-END-TIME | HHMM |
| 8 | STATUS | WRK-CSV-STATUS | '1'(有効)または'9'(取消) |
| 9 | FILLER | SPACE | 36B |
### 出力ファイル2W02/ERROR-LOG KIN05REC 200B VB
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | ERR-CATEGORY | '01'固定 | |
| 2 | ERR-DETAIL | STRING編集 | エラー内容(198B) |