# KIN08DBU 使用資源一覧 ## プログラム概要 - **プログラムID**: KIN08DBU - **プログラム名**: 勤怠DB更新処理 - **処理概要**: SYSIN制御カード(T/P/M)で処理対象を指定し、DAILY_RECORD(200B)を読込み、DAILY_RECORDSテーブルにINSERT。社員別月次集計後MONTHLY_ABSENCEにUPSERT。集計結果をABSENCE_SUMMARYファイル(80B)に出力。 ## 使用ファイル | DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | 定義参照先 | |------|---------------|------|-------------|-----------|--------|-----------| | KIN08R01 | DAILY-RECORD(日別勤怠) | 順編成 | F (固定長) | 200B | KIN07REC | COPY句定義書.md | | KIN08S01 | SYSIN(制御カード) | 順編成 | F (固定長) | 80B | - | JCL DD定義 | | KIN08W01 | ABSENCE-SUMMARY(月次集計) | 順編成 | F (固定長) | 80B | KIN08REC | COPY句定義書.md | ## 使用COPY句 | COPY句 | 用途 | 使用箇所 | |--------|------|---------| | KIN07REC | DAILY-RECORD(R01入力レコード定義) | FILE SECTION(FD R01INNFIL) | | KIN08REC | ABSENCE-SUMMARY(W01出力レコード定義) | FILE SECTION(FD W01OUTFIL) | | ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | | ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | ## 使用サブプログラム | サブPGM | 役割 | CALL箇所 | |---------|------|---------| | SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR | | SUB03END | ABEND処理 | 1000ITTSOR(パラメータ不足時)/ 9100DBERRSOR / 9999ABDSOR | ## 使用DB2テーブル | テーブル名 | 操作種別 | 使用箇所 | SQL種別 | |-----------|---------|---------|--------| | DAILY_RECORDS | INSERT | 2000MAJSOR | INSERT | | MONTHLY_ABSENCE | DELETE/SELECT/INSERT/UPDATE | 3000STPSOR | DELETE(RESETモード)/ SELECT COUNT / INSERT / UPDATE | ## 処理フロー 1. 初期処理(1000ITTSOR): 開始メッセージ→OPEN SYSIN→SYSIN読込ループ 2. SYSINカード解析(1199-SYSIN-LOOP): GO TO DEPENDING ON でT/P/M分岐 - Tカード(1110-TARGETSOR): UNSTRINGで対象社員一覧を内部表に格納 - Pカード(1120-PERIODSOR): 処理対象年月を設定 - Mカード(1130-MODESOR): MODE(RESET/NORMAL)を設定 3. 主処理(2000MAJSOR): DAILY-RECORD読込→DAILY_RECORDS INSERT→集計テーブルに累積 4. 終了処理(3000STPSOR): RESET時DELETE→MONTHLY_ABSENCE UPSERT→ABSENCE_SUMMARY出力→COMMIT→CLOSE ## 使用構文(特記事項) | 構文 | 使用箇所 | 備考 | |------|---------|------| | GO TO DEPENDING ON | 1199-SYSIN-LOOP | T/P/Mカードパラグラフ分岐 | | UNSTRING | 1110-TARGETSOR / 1120-PERIODSOR | カンマ区切り/代入符で文字列分割 | | INSPECT TALLYING | 2000MAJSOR | 社員番号先頭ゼロ数チェック | | COMPUTE ROUNDED ON SIZE ERROR | 2000MAJSOR | 丸め+サイズエラー検出 | | UPSERT(SELECT COUNT→INSERT/UPDATE) | 3000STPSOR | 月次集計行の存在確認後分岐 | | OCCURS | WORKING-STORAGE | AGG-ENTRIES(100), TARGET-EMP(100) | | INITIALIZE | 1000ITTSOR | WRKARA + AGGREGATION-TABLE初期化 | | EXEC SQL INCLUDE | WORKING-STORAGE | SQLCA(ブリッジ変数) | | FUNCTION WHEN-COMPILED | 1000ITTSOR | コンパイル日時表示 | | INSPECT REPLACING | 1130-MODESOR | 'MODE='除去 |