# ZAN05CAL 使用資源一覧 ## プログラム概要 - **プログラムID**: ZAN05CAL - **プログラム名**: 残業時間集計処理 - **処理概要**: OVT-SORTED2(申請番号+処理番号昇順)をキーブレイク集計し、同一APPL-ID内の全明細の加班時間を積算してOVT-SUMMARYに1レコード出力。 ## 使用ファイル | DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | |------|---------------|------|-------------|-----------|--------| | ZAN05R01 | OVT-SORTED2 | 順編成 | F (固定長) | 80B | ZAN02REC | | ZAN05W01 | OVT-SUMMARY | 順編成 | F (固定長) | 80B | ZAN03REC | ## 使用COPY句 | COPY句 | 用途 | 使用箇所 | |--------|------|---------| | ZAN02REC | OVT-MATCHEDレコード定義(R01入力) | FILE SECTION | | ZAN03REC | OVT-SUMMARYレコード定義(W01出力) | FILE SECTION | | ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE | | ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | | ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | | ZANTIMAC | 時刻丸めサブPGM連絡領域 | WORKING-STORAGE | ## 使用サブプログラム | サブPGM | 役割 | CALL箇所 | |---------|------|---------| | SUB01DAT | 運用日付取得 | 1000ITTSOR | | SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | | SUB03END | ABEND処理 | 9999ABDSOR | | SUB05TIM | 時刻丸め(0.1h単位切捨) | 2100OUTSOR | ## 使用DB2テーブル なし(DB操作なし) ## 処理フロー 1. 初期処理(開始メッセージ→運用日付取得→OPEN→初回読込) 2. キーブレイク集計ループ - キー変わり(APPL-ID) → 前グループ集計出力+累積リセット+新グループ開始 - 同一グループ → 現レコード時間差分をWRK-ACCUM-MINに積算+最新レコード上書き保持 - EOF → 最終グループを出力 3. 集計出力処理(2100OUTSOR) - DIVIDE REMAINDERで時→分変換 - COMPUTE ROUNDED ON SIZE ERROR - SUB05TIM呼出(0.1h単位切捨て丸め) - OVT-SUMMARY出力(グループ先頭START・最新END・積算OVT-HOURS) 4. 終了処理(CLOSE→件数出力→終了メッセージ)