156 lines
5.6 KiB
Markdown
156 lines
5.6 KiB
Markdown
# 詳細設計書
|
||
|
||
## 基本情報
|
||
|
||
| # | 項目 | 内容 |
|
||
|---|------|------|
|
||
| 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'
|
||
PARM2:SQLCODE
|
||
PARM3:WS-APPL-ID
|
||
4-4.ABEND処理SUB呼出(9999ABDSOR)
|
||
ABENDコード:999
|
||
```
|
||
|
||
---
|
||
|
||
## 出力レコード定義
|
||
|
||
### 出力ファイル1(W01/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テーブルに直接反映される。
|