# ZAN06UPD 使用資源一覧 ## プログラム概要 - **プログラムID**: ZAN06UPD - **プログラム名**: 残業統計DB更新処理 - **処理概要**: OVT-SUMMARYの各レコードをDBにINSERT/UPSERTし、OVT-DBCLEANの各レコードについて該当申請を取消状態に更新する。DB2テーブル操作を含む全サブシステムB唯一のDB更新プログラム。 ## 使用ファイル | DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | |------|---------------|------|-------------|-----------|--------| | ZAN06R01 | OVT-SUMMARY | 順編成 | F (固定長) | 80B | ZAN03REC | | ZAN06R02 | OVT-DBCLEAN | 順編成 | F (固定長) | 80B | ZAN04REC | | ZAN06W01 | ERROR-LOG | 順編成 | V (可変長) | 200B | ZAN05REC | ## 使用COPY句 | COPY句 | 用途 | 使用箇所 | |--------|------|---------| | ZAN03REC | OVT-SUMMARYレコード定義(R01入力) | FILE SECTION | | ZAN04REC | OVT-DBCLEANレコード定義(R02入力) | FILE SECTION | | ZAN05REC | エラーログレコード定義(W01出力) | FILE SECTION | | ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE | | ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | | ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | ## 使用サブプログラム | サブPGM | 役割 | CALL箇所 | |---------|------|---------| | SUB01DAT | 運用日付取得 | 1000ITTSOR | | SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | | SUB03END | ABEND処理 | 9999ABDSOR | ## 使用DB2テーブル | テーブル名 | 操作種別 | 説明 | |------------|---------|------| | OVT_APPLICATIONS | INSERT / UPDATE | 申請データ登録・更新(取消) | | OVT_MONTHLY | SELECT / INSERT / UPDATE | 月次集計テーブル(加算・減算) | ## 実行SQL一覧 | SQL種別 | 内容 | 該当箇所 | |---------|------|---------| | CONNECT TO | DB接続(data\OVERTIME.DB) | 1000ITTSOR | | INSERT INTO ... OVT_APPLICATIONS | 申請データ新規登録 | 2100SUMMARYSOR | | UPDATE ... OVT_APPLICATIONS | 重複時更新(STATUS) | 2100SUMMARYSOR | | SELECT ... OVT_MONTHLY | 月次集計存在確認 | 2110MONTHLYUPSOR | | UPDATE ... OVT_MONTHLY (+加算) | 月次集計加算 | 2110MONTHLYUPSOR | | INSERT INTO ... OVT_MONTHLY | 月次集計新規作成 | 2110MONTHLYUPSOR | | SELECT ... OVT_APPLICATIONS | 取消データ取得 | 2200DBCLEANSOR | | UPDATE ... OVT_APPLICATIONS (取消) | 申請ステータス取消 | 2200DBCLEANSOR | | UPDATE ... OVT_MONTHLY (-減算) | 月次集計減算(リトライ3回) | 2210MONTHLYSUBSOR | | COMMIT WORK | 50件毎/最終コミット | 2300COMMITDBX | | ROLLBACK WORK | DBエラー時ロールバック | 9100DBERRSOR | ## 処理フロー 1. 初期処理(開始メッセージ→運用日付取得→OPEN→DB CONNECT→R01/R02初回読込) 2. フェーズ1(OVT-SUMMARY処理): - SQLホスト変数設定(年月抽出・時刻変換・時間→分変換) - OVT_APPLICATIONSにINSERT - 成功 → INSERTカウンタ+1 - 重複エラー(SQLCODE≠0) → UPDATE(STATUS更新) - OVT_MONTHLY UPSERT(存在確認SELECT→UPDATE/INSERT) - 50件毎にCOMMIT 3. フェーズ2(OVT-DBCLEAN処理): - OVT_APPLICATIONSから既存データSELECT - 該当なし(孤立取消) → ERROR-LOG出力+ABEND(999) - OVT_APPLICATIONSステータス更新('9'=取消) - OVT_MONTHLY減算(3回リトライ付きUPDATE) 4. 終了処理(最終COMMIT→CLOSE→件数出力→終了メッセージ)