Files
cobol-tna-system/使用資源一覧/KIN03EXP_使用資源一覧.md

3.0 KiB
Raw Permalink Blame History

KIN03EXP 使用資源一覧

プログラム概要

  • プログラムID: KIN03EXP
  • プログラム名: 休暇日別展開処理
  • 処理概要: LEAVE_RECORDS(DB2)より有効申請(STATUS='1')を読込み、開始日〜終了日の期間を日別に展開し、休日・週末を除外してLEAVE-DAILYファイルを出力する。社員番号キーブレイクで小計出力を行う。

使用ファイル

DD名 ファイル識別子 編成 レコード形式 レコード長 COPY句 FILE STATUS
KIN02W01.DAT LEAVE-DAILY 順編成 F (固定長) 80B KIN02REC WS-W01-STATUS

使用COPY句

COPY句 用途 使用箇所
KIN02REC レコード定義(W01出力ファイル) FILE SECTION
ZANDATAC 運用日付サブPGM連絡領域 WORKING-STORAGE
ZANMSGAC メッセージ編集サブPGM連絡領域 WORKING-STORAGE
ZANENDAC ABENDサブPGM連絡領域 WORKING-STORAGE
SQLCA SQL通信領域 WORKING-STORAGE

使用サブプログラム

サブPGM 役割 CALL箇所
SUB01DAT 運用日付取得 1000ITTSOR
SUB02MSG メッセージ編集出力 4000MSGOUTSOR
SUB03END ABEND処理 9999ABDSOR

使用DB2テーブル

テーブル名 操作 備考
LEAVE_RECORDS SELECT STATUS='1'、ORDER BY EMP_ID, START_DATE
HOLIDAY_CALENDAR SELECT 休日マスタ、ORDER BY HOLIDAY_DATE

EXEC SQL一覧

SQL種別 処理 実行条件 使用箇所
CONNECT TO 'data/kin.db' 常時 1000ITTSOR
DECLARE C1 CURSOR SELECT FROM LEAVE_RECORDS 常時 1100C1INITSOR
OPEN C1 CURSOR OPEN SQLCODE=0 1100C1INITSOR
FETCH C1 INTO 変数(初回+次回) SQLCODE=0 1100C1INITSOR, 1100C1FETCHSOR
DECLARE C2 CURSOR SELECT FROM HOLIDAY_CALENDAR 常時 1200HDINNSOR
OPEN C2 CURSOR OPEN 常時 1200HDINNSOR
FETCH C2 INTO :SQL-HD-DATE(全件) SQLCODE=0 1200HDINNSOR
CLOSE C1 CURSOR CLOSE 常時 3000STPSOR
CLOSE C2 CURSOR CLOSE 常時 3000STPSOR

処理フロー

  1. 初期処理(開始メッセージ→DB接続→運用日付取得)
  2. 休日カレンダー全件読込(WORKING-STORAGEに格納)
  3. 出力ファイルOPEN
  4. C1 DECLARE/OPEN/初回FETCHLEAVE_RECORDSSTATUS='1'、ORDER BY EMP_ID, START_DATE
  5. 社員番号キーブレイクループ
    • 社員別に期間内を日別展開
    • 週末判定(MOD(INTEGER-OF-DATE,7)=0/6)→除外
    • 休日判定(SEARCH ALL on WRK-HOLIDAY-TABLE)→除外
    • 非週末・非休日 → LEAVE-DAILY出力
    • 日付加算(月跨ぎ/閏年対応)
    • キーブレイク時:社員別小計メッセージ出力
  6. 終了処理(CURSOR CLOSE→出力CLOSE→件数出力→終了メッセージ)