Subsystem B cleanup: dead code removal, sort-key fix, ZAN04MAT/ZAN05CAL/ZAN06UPD updates, resource lists added
This commit is contained in:
@@ -11,7 +11,8 @@ production/
|
|||||||
├── cpy/ # COPY書式ファイル(レコード定義・連絡領域)
|
├── cpy/ # COPY書式ファイル(レコード定義・連絡領域)
|
||||||
├── bin/ # 実行ファイル(.exe)+サブプログラムDLL(.dll)
|
├── bin/ # 実行ファイル(.exe)+サブプログラムDLL(.dll)
|
||||||
├── design/ # サブシステム全体設計書
|
├── design/ # サブシステム全体設計書
|
||||||
└── 詳細設計書/ # 詳細設計ドキュメント
|
├── 詳細設計書/ # 詳細設計ドキュメント
|
||||||
|
└── 使用資源一覧/ # 使用資源一覧(COPY・CALL・I/Oファイル・DBテーブル)
|
||||||
```
|
```
|
||||||
|
|
||||||
## サブシステム構成
|
## サブシステム構成
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -427,7 +427,7 @@ OVT-VSORT は既に社員番号+日付+開始時刻でソート済。順次READ
|
|||||||
| **入力ファイル** | OVT-NODUP(80B)/ PUNCH-SORTED(80B) |
|
| **入力ファイル** | OVT-NODUP(80B)/ PUNCH-SORTED(80B) |
|
||||||
| **出力ファイル** | OVT-CHECKED(80B)/ ERROR-LOG(VB) |
|
| **出力ファイル** | OVT-CHECKED(80B)/ ERROR-LOG(VB) |
|
||||||
| **件数変化** | K件 → 通過P件 + エラー(K-P)件 |
|
| **件数変化** | K件 → 通過P件 + エラー(K-P)件 |
|
||||||
| **使用共通関数** | SUB02MSG(メッセージ), SUB03END(ABEND) |
|
| **使用共通関数** | SUB02MSG(メッセージ) |
|
||||||
|
|
||||||
**機能:**
|
**機能:**
|
||||||
|
|
||||||
@@ -449,12 +449,7 @@ Aサブシステムと同一の休日定義に従う(HOLIDAY-FILEファイル
|
|||||||
|
|
||||||
##### 休日ファイル初期化手順
|
##### 休日ファイル初期化手順
|
||||||
|
|
||||||
初期処理(1000ITTSOR相当)で以下の手順によりHOLIDAY-TABLEを構築する。
|
初期処理(1000ITTSOR)でHOLIDAY-FILEを全件READし、WORKING-STORAGEのHOLIDAY-TABLEに格納する。
|
||||||
|
|
||||||
1. FUNCTION CURRENT-DATE で処理日を取得
|
|
||||||
2. 処理日の年月から該当月の初日〜末日を算出
|
|
||||||
3. 各日について曜日判定(土日またはHOLIDAY-FILE該当)を行い、
|
|
||||||
休日=該当月内の全祝日レコードをWORKING-STORAGEのHOLIDAY-TABLEに格納
|
|
||||||
|
|
||||||
```
|
```
|
||||||
* 休日データ取得(ファイル読込み)
|
* 休日データ取得(ファイル読込み)
|
||||||
@@ -492,7 +487,7 @@ END-SEARCH
|
|||||||
- HOLIDAY-FILE該当 → OVT-TYPE='H'
|
- HOLIDAY-FILE該当 → OVT-TYPE='H'
|
||||||
- 該当なし → OVT-TYPE='W'
|
- 該当なし → OVT-TYPE='W'
|
||||||
|
|
||||||
**MOVE** で OVT-TYPE を設定。**FUNCTION CURRENT-DATE** で処理日を取得し、曜日計算の補助に使用。
|
**MOVE** で OVT-TYPE を設定。
|
||||||
|
|
||||||
全通過レコードは OVT-TYPE を付加して OVT-CHECKED に書出し。
|
全通過レコードは OVT-TYPE を付加して OVT-CHECKED に書出し。
|
||||||
|
|
||||||
|
|||||||
+1
-4
@@ -106,8 +106,6 @@
|
|||||||
05 WRK-PREV-STATUS PIC X(001).
|
05 WRK-PREV-STATUS PIC X(001).
|
||||||
05 WRK-PREV-OVT-TYPE PIC X(001).
|
05 WRK-PREV-OVT-TYPE PIC X(001).
|
||||||
05 WRK-PREV-FILLER PIC X(046).
|
05 WRK-PREV-FILLER PIC X(046).
|
||||||
*** 初回読込フラグ
|
|
||||||
03 WRK-FIRST-FLG PIC X(001).
|
|
||||||
*
|
*
|
||||||
*****************************************************************
|
*****************************************************************
|
||||||
* サブプログラム連絡領域 *
|
* サブプログラム連絡領域 *
|
||||||
@@ -160,7 +158,6 @@
|
|||||||
*
|
*
|
||||||
*** ワークエリア初期化
|
*** ワークエリア初期化
|
||||||
INITIALIZE WRKARA.
|
INITIALIZE WRKARA.
|
||||||
MOVE '1' TO WRK-FIRST-FLG.
|
|
||||||
*
|
*
|
||||||
*** 運用日付取得
|
*** 運用日付取得
|
||||||
INITIALIZE D01UBSPAR.
|
INITIALIZE D01UBSPAR.
|
||||||
@@ -360,4 +357,4 @@
|
|||||||
CALL 'SUB03END' USING E01ABDPAR.
|
CALL 'SUB03END' USING E01ABDPAR.
|
||||||
*
|
*
|
||||||
9999ABDSOR-EXT.
|
9999ABDSOR-EXT.
|
||||||
EXIT.
|
EXIT.
|
||||||
+5
-18
@@ -99,12 +99,12 @@
|
|||||||
03 CNS-PRGIDX PIC X(008) VALUE 'ZAN03CHK'.
|
03 CNS-PRGIDX PIC X(008) VALUE 'ZAN03CHK'.
|
||||||
03 CNS-MSGSTR PIC 9(003) VALUE 001.
|
03 CNS-MSGSTR PIC 9(003) VALUE 001.
|
||||||
03 CNS-MSGFIN PIC 9(003) VALUE 002.
|
03 CNS-MSGFIN PIC 9(003) VALUE 002.
|
||||||
03 CNS-MSGSUBEEK PIC 9(003) VALUE 005.
|
|
||||||
03 CNS-MSGIINKES PIC 9(003) VALUE 006.
|
03 CNS-MSGIINKES PIC 9(003) VALUE 006.
|
||||||
03 CNS-MSGOUTKES PIC 9(003) VALUE 007.
|
03 CNS-MSGOUTKES PIC 9(003) VALUE 007.
|
||||||
03 CNS-MSGKEYINF PIC 9(003) VALUE 033.
|
03 CNS-MSGKEYINF PIC 9(003) VALUE 033.
|
||||||
03 CNS-KN0002 PIC 9(001) VALUE 2.
|
03 CNS-KN0002 PIC 9(001) VALUE 2.
|
||||||
03 CNS-ABD999 PIC 9(003) VALUE 999.
|
|
||||||
03 CNS-ERR-CAT03 PIC 9(002) VALUE 03.
|
03 CNS-ERR-CAT03 PIC 9(002) VALUE 03.
|
||||||
03 CNS-OVT-W PIC X(001) VALUE 'W'.
|
03 CNS-OVT-W PIC X(001) VALUE 'W'.
|
||||||
03 CNS-OVT-H PIC X(001) VALUE 'H'.
|
03 CNS-OVT-H PIC X(001) VALUE 'H'.
|
||||||
@@ -158,8 +158,7 @@
|
|||||||
*****************************************************************
|
*****************************************************************
|
||||||
*** メッセージ編集出力SR用
|
*** メッセージ編集出力SR用
|
||||||
COPY ZANMSGAC.
|
COPY ZANMSGAC.
|
||||||
*** ABEND処理SR用
|
|
||||||
COPY ZANENDAC.
|
|
||||||
*
|
*
|
||||||
PROCEDURE DIVISION.
|
PROCEDURE DIVISION.
|
||||||
*****************************************************************
|
*****************************************************************
|
||||||
@@ -203,8 +202,7 @@
|
|||||||
*** ワークエリア初期化
|
*** ワークエリア初期化
|
||||||
INITIALIZE WRKARA.
|
INITIALIZE WRKARA.
|
||||||
*
|
*
|
||||||
*** 現在日付取得(FUNCTION CURRENT-DATE)
|
|
||||||
MOVE FUNCTION CURRENT-DATE TO WRK-HOLIDAY-CNT.
|
|
||||||
*
|
*
|
||||||
*** 入出力ファイルOPEN
|
*** 入出力ファイルOPEN
|
||||||
OPEN INPUT R01INNFIL
|
OPEN INPUT R01INNFIL
|
||||||
@@ -465,15 +463,4 @@
|
|||||||
*
|
*
|
||||||
4000MSGOUTSOR-EXT.
|
4000MSGOUTSOR-EXT.
|
||||||
EXIT.
|
EXIT.
|
||||||
*****************************************************************
|
|
||||||
* サブモジュールNO:(9.9) *
|
|
||||||
* サブモジュール名: 異常終了処理 *
|
|
||||||
* 処理概要 : ABEND処理 *
|
|
||||||
*****************************************************************
|
|
||||||
9999ABDSOR SECTION.
|
|
||||||
*
|
|
||||||
MOVE CNS-ABD999 TO E01ABDCOD.
|
|
||||||
CALL 'SUB03END' USING E01ABDPAR.
|
|
||||||
*
|
|
||||||
9999ABDSOR-EXT.
|
|
||||||
EXIT.
|
|
||||||
|
|||||||
+9
-13
@@ -119,9 +119,7 @@
|
|||||||
*****************************************************************
|
*****************************************************************
|
||||||
* 作業領域 *
|
* 作業領域 *
|
||||||
*****************************************************************
|
*****************************************************************
|
||||||
01 WRKARA.
|
01 WRKARA.
|
||||||
*** 運用日付
|
|
||||||
03 WRK-U06 PIC 9(008).
|
|
||||||
*** マッチングキー
|
*** マッチングキー
|
||||||
03 WRK-R01KEY PIC X(008).
|
03 WRK-R01KEY PIC X(008).
|
||||||
03 WRK-R02KEY PIC X(008).
|
03 WRK-R02KEY PIC X(008).
|
||||||
@@ -182,16 +180,14 @@
|
|||||||
*** 運用日付取得
|
*** 運用日付取得
|
||||||
INITIALIZE D01UBSPAR.
|
INITIALIZE D01UBSPAR.
|
||||||
CALL 'SUB01DAT' USING D01UBSPAR.
|
CALL 'SUB01DAT' USING D01UBSPAR.
|
||||||
IF D01FKICOD = ZERO
|
IF D01FKICOD NOT = ZERO
|
||||||
MOVE D01UBSUDATE TO WRK-U06
|
INITIALIZE M00MHOPAR
|
||||||
ELSE
|
MOVE CNS-MSGSUBEEK TO M00MSGCOD
|
||||||
INITIALIZE M00MHOPAR
|
MOVE 'SUB01DAT' TO M00UMKDATS22-01
|
||||||
MOVE CNS-MSGSUBEEK TO M00MSGCOD
|
MOVE D01FKICOD TO M00UMKDATS22-02
|
||||||
MOVE 'SUB01DAT' TO M00UMKDATS22-01
|
PERFORM 4000MSGOUTSOR
|
||||||
MOVE D01FKICOD TO M00UMKDATS22-02
|
PERFORM 9999ABDSOR
|
||||||
PERFORM 4000MSGOUTSOR
|
END-IF.
|
||||||
PERFORM 9999ABDSOR
|
|
||||||
END-IF.
|
|
||||||
*
|
*
|
||||||
*** 入出力ファイルOPEN
|
*** 入出力ファイルOPEN
|
||||||
OPEN INPUT R01INNFIL
|
OPEN INPUT R01INNFIL
|
||||||
|
|||||||
+2
-6
@@ -82,8 +82,6 @@
|
|||||||
01 WRKARA.
|
01 WRKARA.
|
||||||
*** 処理日付(ACCEPT FROM DATE用)
|
*** 処理日付(ACCEPT FROM DATE用)
|
||||||
03 WRK-DATE-8 PIC 9(008).
|
03 WRK-DATE-8 PIC 9(008).
|
||||||
*** 運用日付
|
|
||||||
03 WRK-U06 PIC 9(008).
|
|
||||||
*** キーブレイク制御
|
*** キーブレイク制御
|
||||||
03 WRK-R01KEY PIC X(008).
|
03 WRK-R01KEY PIC X(008).
|
||||||
03 WRK-PREV-APPL-ID PIC X(008).
|
03 WRK-PREV-APPL-ID PIC X(008).
|
||||||
@@ -181,9 +179,7 @@
|
|||||||
*** 運用日付取得
|
*** 運用日付取得
|
||||||
INITIALIZE D01UBSPAR.
|
INITIALIZE D01UBSPAR.
|
||||||
CALL 'SUB01DAT' USING D01UBSPAR.
|
CALL 'SUB01DAT' USING D01UBSPAR.
|
||||||
IF D01FKICOD = ZERO
|
IF D01FKICOD NOT = ZERO
|
||||||
MOVE D01UBSUDATE TO WRK-U06
|
|
||||||
ELSE
|
|
||||||
INITIALIZE M00MHOPAR
|
INITIALIZE M00MHOPAR
|
||||||
MOVE CNS-MSGSUBEEK TO M00MSGCOD
|
MOVE CNS-MSGSUBEEK TO M00MSGCOD
|
||||||
MOVE 'SUB01DAT' TO M00UMKDATS22-01
|
MOVE 'SUB01DAT' TO M00UMKDATS22-01
|
||||||
@@ -397,4 +393,4 @@
|
|||||||
CALL 'SUB03END' USING E01ABDPAR.
|
CALL 'SUB03END' USING E01ABDPAR.
|
||||||
*
|
*
|
||||||
9999ABDSOR-EXT.
|
9999ABDSOR-EXT.
|
||||||
EXIT.
|
EXIT.
|
||||||
|
|||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# ZAN01CHK 使用資源一覧
|
||||||
|
|
||||||
|
## プログラム概要
|
||||||
|
- **プログラムID**: ZAN01CHK
|
||||||
|
- **プログラム名**: 残業申請振分処理
|
||||||
|
- **処理概要**: CSV形式の残業申請ファイルを読み込み、ステータスによって適切に振り分ける。
|
||||||
|
|
||||||
|
## 使用ファイル
|
||||||
|
|
||||||
|
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|
||||||
|
|------|---------------|------|-------------|-----------|--------|
|
||||||
|
| ZAN01R01 | 入力CSV | 順編成 | F (固定長) | 80B | なし(自前定義) |
|
||||||
|
| ZAN01W01 | OVT-APPLY | 順編成 | F (固定長) | 80B | ZAN01REC |
|
||||||
|
| ZAN01W02 | OVT-CANCEL | 順編成 | F (固定長) | 80B | ZAN01REC |
|
||||||
|
| ZAN01W03 | ERROR-LOG | 順編成 | V (可変長) | 200B | ZAN05REC |
|
||||||
|
|
||||||
|
## 使用COPY句
|
||||||
|
|
||||||
|
| COPY句 | 用途 | 使用箇所 |
|
||||||
|
|--------|------|---------|
|
||||||
|
| ZAN01REC | レコード定義(W01/W02出力ファイル) | FILE SECTION |
|
||||||
|
| ZAN05REC | エラーログレコード定義(W03出力ファイル) | FILE SECTION |
|
||||||
|
| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
| ZANCHKAC | 項目チェックサブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
|
||||||
|
## 使用サブプログラム
|
||||||
|
|
||||||
|
| サブPGM | 役割 | CALL箇所 |
|
||||||
|
|---------|------|---------|
|
||||||
|
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
|
||||||
|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||||
|
| SUB03END | ABEND処理 | 9999ABDSOR |
|
||||||
|
| SUB04CHK | 日付妥当性チェック | 2020VALIDATESOR |
|
||||||
|
|
||||||
|
## 使用DB2テーブル
|
||||||
|
|
||||||
|
なし(DB操作なし)
|
||||||
|
|
||||||
|
## 処理フロー
|
||||||
|
1. 初期処理(開始メッセージ→運用日付取得→OPEN→初回読込)
|
||||||
|
2. CSV分解(UNSTRING)
|
||||||
|
3. ステータス判定
|
||||||
|
- ステータス'0'/'1'(有効)→ 項目チェック(SUB04CHK)→ W01出力
|
||||||
|
- ステータス'9'(取消)→ W02出力
|
||||||
|
- その他(エラー)→ W03出力
|
||||||
|
4. 終了処理(CLOSE→件数出力→終了メッセージ)
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
# ZAN02CHK 使用資源一覧
|
||||||
|
|
||||||
|
## プログラム概要
|
||||||
|
- **プログラムID**: ZAN02CHK
|
||||||
|
- **プログラム名**: 時間帯重複チェック処理
|
||||||
|
- **処理概要**: OVT-APPLYファイルの同一社員・同一日付内の開始時刻と終了時刻の重複をチェックする。
|
||||||
|
|
||||||
|
## 使用ファイル
|
||||||
|
|
||||||
|
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|
||||||
|
|------|---------------|------|-------------|-----------|--------|
|
||||||
|
| ZAN02R01 | OVT-APPLY | 順編成 | F (固定長) | 80B | ZAN01REC |
|
||||||
|
| ZAN02W01 | OVT-NODUP | 順編成 | F (固定長) | 80B | ZAN01REC |
|
||||||
|
| ZAN02W02 | ERROR-LOG | 順編成 | V (可変長) | 200B | ZAN05REC |
|
||||||
|
|
||||||
|
## 使用COPY句
|
||||||
|
|
||||||
|
| COPY句 | 用途 | 使用箇所 |
|
||||||
|
|--------|------|---------|
|
||||||
|
| ZAN01REC | レコード定義(R01入力/W01出力) | FILE SECTION |
|
||||||
|
| ZAN05REC | エラーログレコード定義(W02出力) | FILE SECTION |
|
||||||
|
| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
|
||||||
|
## 使用サブプログラム
|
||||||
|
|
||||||
|
| サブPGM | 役割 | CALL箇所 |
|
||||||
|
|---------|------|---------|
|
||||||
|
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
|
||||||
|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||||
|
| SUB03END | ABEND処理 | 9999ABDSOR |
|
||||||
|
|
||||||
|
## 使用DB2テーブル
|
||||||
|
|
||||||
|
なし(DB操作なし)
|
||||||
|
|
||||||
|
## 処理フロー
|
||||||
|
1. 初期処理(開始メッセージ→運用日付取得→OPEN→初回読込)
|
||||||
|
2. 1件目をそのままW01出力+前レコード保持
|
||||||
|
3. メイン処理:キー比較
|
||||||
|
- 同一社員+同一日付 かつ 前終了時刻>現開始時刻 → 重複エラー(W02出力)
|
||||||
|
- 同一社員+同一日付 かつ 重複なし → W01出力+前レコード更新
|
||||||
|
- キーブレイク → 前レコード更新+W01出力
|
||||||
|
4. 終了処理(CLOSE→件数出力→終了メッセージ)
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
# ZAN03CHK 使用資源一覧
|
||||||
|
|
||||||
|
## プログラム概要
|
||||||
|
- **プログラムID**: ZAN03CHK
|
||||||
|
- **プログラム名**: 打刻時間照合処理
|
||||||
|
- **処理概要**: OVT-NODUPとPUNCH-SORTEDを突合し申請時間帯の照合を行う。申請時間帯が出勤〜退勤の範囲内かを確認する。申請日が休日かを判定しOVT-TYPEを付加する。
|
||||||
|
|
||||||
|
## 使用ファイル
|
||||||
|
|
||||||
|
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|
||||||
|
|------|---------------|------|-------------|-----------|--------|
|
||||||
|
| ZAN03R01 | OVT-NODUP | 順編成 | F (固定長) | 80B | ZAN01REC |
|
||||||
|
| ZAN03R02 | PUNCH-SORTED | 順編成 | F (固定長) | 80B | なし(自前定義:20B+56B) |
|
||||||
|
| ZAN03R03 | HOLIDAY | 順編成 | F (固定長) | 80B | なし(自前定義:9B+71B) |
|
||||||
|
| ZAN03W01 | OVT-CHECKED | 順編成 | F (固定長) | 80B | ZAN01REC |
|
||||||
|
| ZAN03W02 | ERROR-LOG | 順編成 | V (可変長) | 200B | ZAN05REC |
|
||||||
|
|
||||||
|
## 使用COPY句
|
||||||
|
|
||||||
|
| COPY句 | 用途 | 使用箇所 |
|
||||||
|
|--------|------|---------|
|
||||||
|
| ZAN01REC | レコード定義(R01入力/W01出力) | FILE SECTION |
|
||||||
|
| ZAN05REC | エラーログレコード定義(W02出力) | FILE SECTION |
|
||||||
|
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
|
||||||
|
## 使用サブプログラム
|
||||||
|
|
||||||
|
| サブPGM | 役割 | CALL箇所 |
|
||||||
|
|---------|------|---------|
|
||||||
|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||||
|
|
||||||
|
## 使用DB2テーブル
|
||||||
|
|
||||||
|
なし(DB操作なし)
|
||||||
|
|
||||||
|
## 処理フロー
|
||||||
|
1. 初期処理(開始メッセージ→OPEN)
|
||||||
|
2. 休日ファイル(R03)全件読込→HOLIDAY-TABLE設定(OCCURS 1~366)
|
||||||
|
3. メイン処理:R01とR02のキー比較(社員番号+日付)
|
||||||
|
- R01 < R02 → 打刻データなしエラー(W02出力)
|
||||||
|
- R01 = R02 → 時間範囲チェック
|
||||||
|
- 申請時間帯が出勤〜退勤の範囲内 → OVT-TYPE設定(SEARCH ALL休日判定)→ W01出力
|
||||||
|
- 範囲外 → エラー(W02出力)
|
||||||
|
- R01 > R02 → R02読み飛ばし
|
||||||
|
4. 終了処理(CLOSE→件数出力→終了メッセージ)
|
||||||
|
|
||||||
|
## 備考
|
||||||
|
- SUB01DAT不使用:日付取得不要のためFUNCTION CURRENT-DATEも使用しない
|
||||||
|
- R02FILLER = 56B(PUNCH-SORTEDのフォーマット:社員番号8B+日付8B+出勤4B+退勤4B+予備56B)
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
# ZAN04MAT 使用資源一覧
|
||||||
|
|
||||||
|
## プログラム概要
|
||||||
|
- **プログラムID**: ZAN04MAT
|
||||||
|
- **プログラム名**: 取消マッチング処理
|
||||||
|
- **処理概要**: OVT-SORTED(有効申請)とOVT-CSORT(取消申請)を申請番号で1:1マッチングし、結果を振り分ける。
|
||||||
|
|
||||||
|
## 使用ファイル
|
||||||
|
|
||||||
|
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|
||||||
|
|------|---------------|------|-------------|-----------|--------|
|
||||||
|
| ZAN04R01 | OVT-SORTED | 順編成 | F (固定長) | 80B | ZAN01REC |
|
||||||
|
| ZAN04R02 | OVT-CSORT | 順編成 | F (固定長) | 80B | ZAN01REC |
|
||||||
|
| ZAN04W01 | OVT-MATCHED | 順編成 | F (固定長) | 80B | ZAN02REC |
|
||||||
|
| ZAN04W02 | OVT-DBCLEAN | 順編成 | F (固定長) | 80B | ZAN04REC |
|
||||||
|
| ZAN04W03 | ERROR-LOG | 順編成 | V (可変長) | 200B | ZAN05REC |
|
||||||
|
|
||||||
|
## 使用COPY句
|
||||||
|
|
||||||
|
| COPY句 | 用途 | 使用箇所 |
|
||||||
|
|--------|------|---------|
|
||||||
|
| ZAN01REC | レコード定義(R01/R02入力ファイル) | FILE SECTION |
|
||||||
|
| ZAN02REC | OVT-MATCHEDレコード定義(W01出力) | FILE SECTION |
|
||||||
|
| ZAN04REC | OVT-DBCLEANレコード定義(W02出力) | FILE SECTION |
|
||||||
|
| ZAN05REC | エラーログレコード定義(W03出力) | FILE SECTION |
|
||||||
|
| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
|
||||||
|
## 使用サブプログラム
|
||||||
|
|
||||||
|
| サブPGM | 役割 | CALL箇所 |
|
||||||
|
|---------|------|---------|
|
||||||
|
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
|
||||||
|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||||
|
| SUB03END | ABEND処理 | 9999ABDSOR |
|
||||||
|
|
||||||
|
## 使用DB2テーブル
|
||||||
|
|
||||||
|
なし(DB操作なし)
|
||||||
|
|
||||||
|
## 処理フロー
|
||||||
|
1. 初期処理(開始メッセージ→運用日付取得→OPEN→R01/R02初回読込)
|
||||||
|
2. メイン処理:マッチング(申請番号APPL-IDで1:1突合)
|
||||||
|
- R01キー = R02キー(マッチ) → 取消済み申請をERROR-LOG(W03)に出力
|
||||||
|
- R01キー < R02キー(R01のみ) → 有効申請をOVT-MATCHED(W01)に出力(STRING編集でPROC-SEQ=01付加)
|
||||||
|
- R01キー > R02キー(R02のみ) → 取消申請をOVT-DBCLEAN(W02)に出力
|
||||||
|
3. 終了処理(CLOSE→件数出力→終了メッセージ)
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
# ZAN05CAL 使用資源一覧
|
||||||
|
|
||||||
|
## プログラム概要
|
||||||
|
- **プログラムID**: ZAN05CAL
|
||||||
|
- **プログラム名**: 残業時間集計処理
|
||||||
|
- **処理概要**: OVT-SORTED2(申請番号+処理番号昇順)をキーブレイク集計し、同一APPL-ID内の全明細の加班時間を積算してOVT-SUMMARYに1レコード出力。
|
||||||
|
|
||||||
|
## 使用ファイル
|
||||||
|
|
||||||
|
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|
||||||
|
|------|---------------|------|-------------|-----------|--------|
|
||||||
|
| ZAN05R01 | OVT-SORTED2 | 順編成 | F (固定長) | 80B | ZAN02REC |
|
||||||
|
| ZAN05W01 | OVT-SUMMARY | 順編成 | F (固定長) | 80B | ZAN03REC |
|
||||||
|
|
||||||
|
## 使用COPY句
|
||||||
|
|
||||||
|
| COPY句 | 用途 | 使用箇所 |
|
||||||
|
|--------|------|---------|
|
||||||
|
| ZAN02REC | OVT-MATCHEDレコード定義(R01入力) | FILE SECTION |
|
||||||
|
| ZAN03REC | OVT-SUMMARYレコード定義(W01出力) | FILE SECTION |
|
||||||
|
| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
| ZANTIMAC | 時刻丸めサブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
|
||||||
|
## 使用サブプログラム
|
||||||
|
|
||||||
|
| サブPGM | 役割 | CALL箇所 |
|
||||||
|
|---------|------|---------|
|
||||||
|
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
|
||||||
|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||||
|
| SUB03END | ABEND処理 | 9999ABDSOR |
|
||||||
|
| SUB05TIM | 時刻丸め(0.1h単位切捨) | 2100OUTSOR |
|
||||||
|
|
||||||
|
## 使用DB2テーブル
|
||||||
|
|
||||||
|
なし(DB操作なし)
|
||||||
|
|
||||||
|
## 処理フロー
|
||||||
|
1. 初期処理(開始メッセージ→ACCEPT FROM DATE→運用日付取得→OPEN→初回読込)
|
||||||
|
2. キーブレイク集計ループ
|
||||||
|
- キー変わり(APPL-ID) → 前グループ集計出力+累積リセット+新グループ開始
|
||||||
|
- 同一グループ → 現レコード時間差分をWRK-ACCUM-MINに積算+最新レコード上書き保持
|
||||||
|
- EOF → 最終グループを出力
|
||||||
|
3. 集計出力処理(2100OUTSOR)
|
||||||
|
- DIVIDE REMAINDERで時→分変換
|
||||||
|
- COMPUTE ROUNDED ON SIZE ERROR
|
||||||
|
- SUB05TIM呼出(0.1h単位切捨て丸め)
|
||||||
|
- OVT-SUMMARY出力(グループ先頭START・最新END・積算OVT-HOURS)
|
||||||
|
4. 終了処理(CLOSE→件数出力→終了メッセージ)
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
# ZAN06UPD 使用資源一覧
|
||||||
|
|
||||||
|
## プログラム概要
|
||||||
|
- **プログラムID**: ZAN06UPD
|
||||||
|
- **プログラム名**: 残業統計DB更新処理
|
||||||
|
- **処理概要**: OVT-SUMMARYの各レコードをDBにINSERT/UPSERTし、OVT-DBCLEANの各レコードについて該当申請を取消状態に更新する。DB2テーブル操作を含む全サブシステムB唯一のDB更新プログラム。
|
||||||
|
|
||||||
|
## 使用ファイル
|
||||||
|
|
||||||
|
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|
||||||
|
|------|---------------|------|-------------|-----------|--------|
|
||||||
|
| ZAN06R01 | OVT-SUMMARY | 順編成 | F (固定長) | 80B | ZAN03REC |
|
||||||
|
| ZAN06R02 | OVT-DBCLEAN | 順編成 | F (固定長) | 80B | ZAN04REC |
|
||||||
|
| ZAN06W01 | ERROR-LOG | 順編成 | V (可変長) | 200B | ZAN05REC |
|
||||||
|
|
||||||
|
## 使用COPY句
|
||||||
|
|
||||||
|
| COPY句 | 用途 | 使用箇所 |
|
||||||
|
|--------|------|---------|
|
||||||
|
| ZAN03REC | OVT-SUMMARYレコード定義(R01入力) | FILE SECTION |
|
||||||
|
| ZAN04REC | OVT-DBCLEANレコード定義(R02入力) | FILE SECTION |
|
||||||
|
| ZAN05REC | エラーログレコード定義(W01出力) | FILE SECTION |
|
||||||
|
| ZANDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
| ZANMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
| ZANENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
|
||||||
|
|
||||||
|
## 使用サブプログラム
|
||||||
|
|
||||||
|
| サブPGM | 役割 | CALL箇所 |
|
||||||
|
|---------|------|---------|
|
||||||
|
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
|
||||||
|
| SUB02MSG | メッセージ編集出力 | 4000MSGOUTSOR |
|
||||||
|
| SUB03END | ABEND処理 | 9999ABDSOR |
|
||||||
|
|
||||||
|
## 使用DB2テーブル
|
||||||
|
|
||||||
|
| テーブル名 | 操作種別 | 説明 |
|
||||||
|
|------------|---------|------|
|
||||||
|
| OVT_APPLICATIONS | INSERT / UPDATE | 申請データ登録・更新(取消) |
|
||||||
|
| OVT_MONTHLY | SELECT / INSERT / UPDATE | 月次集計テーブル(加算・減算) |
|
||||||
|
|
||||||
|
## 実行SQL一覧
|
||||||
|
|
||||||
|
| SQL種別 | 内容 | 該当箇所 |
|
||||||
|
|---------|------|---------|
|
||||||
|
| CONNECT TO | DB接続(data\OVERTIME.DB) | 1000ITTSOR |
|
||||||
|
| INSERT INTO ... OVT_APPLICATIONS | 申請データ新規登録 | 2100SUMMARYSOR |
|
||||||
|
| UPDATE ... OVT_APPLICATIONS | 重複時更新(STATUS) | 2100SUMMARYSOR |
|
||||||
|
| SELECT ... OVT_MONTHLY | 月次集計存在確認 | 2110MONTHLYUPSOR |
|
||||||
|
| UPDATE ... OVT_MONTHLY (+加算) | 月次集計加算 | 2110MONTHLYUPSOR |
|
||||||
|
| INSERT INTO ... OVT_MONTHLY | 月次集計新規作成 | 2110MONTHLYUPSOR |
|
||||||
|
| SELECT ... OVT_APPLICATIONS | 取消データ取得 | 2200DBCLEANSOR |
|
||||||
|
| UPDATE ... OVT_APPLICATIONS (取消) | 申請ステータス取消 | 2200DBCLEANSOR |
|
||||||
|
| UPDATE ... OVT_MONTHLY (-減算) | 月次集計減算(リトライ3回) | 2210MONTHLYSUBSOR |
|
||||||
|
| COMMIT WORK | 50件毎/最終コミット | 2300COMMITDBX |
|
||||||
|
| ROLLBACK WORK | DBエラー時ロールバック | 9100DBERRSOR |
|
||||||
|
|
||||||
|
## 処理フロー
|
||||||
|
1. 初期処理(開始メッセージ→運用日付取得→OPEN→DB CONNECT→R01/R02初回読込)
|
||||||
|
2. フェーズ1(OVT-SUMMARY処理):
|
||||||
|
- SQLホスト変数設定(年月抽出・時刻変換・時間→分変換)
|
||||||
|
- OVT_APPLICATIONSにINSERT
|
||||||
|
- 成功 → INSERTカウンタ+1
|
||||||
|
- 重複エラー(SQLCODE≠0) → UPDATE(STATUS更新)
|
||||||
|
- OVT_MONTHLY UPSERT(存在確認SELECT→UPDATE/INSERT)
|
||||||
|
- 50件毎にCOMMIT
|
||||||
|
3. フェーズ2(OVT-DBCLEAN処理):
|
||||||
|
- OVT_APPLICATIONSから既存データSELECT
|
||||||
|
- 該当なし(孤立取消) → ERROR-LOG出力+ABEND(999)
|
||||||
|
- OVT_APPLICATIONSステータス更新('9'=取消)
|
||||||
|
- OVT_MONTHLY減算(3回リトライ付きUPDATE)
|
||||||
|
4. 終了処理(最終COMMIT→CLOSE→件数出力→終了メッセージ)
|
||||||
@@ -45,9 +45,9 @@
|
|||||||
| NO | 機能 | プログラムID | 使用COPY名 |
|
| NO | 機能 | プログラムID | 使用COPY名 |
|
||||||
|----|------|-------------|-----------|
|
|----|------|-------------|-----------|
|
||||||
| 1 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC |
|
| 1 | メッセージ編集出力SUB | SUB02MSG | ZANMSGAC |
|
||||||
| 2 | ABEND処理SUB | SUB03END | ZANENDAC |
|
| 2 | ABEND処理SUB | SUB03END | ZANENDAC |※ コード上では未使用(PERFORM元なし)|
|
||||||
|
|
||||||
※ ZAN03CHKはFUNCTION CURRENT-DATEを使用し、SUB01DATは使用しない。
|
※ ZAN03CHKはSUB01DATを使用しない。日付取得は不要のためFUNCTION CURRENT-DATEも使用しない。
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -64,9 +64,7 @@
|
|||||||
PARM1:コンパイル日時
|
PARM1:コンパイル日時
|
||||||
PARM2:'COMPILED'
|
PARM2:'COMPILED'
|
||||||
1-3.ワークエリアの初期化
|
1-3.ワークエリアの初期化
|
||||||
1-4.日付取得(FUNCTION CURRENT-DATE)
|
1-4.使用ファイルのオープン
|
||||||
FUNCTION CURRENT-DATEにより現在日付を取得する。
|
|
||||||
1-5.使用ファイルのオープン
|
|
||||||
1-6.HOLIDAY-FILEを全件読込しHOLIDAY-TABLEに設定する。(1300HOLIDAYSOR)
|
1-6.HOLIDAY-FILEを全件読込しHOLIDAY-TABLEに設定する。(1300HOLIDAYSOR)
|
||||||
1-7.R01を読み込む。(1100R01INNSOR)(1回目)
|
1-7.R01を読み込む。(1100R01INNSOR)(1回目)
|
||||||
1-8.R02を読み込む。(1200R02INNSOR)(1回目)
|
1-8.R02を読み込む。(1200R02INNSOR)(1回目)
|
||||||
|
|||||||
@@ -101,8 +101,8 @@
|
|||||||
|
|
||||||
3.積算処理(2200ACCUMSOR)
|
3.積算処理(2200ACCUMSOR)
|
||||||
3-1.現レコードの時刻→分変換
|
3-1.現レコードの時刻→分変換
|
||||||
DIVIDE WRK-KEY-START BY 100 GIVING WRK-START-HOUR REMAINDER WRK-START-MIN
|
DIVIDE R01START-TIME BY 100 GIVING WRK-START-HOUR REMAINDER WRK-START-MIN
|
||||||
DIVIDE WRK-KEY-END BY 100 GIVING WRK-END-HOUR REMAINDER WRK-END-MIN
|
DIVIDE R01END-TIME BY 100 GIVING WRK-END-HOUR REMAINDER WRK-END-MIN
|
||||||
COMPUTE WRK-START-TOTAL = WRK-START-HOUR * 60 + WRK-START-MIN
|
COMPUTE WRK-START-TOTAL = WRK-START-HOUR * 60 + WRK-START-MIN
|
||||||
COMPUTE WRK-END-TOTAL = WRK-END-HOUR * 60 + WRK-END-MIN
|
COMPUTE WRK-END-TOTAL = WRK-END-HOUR * 60 + WRK-END-MIN
|
||||||
3-2.差分計算
|
3-2.差分計算
|
||||||
|
|||||||
+14
-10
@@ -141,16 +141,20 @@
|
|||||||
UPDATED-AT = CURRENT TIMESTAMP
|
UPDATED-AT = CURRENT TIMESTAMP
|
||||||
WHERE APPL-ID = :WRK-SQL-APPL-ID
|
WHERE APPL-ID = :WRK-SQL-APPL-ID
|
||||||
2-2-4.YEAR-MONTH抽出:APPL-DATE(1:6)
|
2-2-4.YEAR-MONTH抽出:APPL-DATE(1:6)
|
||||||
2-2-5.OVT-MONTHLYから減算(2210MONTHLYSUBSOR)
|
2-2-5.OVT-MONTHLYから減算(2210MONTHLYSUBSOR)
|
||||||
【EXEC SQL UPDATE(減算)+COBOL SUBTRACT検証】
|
【EXEC SQL UPDATE(減算)+COBOL SUBTRACT検証】
|
||||||
UPDATE OVT-MONTHLY SET
|
UPDATE OVT-MONTHLY SET
|
||||||
OVT-HOURS = OVT-HOURS - :WRK-SQL-OVT-HOURS,
|
OVT-HOURS = OVT-HOURS - :WRK-SQL-OVT-HOURS,
|
||||||
OVT-COUNT = OVT-COUNT - 1,
|
OVT-COUNT = OVT-COUNT - 1,
|
||||||
UPDATED-AT = CURRENT TIMESTAMP
|
UPDATED-AT = CURRENT TIMESTAMP
|
||||||
WHERE EMP-ID = :WRK-SQL-EMP-ID
|
WHERE EMP-ID = :WRK-SQL-EMP-ID
|
||||||
AND YEAR-MONTH = :WRK-SQL-YEAR-MONTH
|
AND YEAR-MONTH = :WRK-SQL-YEAR-MONTH
|
||||||
AND OVT-TYPE = :WRK-SQL-OVT-TYPE
|
AND OVT-TYPE = :WRK-SQL-OVT-TYPE
|
||||||
SQLCODE異常時は9100DBERRSORへ
|
リトライ制御:PERFORM TEST AFTER VARYING(最大3回)
|
||||||
|
SQLCODE≠0時はROLLBACKしてリトライ
|
||||||
|
全リトライ消費後もSQLCODE≠0の場合、
|
||||||
|
ERROR-LOG(カテゴリ=21)に出力し9999ABDSORで異常終了する
|
||||||
|
(9100DBERRSORは通らない)
|
||||||
2-2-6.CUN-COMMITが閾値以上の場合、COMMIT実行(2300COMMITDBX)
|
2-2-6.CUN-COMMITが閾値以上の場合、COMMIT実行(2300COMMITDBX)
|
||||||
|
|
||||||
3.OVT-MONTHLY UPSERT処理(2110MONTHLYUPSOR)
|
3.OVT-MONTHLY UPSERT処理(2110MONTHLYUPSOR)
|
||||||
|
|||||||
Reference in New Issue
Block a user