3.0 KiB
3.0 KiB
KIN08DBU 使用資源一覧
プログラム概要
- プログラムID: KIN08DBU
- プログラム名: 月次集計更新処理
- 処理概要: SYSIN制御カード(T/P/M)で処理対象を指定し、DAILY_RECORDSテーブルをDELETE/INSERT(日別→月次集計)し、MONTHLY_ABSENCEテーブルにUPSERT。ABSENCE_SUMMARYファイル(80B)に出力する。
使用ファイル
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | 定義参照先 |
|---|---|---|---|---|---|---|
| KIN08R01 | SYSIN | 順編成 | F (固定長) | 80B | - | JCL DD定義 |
| KIN08W01 | ABSENCE-SUMMARY | 順編成 | F (固定長) | 80B | KIN08REC | COPY句定義書.md |
使用COPY句
| COPY句 | 用途 | 使用箇所 |
|---|---|---|
| KIN07REC | DAILY-RECORD(INSERT用ホスト変数参照) | FILE SECTION(SQL宿主) |
| KIN08REC | W01出力レコード定義(ABSENCE-SUMMARY-REC) | FILE SECTION |
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
使用サブプログラム
| サブPGM | 役割 | CALL箇所 |
|---|---|---|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
| SUB03END | ABEND処理 | 9999ABDSOR |
使用DB2テーブル
| テーブル名 | 操作種別 | 使用箇所 | SQL種別 |
|---|---|---|---|
| DAILY_RECORDS | DELETE/INSERT | 1000PROCSOR | DELETE / INSERT |
| MONTHLY_ABSENCE | SELECT/INSERT/UPDATE | 2000MAJSOR | SELECT COUNT / INSERT / UPDATE |
処理フロー
- 初期処理(開始メッセージ→OPEN SYSIN→SYSIN読込ループ)
- SYSINカード解析: GO TO DEPENDING ON でT/P/M分岐
- Tカード(1110-TARGETSOR): UNSTRINGで対象社員一覧を内部表に格納
- Pカード(1120-PERIODSOR): 年月範囲を設定
- Mカード(1130-MODESOR): RESET(DELETE)/ UPDATEモード切替
- 主処理(2000MAJSOR): DAILY_RECORDSのSELECT→INSERT→集計テーブルに累積
- 月次UPDATE処理(3000UPDSOR): MONTHLY_ABSENCEにSELECT COUNT/INSERT/UPDATE
- 終了処理(4000MSGOUTSOR): 件数出力→CLOSE→終了メッセージ
使用構文(特記事項)
| 構文 | 使用箇所 | 備考 |
|---|---|---|
| GO TO DEPENDING ON | 1100PARMSOR/1199-SYSIN-LOOP | T/P/Mカードパラグラフ分岐 |
| UNSTRING | 1110-TARGETSOR/1120-PERIODSOR/1130-MODESOR | カンマ/区切り/代入符でカード分割 |
| INSPECT TALLYING | 1110-TARGETSOR | UNSTRING後のtarget句末尾ゼロ数 |
| COMPUTE ROUNDED ON SIZE ERROR | 2000MAJSOR | 丸め+サイズエラー検出 |
| DELETE | 2100-DELETE-SQL | SQL: DAILY_RECORDS DELETE |
| UPSERT(SELECT COUNT→INSERT/UPDATE) | 3000UPDSOR | 月次集計行の存在確認後分岐 |
| OCCURS | WORKING-STORAGE | TARGET-EMP(100), 内部集計表(9999) |
| INITIALIZE REPLACING | 1110-TARGETSOR | TARGET-TABLEの初期化 |
| EXEC SQL INCLUDE | WORKING-STORAGE | SQLCA |