KIN08DBU/KIN09CSV: fix comment col, quoted ASSIGN, INITIALIZE order, WRITE logic; fix resource docs & coverage stats
This commit is contained in:
+25
-24
@@ -2,22 +2,23 @@
|
||||
|
||||
## プログラム概要
|
||||
- **プログラムID**: KIN08DBU
|
||||
- **プログラム名**: 月次集計更新処理
|
||||
- **処理概要**: SYSIN制御カード(T/P/M)で処理対象を指定し、DAILY_RECORDSテーブルをDELETE/INSERT(日別→月次集計)し、MONTHLY_ABSENCEテーブルにUPSERT。ABSENCE_SUMMARYファイル(80B)に出力する。
|
||||
- **プログラム名**: 勤怠DB更新処理
|
||||
- **処理概要**: SYSIN制御カード(T/P/M)で処理対象を指定し、DAILY_RECORD(200B)を読込み、DAILY_RECORDSテーブルにINSERT。社員別月次集計後MONTHLY_ABSENCEにUPSERT。集計結果をABSENCE_SUMMARYファイル(80B)に出力。
|
||||
|
||||
## 使用ファイル
|
||||
|
||||
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | 定義参照先 |
|
||||
|------|---------------|------|-------------|-----------|--------|-----------|
|
||||
| KIN08R01 | SYSIN | 順編成 | F (固定長) | 80B | - | JCL DD定義 |
|
||||
| KIN08W01 | ABSENCE-SUMMARY | 順編成 | F (固定長) | 80B | KIN08REC | COPY句定義書.md |
|
||||
| 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(INSERT用ホスト変数参照) | FILE SECTION(SQL宿主) |
|
||||
| KIN08REC | W01出力レコード定義(ABSENCE-SUMMARY-REC) | FILE SECTION |
|
||||
| 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 |
|
||||
|
||||
@@ -26,35 +27,35 @@
|
||||
| サブPGM | 役割 | CALL箇所 |
|
||||
|---------|------|---------|
|
||||
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||
| SUB03END | ABEND処理 | 9999ABDSOR |
|
||||
| SUB03END | ABEND処理 | 1000ITTSOR(パラメータ不足時)/ 9100DBERRSOR / 9999ABDSOR |
|
||||
|
||||
## 使用DB2テーブル
|
||||
|
||||
| テーブル名 | 操作種別 | 使用箇所 | SQL種別 |
|
||||
|-----------|---------|---------|--------|
|
||||
| DAILY_RECORDS | DELETE/INSERT | 1000PROCSOR | DELETE / INSERT |
|
||||
| MONTHLY_ABSENCE | SELECT/INSERT/UPDATE | 2000MAJSOR | SELECT COUNT / INSERT / UPDATE |
|
||||
| DAILY_RECORDS | INSERT | 2000MAJSOR | INSERT |
|
||||
| MONTHLY_ABSENCE | DELETE/SELECT/INSERT/UPDATE | 3000STPSOR | DELETE(RESETモード)/ SELECT COUNT / INSERT / UPDATE |
|
||||
|
||||
## 処理フロー
|
||||
1. 初期処理(開始メッセージ→OPEN SYSIN→SYSIN読込ループ)
|
||||
2. SYSINカード解析: GO TO DEPENDING ON でT/P/M分岐
|
||||
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): RESET(DELETE)/ UPDATEモード切替
|
||||
3. 主処理(2000MAJSOR): DAILY_RECORDSのSELECT→INSERT→集計テーブルに累積
|
||||
4. 月次UPDATE処理(3000UPDSOR): MONTHLY_ABSENCEにSELECT COUNT/INSERT/UPDATE
|
||||
5. 終了処理(4000MSGOUTSOR): 件数出力→CLOSE→終了メッセージ
|
||||
- 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 | 1100PARMSOR/1199-SYSIN-LOOP | T/P/Mカードパラグラフ分岐 |
|
||||
| UNSTRING | 1110-TARGETSOR/1120-PERIODSOR/1130-MODESOR | カンマ/区切り/代入符でカード分割 |
|
||||
| INSPECT TALLYING | 1110-TARGETSOR | UNSTRING後のtarget句末尾ゼロ数 |
|
||||
| GO TO DEPENDING ON | 1199-SYSIN-LOOP | T/P/Mカードパラグラフ分岐 |
|
||||
| UNSTRING | 1110-TARGETSOR / 1120-PERIODSOR | カンマ区切り/代入符で文字列分割 |
|
||||
| INSPECT TALLYING | 2000MAJSOR | 社員番号先頭ゼロ数チェック |
|
||||
| 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 |
|
||||
| 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='除去 |
|
||||
|
||||
+16
-15
@@ -3,7 +3,7 @@
|
||||
## プログラム概要
|
||||
- **プログラムID**: KIN09CSV
|
||||
- **プログラム名**: CSV出力処理
|
||||
- **処理概要**: DAILY_RECORDSテーブルをCURSORで読込み、CSV形式に編集して出力。MODE=FULLで日別明細+月次サマリ、MODE=SHORTで月次サマリのみ。100行ごとにヘッダー再出力。
|
||||
- **処理概要**: DAILY_RECORDSテーブルをCURSORで読込み、CSV形式に編集(STRING WITH POINTER)して出力。MODE=FULLで日別明細+月次サマリ、MODE=SHORTで月次サマリのみ。100行ごとにヘッダー再出力。
|
||||
|
||||
## 使用ファイル
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
| サブPGM | 役割 | CALL箇所 |
|
||||
|---------|------|---------|
|
||||
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||
| SUB03END | ABEND処理 | 9999ABDSOR |
|
||||
| SUB03END | ABEND処理 | 1100PARMSOR(YEARMONTH未設定時)/ 9999ABDSOR |
|
||||
|
||||
## 使用DB2テーブル
|
||||
|
||||
@@ -34,24 +34,25 @@
|
||||
| MONTHLY_ABSENCE | SELECT | 2500-SHORT-MODE | DECLARE CURSOR / OPEN / FETCH / CLOSE |
|
||||
|
||||
## 処理フロー
|
||||
1. 初期処理(開始メッセージ→COMMAND-LINE解析→OPEN出力)
|
||||
2. ヘッダー出力(SHIFT JIS CSVヘッダー行)
|
||||
3. 日別明細ループ:DAILY_RECORDS CURSOR OPEN→FETCH→CSV編集(STRING WITH POINTER)→WRITE AFTER ADVANCING 1 LINE
|
||||
4. 100行ごとにヘッダー再出力(WRITE AFTER ADVANCING PAGE)
|
||||
5. MODE=SHORT: MONTHLY_ABSENCE CURSOR OPEN→FETCH→月次サマリCSV出力
|
||||
6. 終了処理(CLOSE→件数出力→終了メッセージ)
|
||||
1. 初期処理(1000ITTSOR): 開始メッセージ→ワーク初期化→COMMAND-LINE解析→OPEN出力
|
||||
2. ヘッダー出力: WRITE AFTER ADVANCING PAGE(改ページ+CSVヘッダー)
|
||||
3. CURSOR OPEN(1200-DAILY-OPEN): DAILY_RECORDS CURSOR OPEN + 初回FETCH
|
||||
4. 日別明細ループ(2000MAJSOR): CSV編集(STRING WITH POINTER)→WRITE AFTER ADVANCING 1 LINE
|
||||
- 100行ごとにヘッダー再出力: WRITE AFTER ADVANCING 2 LINES
|
||||
- CSV危険文字サニタイズ: INSPECT REPLACING
|
||||
5. MODE=SHORT(2500-SHORT-MODE): MONTHLY_ABSENCE CURSOR→月次サマリCSV出力
|
||||
6. 終了処理(3000STPSOR): CLOSE→件数出力→終了メッセージ
|
||||
|
||||
## 使用構文(特記事項)
|
||||
|
||||
| 構文 | 使用箇所 | 備考 |
|
||||
|------|---------|------|
|
||||
| ACCEPT FROM COMMAND-LINE | 1100PARMSOR | "YEARMONTH=202605 MODE=FULL"解析 |
|
||||
| ACCEPT FROM COMMAND-LINE | 1100PARMSOR | "YEARMONTH=202605,MODE=FULL"解析 |
|
||||
| STRING DELIMITED BY | 2000MAJSOR/2500-SHORT-MODE | CSV行編集(WITH POINTER) |
|
||||
| WRITE AFTER ADVANCING PAGE | 2000MAJSOR | 改ページ+ヘッダー再出力 |
|
||||
| WRITE AFTER ADVANCING 2 LINES | 2500-SHORT-MODE | ヘッダー後改行 |
|
||||
| WRITE AFTER ADVANCING 1 LINE | 2000MAJSOR/2500-SHORT-MODE | データ行改行 |
|
||||
| WRITE AFTER ADVANCING PAGE | 1000ITTSOR | 改ページ+CSVヘッダー初回出力 |
|
||||
| WRITE AFTER ADVANCING 2 LINES | 2000MAJSOR | 100行ごとのヘッダー再出力時 |
|
||||
| WRITE AFTER ADVANCING 1 LINE | 2000MAJSOR/2500-SHORT-MODE | データ行・ヘッダー行改行 |
|
||||
| INSPECT REPLACING | 2000MAJSOR | CSVカンマ・改行サニタイズ |
|
||||
| DECLARE CURSOR / OPEN / FETCH / CLOSE | 1200-DAILY-OPEN/2500-SHORT-MODE | 2重CURSOR(DAILY→MONTHLY) |
|
||||
| OCCURS | WORKING-STORAGE | TARGET-EMP(100) |
|
||||
| INITIALIZE | 1100PARMSOR/1200-DAILY-OPEN | 変数初期化 |
|
||||
| MOVE CORRESPONDING | 2000MAJSOR | HV → CSV行項目編集 |
|
||||
| INITIALIZE | 1000ITTSOR | WRKARA初期化 |
|
||||
| FUNCTION WHEN-COMPILED | 1000ITTSOR | コンパイル日時表示 |
|
||||
|
||||
Reference in New Issue
Block a user