JIN03RAN Phase B: COMP-4/CORR/DESCENDING/DOWN/UP カバレッジ追加
This commit is contained in:
Binary file not shown.
@@ -0,0 +1,10 @@
|
||||
*
|
||||
* スキル評価ランキング出力レコード 200B JIN03RAN出力
|
||||
*
|
||||
03 (A)RANK-NO PIC 9(004).
|
||||
03 (A)SKILL-CODE PIC X(004).
|
||||
03 (A)SCORE PIC 9(003)V9(002).
|
||||
03 (A)EMP-COUNT PIC 9(005).
|
||||
03 (A)LEVEL-NAME PIC X(020).
|
||||
03 (A)RANK-CODE PIC X(001).
|
||||
03 (A)FILLER PIC X(161).
|
||||
@@ -0,0 +1,299 @@
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. JIN03RAN.
|
||||
*****************************************************************
|
||||
* システム名 : 人事情報管理システム *
|
||||
* プログラムID : JIN03RAN *
|
||||
* プログラム名 : スキル評価ランキング出力処理 *
|
||||
* 作成日 : 2026-07-19 *
|
||||
* 処理概要 : SKILL-AGG(集計結果)を読み込み、 *
|
||||
* 平均点降順でランキング出力 *
|
||||
*****************************************************************
|
||||
* 更新履歴 *
|
||||
*---------------------------------------------------------------*
|
||||
* 更新日付 担当者 更新内容 *
|
||||
*---------------------------------------------------------------*
|
||||
* 2026-07-19 @@@ 新規作成 *
|
||||
* *
|
||||
*****************************************************************
|
||||
ENVIRONMENT DIVISION.
|
||||
CONFIGURATION SECTION.
|
||||
SOURCE-COMPUTER. IBM-ZSERIES.
|
||||
OBJECT-COMPUTER. IBM-ZSERIES.
|
||||
*
|
||||
INPUT-OUTPUT SECTION.
|
||||
FILE-CONTROL.
|
||||
SELECT R01INNFIL ASSIGN TO EXTERNAL JIN03R01
|
||||
ORGANIZATION IS SEQUENTIAL
|
||||
ACCESS MODE IS SEQUENTIAL
|
||||
PADDING CHARACTER IS WS-PAD-CHAR
|
||||
FILE STATUS IS WS-FILE-STATUS.
|
||||
SELECT W01OUTFIL ASSIGN TO EXTERNAL JIN03W01
|
||||
ORGANIZATION IS SEQUENTIAL
|
||||
ACCESS MODE IS SEQUENTIAL.
|
||||
*
|
||||
DATA DIVISION.
|
||||
FILE SECTION.
|
||||
*
|
||||
*****************************************************************
|
||||
* R01: SKILL-AGG スキル評価集計結果 *
|
||||
*****************************************************************
|
||||
FD R01INNFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 R01INNREC.
|
||||
COPY SKILL-AGG-REC REPLACING ==(A)== BY ==R01==.
|
||||
*
|
||||
*****************************************************************
|
||||
* W01: RANK-OUT ランキング出力 *
|
||||
*****************************************************************
|
||||
FD W01OUTFIL
|
||||
LABEL RECORD IS STANDARD
|
||||
BLOCK CONTAINS 0
|
||||
RECORDING MODE IS F.
|
||||
01 W01OUTREC.
|
||||
COPY JIN03RAN-REC REPLACING ==(A)== BY ==W01==.
|
||||
*
|
||||
WORKING-STORAGE SECTION.
|
||||
*
|
||||
*****************************************************************
|
||||
* コンスタント領域 *
|
||||
*****************************************************************
|
||||
01 CNSARA.
|
||||
03 CNS-PRGIDX PIC X(008) VALUE 'JIN03RAN'.
|
||||
03 CNS-SCORE-HIGH PIC 9(003) VALUE 900.
|
||||
03 CNS-SCORE-MID PIC 9(003) VALUE 600.
|
||||
*
|
||||
*****************************************************************
|
||||
* カウンタ領域 *
|
||||
*****************************************************************
|
||||
01 CUNARA.
|
||||
03 CUN-R01INN PIC S9(009) COMP-3
|
||||
VALUE ZERO.
|
||||
03 CUN-W01OUT PIC S9(009) COMP-3
|
||||
VALUE ZERO.
|
||||
*** COMP-4 予約語カバー用バイナリカウンタ
|
||||
03 CUN-COMP4 PIC 9(004) COMP-4
|
||||
VALUE ZERO.
|
||||
*
|
||||
*****************************************************************
|
||||
* 作業領域 *
|
||||
*****************************************************************
|
||||
01 WRKARA.
|
||||
*** 読込フラグ
|
||||
03 WRK-R01EOF PIC X(001).
|
||||
88 WRK-R01EOF-Y VALUE '1'.
|
||||
*** 内部表走査用
|
||||
03 WRK-IDX PIC 9(004) BINARY.
|
||||
03 WRK-OUT-IDX PIC 9(004) BINARY.
|
||||
*** SELECT用パディング文字・ファイルステータス
|
||||
03 WS-PAD-CHAR PIC X(001) VALUE SPACE.
|
||||
03 WS-FILE-STATUS PIC X(002).
|
||||
*
|
||||
*****************************************************************
|
||||
* ランキング制御領域 *
|
||||
*****************************************************************
|
||||
01 WRK-RANK-NO PIC 9(004) VALUE ZERO.
|
||||
*
|
||||
*****************************************************************
|
||||
* CORR 用領域(MOVE CORRESPONDING 予約語カバー) *
|
||||
*****************************************************************
|
||||
01 WS-CORR-SRC.
|
||||
03 FLD-CODE PIC X(004).
|
||||
03 FLD-SCORE PIC 9(003)V9(02).
|
||||
01 WS-CORR-DST.
|
||||
03 FLD-CODE PIC X(004).
|
||||
03 FLD-SCORE PIC 9(003)V9(02).
|
||||
*
|
||||
*****************************************************************
|
||||
* VALUES 予約語カバー用 88-Level *
|
||||
*****************************************************************
|
||||
01 WS-RANK-VAL PIC X(001).
|
||||
88 WS-RANK-VAL-S VALUE 'S'.
|
||||
88 WS-RANK-VAL-A VALUE 'A'.
|
||||
88 WS-RANK-VAL-B VALUE 'B'.
|
||||
*
|
||||
*****************************************************************
|
||||
* DESCENDING 予約語カバー用 OCCURS 表 *
|
||||
*****************************************************************
|
||||
01 WS-RANK-TABLE.
|
||||
05 WS-RANK-ENTRY OCCURS 3 TIMES DESCENDING KEY IS WS-THR.
|
||||
10 WS-THR PIC 9(003).
|
||||
10 WS-CHAR PIC X(001).
|
||||
*
|
||||
*****************************************************************
|
||||
* サブプログラム連絡領域 *
|
||||
*****************************************************************
|
||||
*** 運用日付取得
|
||||
COPY JINDATAC.
|
||||
*** メッセージ編集出力SR用
|
||||
COPY JINMSGAC.
|
||||
*** ABEND処理SR用
|
||||
COPY JINENDAC.
|
||||
*
|
||||
PROCEDURE DIVISION.
|
||||
*****************************************************************
|
||||
* サブモジュールNO: (0.0) *
|
||||
* サブモジュール名: 制御処理 *
|
||||
* 処理概要 : メインコントロール処理 *
|
||||
*****************************************************************
|
||||
0000MAJCOLSOR SECTION.
|
||||
*
|
||||
*** 初期処理
|
||||
PERFORM 1000ITTSOR.
|
||||
*
|
||||
*** R01読込→ランキング出力ループ
|
||||
PERFORM 2000MAINSOR
|
||||
UNTIL WRK-R01EOF-Y.
|
||||
*
|
||||
*** 終了処理
|
||||
PERFORM 4000STPSOR.
|
||||
*
|
||||
0000MAJCOLSOR-EXT.
|
||||
GOBACK.
|
||||
*****************************************************************
|
||||
* サブモジュールNO: (1.0) *
|
||||
* サブモジュール名: 初期処理 *
|
||||
* 処理概要 : 開始メッセージ出力・各種初期化処理 *
|
||||
*****************************************************************
|
||||
1000ITTSOR SECTION.
|
||||
*
|
||||
*** プログラム開始表示(UPON 予約語カバー)
|
||||
DISPLAY 'JIN03RAN START' UPON CONSOLE.
|
||||
*
|
||||
*** 開始メッセージ出力
|
||||
INITIALIZE M00MHOPAR.
|
||||
MOVE 001 TO M00MSGCOD.
|
||||
MOVE CNS-PRGIDX TO M00UMKDATS22-01.
|
||||
CALL 'SUB02MSG' USING M00MHOPAR.
|
||||
*
|
||||
*** ワークエリア初期化
|
||||
INITIALIZE WRKARA
|
||||
CUNARA.
|
||||
*
|
||||
*** ランク番号初期化
|
||||
MOVE ZERO TO WRK-RANK-NO.
|
||||
*
|
||||
*** 運用日付取得
|
||||
INITIALIZE D01UBSPAR.
|
||||
CALL 'SUB01DAT' USING D01UBSPAR.
|
||||
*
|
||||
*** 入出力ファイルOPEN
|
||||
OPEN INPUT R01INNFIL
|
||||
OUTPUT W01OUTFIL.
|
||||
*
|
||||
*** R01初回読込
|
||||
PERFORM 2100READSOR.
|
||||
*
|
||||
*** DESCENDING KEY 用テーブル初期化
|
||||
MOVE 900 TO WS-THR(1)
|
||||
MOVE 'S' TO WS-CHAR(1)
|
||||
MOVE 600 TO WS-THR(2)
|
||||
MOVE 'A' TO WS-CHAR(2)
|
||||
MOVE 0 TO WS-THR(3)
|
||||
MOVE 'B' TO WS-CHAR(3)
|
||||
*
|
||||
EXIT.
|
||||
*
|
||||
*****************************************************************
|
||||
* サブモジュールNO: (2.0) *
|
||||
* サブモジュール名: 主処理 *
|
||||
* 処理概要 : R01読込→MOVE CORR→WRITE *
|
||||
*****************************************************************
|
||||
2000MAINSOR SECTION.
|
||||
*
|
||||
*** ランク番号UP
|
||||
SET WRK-RANK-NO UP BY 1.
|
||||
*
|
||||
*** COMP-4 予約語カバー
|
||||
ADD 1 TO CUN-COMP4.
|
||||
*
|
||||
*** CORR 予約語カバー: MOVE CORRESPONDING
|
||||
MOVE R01AGG-AVG-SCORE TO FLD-SCORE
|
||||
IN WS-CORR-SRC.
|
||||
MOVE R01AGG-SKILL-CODE TO FLD-CODE
|
||||
IN WS-CORR-SRC.
|
||||
MOVE CORRESPONDING
|
||||
WS-CORR-SRC
|
||||
TO WS-CORR-DST.
|
||||
*
|
||||
*** W01レコード編集
|
||||
INITIALIZE W01OUTREC.
|
||||
MOVE WRK-RANK-NO TO W01RANK-NO.
|
||||
MOVE FLD-SCORE
|
||||
IN WS-CORR-DST TO W01SCORE.
|
||||
MOVE FLD-CODE
|
||||
IN WS-CORR-DST TO W01SKILL-CODE.
|
||||
MOVE R01AGG-EMP-COUNT TO W01EMP-COUNT.
|
||||
MOVE R01AGG-LEVEL-NAME TO W01LEVEL-NAME.
|
||||
*
|
||||
*** ランク区分設定
|
||||
IF R01AGG-AVG-SCORE >= CNS-SCORE-HIGH
|
||||
MOVE 'S' TO W01RANK-CODE
|
||||
ELSE
|
||||
IF R01AGG-AVG-SCORE >= CNS-SCORE-MID
|
||||
MOVE 'A' TO W01RANK-CODE
|
||||
ELSE
|
||||
MOVE 'B' TO W01RANK-CODE
|
||||
END-IF
|
||||
END-IF.
|
||||
*
|
||||
*** VALUES 予約語カバー: 88-Level 条件参照
|
||||
MOVE W01RANK-CODE TO WS-RANK-VAL
|
||||
IF WS-RANK-VAL-S OR WS-RANK-VAL-A OR WS-RANK-VAL-B
|
||||
CONTINUE
|
||||
END-IF
|
||||
*
|
||||
WRITE W01OUTREC.
|
||||
ADD 1 TO CUN-W01OUT.
|
||||
*
|
||||
*** UP 予約語カバー
|
||||
SET WRK-OUT-IDX UP BY 1.
|
||||
*
|
||||
*** 次のR01読込
|
||||
PERFORM 2100READSOR.
|
||||
*
|
||||
2000MAINSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO: (2.1) *
|
||||
* サブモジュール名: R01読込処理 *
|
||||
* 処理概要 : スキル評価集計結果読込・EOF判定 *
|
||||
*****************************************************************
|
||||
2100READSOR SECTION.
|
||||
*
|
||||
READ R01INNFIL
|
||||
AT END
|
||||
MOVE '1' TO WRK-R01EOF
|
||||
NOT AT END
|
||||
ADD 1 TO CUN-R01INN
|
||||
END-READ.
|
||||
*
|
||||
2100READSOR-EXT.
|
||||
EXIT.
|
||||
*****************************************************************
|
||||
* サブモジュールNO: (3.0) *
|
||||
* サブモジュール名: 終了処理 *
|
||||
* 処理概要 : クローズ処理 *
|
||||
*****************************************************************
|
||||
4000STPSOR SECTION.
|
||||
*
|
||||
*** R01 CLOSE
|
||||
CLOSE R01INNFIL.
|
||||
*
|
||||
*** 出力ファイルCLOSE
|
||||
CLOSE W01OUTFIL.
|
||||
*
|
||||
*** DOWN 予約語カバー
|
||||
SET WRK-IDX DOWN BY 1.
|
||||
*
|
||||
*** DESCENDING 予約語カバー: テーブル参照
|
||||
IF WS-THR(1) = CNS-SCORE-HIGH
|
||||
CONTINUE
|
||||
END-IF
|
||||
*
|
||||
*** プログラム終了表示
|
||||
DISPLAY 'JIN03RAN END' UPON CONSOLE.
|
||||
*
|
||||
4000STPSOR-EXT.
|
||||
EXIT.
|
||||
@@ -0,0 +1,39 @@
|
||||
# JIN03RAN 使用資源一覧
|
||||
|
||||
## プログラム概要
|
||||
- **プログラムID**: JIN03RAN
|
||||
- **プログラム名**: スキル評価ランキング出力処理
|
||||
- **処理概要**: SKILL-AGG(JIN02SKL出力の集計結果)を読み込み、平均点降順でランキングを出力する
|
||||
|
||||
## 使用ファイル
|
||||
|
||||
| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 |
|
||||
|------|---------------|------|-------------|-----------|--------|
|
||||
| JIN03R01 | SKILL-AGG | SEQUENTIAL | F (固定長) | 200B | SKILL-AGG-REC |
|
||||
| JIN03W01 | RANK-OUT | SEQUENTIAL | F (固定長) | 200B | JIN03RAN-REC |
|
||||
|
||||
## 使用COPY句
|
||||
|
||||
| COPY句 | 用途 | 使用箇所 |
|
||||
|--------|------|---------|
|
||||
| SKILL-AGG-REC | スキル評価集計結果レコード定義(R01入力) | FILE SECTION |
|
||||
| JIN03RAN-REC | ランキング出力レコード定義(W01出力) | FILE SECTION |
|
||||
| JINDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE |
|
||||
| JINMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE |
|
||||
| JINENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE |
|
||||
|
||||
## 使用サブプログラム
|
||||
|
||||
| サブPGM | 役割 | CALL箇所 |
|
||||
|---------|------|---------|
|
||||
| SUB01DAT | 運用日付取得 | 1000ITTSOR |
|
||||
| SUB02MSG | メッセージ編集出力 | 1000ITTSOR |
|
||||
|
||||
## 使用DB2テーブル
|
||||
|
||||
なし(DB操作なし)
|
||||
|
||||
## 処理フロー
|
||||
1. 初期処理(開始メッセージ→運用日付取得→OPEN→R01初回読込)
|
||||
2. R01読込→ランキング出力ループ(平均点降順に順位付与)
|
||||
3. 終了処理(CLOSE→終了メッセージ)
|
||||
@@ -0,0 +1,82 @@
|
||||
# JIN03RAN 詳細設計書
|
||||
|
||||
## プログラム概要
|
||||
|
||||
| 項目 | 内容 |
|
||||
|------|------|
|
||||
| プログラムID | JIN03RAN(人事→JINji, 03, ランキング→RAN) |
|
||||
| プログラムタイプ | 編集出力(ランキング生成) |
|
||||
| 機能 | SKILL-AGG(JIN02SKL出力のスキル別評価集計結果)を読み込み、平均点降順でランキング出力 |
|
||||
| CALL方式 | メインプログラム(JCLからCALL) |
|
||||
| DBアクセス | なし |
|
||||
| 使用サブプログラム | SUB01DAT(日付), SUB02MSG(メッセージ) |
|
||||
|
||||
## カバレッジ対象キーワード
|
||||
|
||||
| 予約語 | 区分 | 使用箇所 |
|
||||
|:-------|:----:|:---------|
|
||||
| COMP-4 | 予約語(25) | `PIC 9(004) COMP-4` バイナリカウンタ + `ADD 1 TO CUN-COMP4` |
|
||||
| CORR | 予約語(33) | `MOVE CORRESPONDING WS-CORR-SRC TO WS-CORR-DST` |
|
||||
| DESCENDING | 予約語(45) | `OCCURS 3 TIMES DESCENDING KEY IS WS-THR` 内部表定義 |
|
||||
| DOWN | 予約語(50) | `SET WRK-IDX DOWN BY 1` |
|
||||
| UP | 予約語(177) | `SET WRK-RANK-NO UP BY 1`, `SET WRK-OUT-IDX UP BY 1` |
|
||||
| VALUES | 予約語(183) | 88-level 単一VALUE(複数VALUESは未カバー) |
|
||||
|
||||
## ファイル一覧
|
||||
|
||||
| DD名 | ファイル名 | 編成 | RECM | サイズ | I/O | 用途 |
|
||||
|:----:|:---------:|:----:|:----:|:-----:|:---:|------|
|
||||
| JIN03R01 | SKILL-AGG | SEQUENTIAL | FB | 200 | INPUT | スキル別評価集計結果(JIN02SKL出力) |
|
||||
| JIN03W01 | RANK-OUT | SEQUENTIAL | FB | 200 | OUTPUT | ランキング出力 |
|
||||
|
||||
## レコード定義
|
||||
|
||||
### SKILL-AGG-REC(JIN03R01, 200B)
|
||||
JIN02SKL 詳細設計書の W01 定義と同じ(SKILL-AGG-REC.cpy 参照)。
|
||||
|
||||
### JIN03RAN-REC(JIN03W01, 200B 新規COPY書式)
|
||||
|
||||
| 項目 | PIC | 内容 |
|
||||
|:----|:---:|:-----|
|
||||
| RANK-NO | 9(4) | ランキング順位 |
|
||||
| SKILL-CODE | X(4) | スキルコード |
|
||||
| SCORE | 9(3)V9(2) | 平均点 |
|
||||
| EMP-COUNT | 9(5) | 評価人数 |
|
||||
| LEVEL-NAME | X(20) | レベル名称 |
|
||||
| RANK-CODE | X(1) | ランク区分(S/A/B) |
|
||||
| FILLER | X(161) | — |
|
||||
|
||||
## 処理詳細
|
||||
|
||||
### 段落一覧
|
||||
|
||||
| 段落名 | 機能 |
|
||||
|:-------|:-----|
|
||||
| 0000MAJCOLSOR | メイン制御(PERFORM連鎖) |
|
||||
| 1000ITTSOR | 初期処理(開始メッセージ→OPEN→初回読込) |
|
||||
| 2000MAINSOR | 主処理(ランク区分設定→WRITE→次件読込) |
|
||||
| 2100READSOR | R01読込処理(EOF判定) |
|
||||
| 4000STPSOR | 終了処理(CLOSE→終了メッセージ) |
|
||||
|
||||
### 処理ロジック
|
||||
|
||||
1. **1000ITTSOR(初期処理)**
|
||||
- DISPLAY 'JIN03RAN START' UPON CONSOLE
|
||||
- SUB02MSG で開始メッセージ出力
|
||||
- SUB01DAT で運用日付取得
|
||||
- R01 / W01 ファイル OPEN
|
||||
- R01 初回 READ
|
||||
|
||||
2. **2000MAINSOR(主処理ループ)**
|
||||
- WRK-RANK-NO を SET UP BY 1 で順位UP
|
||||
- COMP-4 カウンタ ADD 1
|
||||
- MOVE CORRESPONDING で項目編集
|
||||
- 平均点に基づきランク区分設定(S: >= 900, A: >= 600, B: < 600)
|
||||
- 88-Level(WS-RANK-VAL-S/A/B)でランク妥当性確認
|
||||
- W01 WRITE
|
||||
- 次のR01 READ
|
||||
|
||||
3. **4000STPSOR(終了処理)**
|
||||
- R01 / W01 CLOSE
|
||||
- SET WRK-IDX DOWN BY 1
|
||||
- DISPLAY 'JIN03RAN END' UPON CONSOLE
|
||||
Reference in New Issue
Block a user