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

66 lines
3.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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→件数出力→終了メッセージ)