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
+155
View File
@@ -0,0 +1,155 @@
# 詳細設計書
## 基本情報
| # | 項目 | 内容 |
|---|------|------|
| 1 | システム名 | 勤怠休暇管理システム |
| 2 | プログラムID | KIN02UPD |
| 3 | プログラム名 | 休暇申請DB更新処理 |
| 4 | PGMタイプ | メイン |
| 5 | PGMパターン | DB更新 |
| 6 | 機能概要 | WORK-LEAVEファイルの各レコードをDB2テーブルLEAVE_RECORDSに反映する。 |
| 7 | | ステータスによって新規登録(INSERT)、変更(DELETE+INSERT)、取消(DELETE)を行う。 |
※PGMタイプ:メイン、サブ
※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新
### 前提条件
| NO | 対象ファイル | 条件 |
|----|-------------|------|
| 1 | KIN01W01 | KIN01INPの出力順に従う。ソート不要。 |
### 使用ファイル一覧
| NO | 使用ファイル/DB名 | 識別子 | DD名 | I/O | COPY群 | 形式 | ブロック | レコード長 | 媒体 | 備考 |
|----|------------------|--------|------|-----|--------|------|---------|-----------|------|------|
| 1 | WORK-LEAVE | R01 | KIN01W01 | I | KIN01REC | FB | | 80 | PS | |
| 2 | ERROR-LOG | W01 | KIN02W01 | O | KIN05REC | VB | | 200 | PS | DBエラー時出力 |
| 3 | LEAVE_RECORDS | DB | — | I/U/D | — | — | — | — | DB | SQLite |
### キー項目一覧
| NO | ファイル名 | ソート条件(キー項目) | キー条件(マッチング/キーブレイク) |
|----|-----------|---------------------|-------------------------------------------|
| 1 | WORK-LEAVE | なし | なし |
### 使用モジュール一覧
| 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.ワークエリアの初期化
1-4.DB接続
EXEC SQL CONNECT TO 'data/kin.db'
1-5.R01ファイルOPEN(入力)+ W01ファイルOPEN(出力)
1-6.R01を初回読込(1100R01INNSOR)
2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
2-1.レコード処理(2100PROCSOR)
2-1-1.R01各項目をホスト変数(WS-*)にMOVEする。
2-1-2.ロジック分岐判定(EVALUATE)
2-1-2-1.STATUS='1' AND APPL-ID=0(新規)の場合
INSERT処理(2110INSERTSOR)
【SQL】
INSERT INTO LEAVE_RECORDS
(EMP_ID, LEAVE_TYPE, START_DATE, START_TIME,
END_DATE, END_TIME, STATUS)
VALUES
(:WS-EMP-ID, :WS-LEAVE-TYPE,
:WS-START-DATE, :WS-START-TIME,
:WS-END-DATE, :WS-END-TIME,
:WS-STATUS)
SQLCODE≠0の場合、DBエラー処理(9100DBERRSOR)を実行する。
CUN-DBXINSを+1する。
2-1-2-2.STATUS='1' AND APPL-ID>0(変更)の場合
UPDATE処理(2120UPDATESOR)
【SQL】
DELETE FROM LEAVE_RECORDS
WHERE APPLICATION_ID = :WS-APPL-ID
INSERT INTO LEAVE_RECORDS
(EMP_ID, LEAVE_TYPE, START_DATE, START_TIME,
END_DATE, END_TIME, STATUS)
VALUES
(:WS-EMP-ID, :WS-LEAVE-TYPE,
:WS-START-DATE, :WS-START-TIME,
:WS-END-DATE, :WS-END-TIME,
:WS-STATUS)
各SQLでSQLCODE≠0の場合、DBエラー処理(9100DBERRSOR)を実行する。
CUN-DBXUPDを+1する。
2-1-2-3.STATUS='9'(取消)の場合
DELETE処理(2130DELETESOR)
【SQL】
DELETE FROM LEAVE_RECORDS
WHERE APPLICATION_ID = :WS-APPL-ID
SQLCODE≠0の場合、DBエラー処理(9100DBERRSOR)を実行する。
CUN-DBXDELを+1する。
2-1-2-4.その他
何も処理しない(CONTINUE)
2-2.次レコード読込(1100R01INNSOR)(2件目以降)
3.終了処理(3000STPSOR
3-1.COMMIT
EXEC SQL COMMIT WORK
3-2.入出力ファイルのクローズ
3-3.件数メッセージ出力
【メッセージ編集】
メッセージ番号:6(入力件数)
PARM1'KIN01W01'
PARM2:入力件数
PARM1'INS'、'UPD'、'DEL'
PARM2:各処理件数
3-4.終了メッセージ出力
【メッセージ編集】
メッセージ番号:2(終了メッセージ)
4.DBエラー処理(9100DBERRSOR
4-1.ROLLBACK
EXEC SQL ROLLBACK WORK
4-2.ERROR-LOG出力(W01OUTFIL
【MOVE → INITIALIZE & WRITE】
MOVE SQLCODE TO WRK-SQLCODE-DISP
W01ERR-CATEGORY = '01'(固定)
W01ERR-DETAIL = 'KIN02UPD SQLCODE=' + WRK-SQLCODE-DISP + ' APPL-ID=' + WS-APPL-ID
CUN-W01OUTを+1する。
4-3.エラーメッセージ出力
【メッセージ編集】
メッセージ番号:5(サブエラー)
PARM1'KIN02UPD SQL ERROR'
PARM2SQLCODE
PARM3WS-APPL-ID
4-4.ABEND処理SUB呼出(9999ABDSOR)
ABENDコード:999
```
---
## 出力レコード定義
### 出力ファイル1W01/ERROR-LOG
| No | 項目名 | 設定元 | 備考 |
|----|--------|--------|------|
| 1 | ERR-CATEGORY | 01で固定 | DBエラー |
| 2 | ERR-DETAIL | STRINGで編集 | KIN02UPD SQLCODE= + WRK-SQLCODE-DISP + APPL-ID= + WS-APPL-ID |
### DB更新結果
LEAVE_RECORDSテーブルに直接反映される。