66 lines
3.0 KiB
Markdown
66 lines
3.0 KiB
Markdown
# 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/初回FETCH(LEAVE_RECORDS:STATUS='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→件数出力→終了メッセージ)
|