# KIN02UPD 使用資源一覧 ## プログラム概要 - **プログラムID**: KIN02UPD - **プログラム名**: 休暇申請DB更新処理 - **処理概要**: WORK-LEAVEファイルの各レコードをDB2テーブルLEAVE_RECORDSに反映する。ステータスに応じて新規登録(INSERT)、変更(DELETE+INSERT)、取消(DELETE)を行う。 ## 使用ファイル | DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | |------|---------------|------|-------------|-----------|--------| | KIN01W01 | WORK-LEAVE | 順編成 | F (固定長) | 80B | KIN01REC | | KIN02W01 | ERROR-LOG | 順編成 | V (可変長) | 200B | KIN05REC | ## 使用COPY句 | COPY句 | 用途 | 使用箇所 | |--------|------|---------| | KIN01REC | レコード定義(R01入力ファイル) | FILE SECTION | | KIN05REC | エラーログレコード定義(W01出力) | FILE SECTION | | ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | | ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | | SQLCA | SQL通信領域 | WORKING-STORAGE | ## 使用サブプログラム | サブPGM | 役割 | CALL箇所 | |---------|------|---------| | SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | | SUB03END | ABEND処理 | 9999ABDSOR | ## 使用DB2テーブル | テーブル名 | 操作 | 備考 | |-----------|------|------| | LEAVE_RECORDS | INSERT, DELETE | APPLICATION_ID=0→INSERT, >0→DELETE+INSERT, STATUS='9'→DELETE | ## EXEC SQL一覧 | SQL種別 | 処理 | 実行条件 | 使用箇所 | |---------|------|---------|---------| | CONNECT | TO 'data/kin.db' | 常時 | 1000ITTSOR | | SELECT | COALESCE(MAX(APPLICATION_ID),0)+1 FROM LEAVE_RECORDS | 常時(初期処理時) | 1000ITTSOR | | INSERT | LEAVE_RECORDSへ追加(APPLICATION_ID含む) | STATUS='1' AND APPL-ID=0 | 2110INSERTSOR | | DELETE | APPLICATION_ID一致削除+INSERT | STATUS='1' AND APPL-ID>0 | 2120UPDATESOR | | INSERT | LEAVE_RECORDSへ追加(変更後、APPLICATION_ID含む) | STATUS='1' AND APPL-ID>0 | 2120UPDATESOR | | DELETE | APPLICATION_ID一致削除 | STATUS='9' | 2130DELETESOR | | COMMIT | WORK | 常時 | 3000STPSOR | | ROLLBACK | WORK | SQLエラー時 | 9100DBERRSOR | ## 処理フロー 1. 初期処理(開始メッセージ→DB接続→OPEN(R01/W01)→初回読込) 2. ホスト変数設定(R01→WS-*) 3. ロジック分岐(EVALUATE) - STATUS='1' AND APPL-ID=0 → INSERT - STATUS='1' AND APPL-ID>0 → DELETE + INSERT - STATUS='9' → DELETE - その他 → スキップ 4. SQLエラー時 → ROLLBACK + ERROR-LOG出力(W01) + エラーメッセージ + ABEND 5. 終了処理(COMMIT→CLOSE(R01/W01)→件数出力→終了メッセージ)