Subsystem B cleanup: dead code removal, sort-key fix, ZAN04MAT/ZAN05CAL/ZAN06UPD updates, resource lists added
This commit is contained in:
@@ -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→件数出力→終了メッセージ)
|
||||
Reference in New Issue
Block a user