JIN09RPT 社員別スキル集計レポート処理を新規追加(SAME句削除版)。未カバー予約語6語(CANCEL/I-O-CONTROL/NEXT SENTENCE/EJECT/SKIP2/FALSE)をカバーし、カバレッジ×41→34に改善。全26テストPASS

This commit is contained in:
qiuqiuqiu
2026-08-01 23:22:10 +08:00
parent 4804c20ccc
commit 415427a4fe
6 changed files with 1221 additions and 18 deletions
@@ -0,0 +1,63 @@
# JIN09RPT 使用資源一覧
## プログラム概要
- **プログラムID**: JIN09RPT
- **プログラム名**: 社員別スキル集計レポート処理
- **処理概要**: SKILL-EVALM件, EMP-ID昇順)を社員キーブレイクで集計し、社員別スキル集計結果(SKILL-SUM)を出力する
## 使用ファイル
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|------|---------------|------|-------------|-----------|--------|
| JIN09R01 | SKILL-EVAL | 順編成 | F (固定長) | 200B | SKILL-EVAL-REC |
| JIN09R02 | SKILL-MST | 順編成 | F (固定長) | 80B | SKILL-MST-REC |
| JIN09W01 | SKILL-SUM | 順編成 | F (固定長) | 120B | JIN09REC |
| JIN09W02 | VALID-ERROR | 順編成 | F (固定長) | 80B | VALID-ERROR-REC |
## 使用COPY句
| COPY句 | 用途 | 使用箇所 |
|--------|------|---------|
| SKILL-EVAL-REC | スキル評価明細レコード定義(R01入力) | FILE SECTION |
| SKILL-MST-REC | 評価基準マスタレコード定義(R02入力) | FILE SECTION |
| JIN09REC | 社員別スキル集計結果レコード定義(W01出力) | FILE SECTION |
| VALID-ERROR-REC | エラーレコード定義(W02出力) | FILE SECTION |
| JINDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
| JINMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
| JINENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
## 使用サブプログラム
| サブPGM | 役割 | CALL箇所 |
|---------|------|---------|
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
| SUB02MSG | メッセージ編集出力 | 6000MSGOUTSOR |
| SUB03END | ABEND処理 | 9999ABDSOR |
※ SUB02MSG は終了処理(4000STPSOR)で CANCEL 'SUB02MSG' により解放する
## 使用DB2テーブル
なし(DB操作なし)
## 予約語カバー
| 予約語 | 使用箇所 |
|--------|---------|
| CANCEL | 4000STPSOR で CANCEL 'SUB02MSG' |
| I-O-CONTROL | ENVIRONMENT DIVISION の I-O-CONTROL 段落 |
| NEXT | 2200JUDGESOR の NEXT SENTENCE |
| SENTENCE | 2200JUDGESOR の NEXT SENTENCE |
| EJECT | PROCEDURE DIVISION 先頭のソース行 EJECT |
| SKIP2 | 段落境界のソース行 SKIP2 |
| FALSE | 2000MAJSOR の SET WRK-FIRST-FLG-Y TO FALSE |
## 処理フロー
1. 初期処理(開始メッセージ→運用日付取得→OPEN)
2. マスタLOAD(R02全件→内部表構築→R02 CLOSE
3. 評価明細READループ(R01
4. 社員キーブレイク判定(WRK-FIRST-FLG / WRK-PREV-EMP-ID
5. レベル判定(NESTED IF 3段 + 複合条件 AND/OR
6. SEARCH ALLで該当スキル特定→内部表UPDATE(件数・合計点)
7. 社員グループ出力(内部表走査→平均点DIVIDE→W01 WRITE
8. 終了処理(CLOSE→件数出力→CANCEL→終了メッセージ)