Files
cobol-tna-system/詳細設計書/詳細設計書_KIN02UPD.md

156 lines
5.6 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 | 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テーブルに直接反映される。