JIN02SKL 詳細設計書
プログラム概要
| 項目 |
内容 |
| プログラムID |
JIN02SKL(人事→JINji, 02, スキルSukiru別評価集計→SKL) |
| プログラムタイプ |
19(M:N→N件マッチング+集計) |
| 機能 |
スキル評価明細(M件)× 評価基準マスタ(N件)→ スキル別評価集計(N件出力) |
| CALL方式 |
メインプログラム(JCLからCALL) |
| DBアクセス |
なし |
| 使用サブプログラム |
SUB01DAT(日付), SUB02MSG(メッセージ), SUB03END(アベンド) |
ファイル一覧
| DD名 |
ファイル名 |
編成 |
RECM |
サイズ |
I/O |
用途 |
| JIN02R01 |
SKILL-EVAL |
SEQUENTIAL |
FB |
200 |
INPUT |
スキル評価明細データ(M件) |
| JIN02R02 |
SKILL-MST |
SEQUENTIAL |
FB |
80 |
INPUT |
スキル評価基準マスタ(N件→内部表LOAD) |
| JIN02W01 |
SKILL-AGG |
SEQUENTIAL |
FB |
200 |
OUTPUT |
スキル別評価集計結果(N件出力) |
| JIN02W02 |
VALID-ERROR |
SEQUENTIAL |
FB |
80 |
OUTPUT |
エラーレコード |
レコード定義
SKILL-EVAL-REC(JIN02R01, 200B)
| 項目 |
PIC |
内容 |
備考 |
| SKILL-CODE |
X(4) |
スキルコード |
|
| EMP-ID |
X(8) |
社員番号 |
|
| EMP-NAME |
X(40) |
社員氏名 |
|
| EVAL-DATE |
X(8) |
評価日 YYYYMMDD |
|
| SCORE |
9(3) |
評価点数 |
1-999 |
| PADDING |
X(137) |
FILLER |
|
SKILL-MST-REC(JIN02R02, 80B)
| 項目 |
PIC |
USAGE |
内容 |
備考 |
| MST-SKILL-CODE |
X(4) |
— |
スキルコード |
SEARCH ALL キー |
| MST-LEVEL |
9(2) |
BINARY |
レベル |
BINARY 予約語使用 |
| MST-SCORE-FROM |
9(3) |
— |
下限点数 |
|
| MST-SCORE-TO |
9(3) |
— |
上限点数 |
|
| MST-LEVEL-NAME |
X(20) |
— |
レベル名称 |
|
| FILLER |
X(048) |
— |
— |
|
SKILL-AGG-REC(JIN02W01, 200B)
| 項目 |
PIC |
USAGE |
内容 |
備考 |
| AGG-SKILL-CODE |
X(4) |
— |
スキルコード |
|
| AGG-LEVEL |
9(2) |
PACKED-DECIMAL |
レベル |
PACKED-DECIMAL 予約語使用 |
| AGG-LEVEL-NAME |
X(20) |
— |
レベル名称 |
|
| AGG-EMP-COUNT |
9(5) |
BINARY |
人数 |
BINARY 予約語使用 |
| AGG-COUNT-EDIT |
ZZZZ9 |
— |
人数編集表示 |
ZZZZ9 PICTURE記号 |
| AGG-AVG-SCORE |
9(3)V9(2) |
PACKED-DECIMAL |
平均点数 |
|
| FILLER |
X(162) |
— |
— |
|
VALID-ERROR-REC(JIN02W02, 80B)
JIN01KNS と共用。VALID-ERROR-REC.cpy(独立したCOPY書式)を参照。
内部表
WS-SKILL-TABLE(OCCURS DEPENDING ON)
| 項目 |
PIC |
USAGE |
内容 |
| TBL-SKILL-CODE |
X(4) |
— |
スキルコード |
| TBL-LEVEL |
9(2) |
BINARY |
レベル |
| TBL-LEVEL-NAME |
X(20) |
— |
レベル名称 |
| TBL-EMP-COUNT |
9(5) |
BINARY |
件数 |
| TBL-SCORE-SUM |
9(8) |
BINARY |
合計点 |
| TBL-MAX-ENTRY |
99 |
BINARY |
最大エントリ数(100) |
SEARCH ALL のキー項目:TBL-SKILL-CODE
処理詳細
段落一覧
| 段落名 |
機能 |
| JIN02SKL-OPEN |
ファイルOPEN + 内部表初期化 |
| JIN02SKL-LOAD-MST |
評価基準マスタ(R02)全件LOAD → 内部表構築 |
| JIN02SKL-READ-EVAL |
評価明細(R01)1件READ |
| JIN02SKL-AGGREGATE |
集計主処理(SEARCH ALL + 件数加算 + 合計加算) |
| JIN02SKL-SEARCH-LVL |
SEARCH ALL で該当レベルを特定 |
| JIN02SKL-UPDATE-TBL |
内部表の件数・合計点をUPDATE |
| JIN02SKL-OUTPUT |
内部表を降順走査→平均点算出→WRITE |
| JIN02SKL-GET-AVG |
DIVIDEで平均点算出(END-DIVIDE) |
| JIN02SKL-DESCEND |
PERFORM VARYING 降順走査(DESCENDING) |
| JIN02SKL-WRITE-AGG |
1エントリWRITE |
| JIN02SKL-CLOSE |
ファイルCLOSE + GOBACK |
処理ロジック
初期処理(JIN02SKL-OPEN)
- JIN02R01 / JIN02R02 / JIN02W01 / JIN02W02 を OPEN
- WS-TBL-ENTRY を INITIALIZE(内部表初期化)
マスタLOAD(JIN02SKL-LOAD-MST)
- JIN02R02 から SKILL-MST を全件 LOAD
- ADD 1 TO WS-MAX-ENTRY END-ADD
- 内部表 WS-SKILL-TABLE に設定(MST-SKILL-CODE, MST-LEVEL, MST-LEVEL-NAME, TBL-EMP-COUNT=0, TBL-SCORE-SUM=0)
- AT END → JIN02SKL-READ-EVAL へ
- JIN02R02 を CLOSE(不要になったので)
主処理ループ(JIN02SKL-READ-EVAL → JIN02SKL-AGGREGATE → ループ)
- JIN02R01 から SKILL-EVAL を1件 READ
- AT END → JIN02SKL-OUTPUT へ
- JIN02SKL-AGGREGATE を PERFORM
集計処理(JIN02SKL-AGGREGATE)
- JIN02SKL-SEARCH-LVL を呼出(SEARCH ALL)
- WHEN 該当 → JIN02SKL-UPDATE-TBL を PERFORM
- WHEN NOT 該当 → JIN02SKL-WRITE-ERR を PERFORM
SEARCH ALL(JIN02SKL-SEARCH-LVL)
- SEARCH ALL WS-SKILL-TABLE
- AT END → 直接 PERFORM 2100WRTERRSOR(該当するレベルがない)
- WHEN TBL-SKILL-CODE(WS-IDX) = SKILL-CODE → 直接 PERFORM 2200UPDTTLSOR
内部表UPDATE(JIN02SKL-UPDATE-TBL)
- ADD 1 TO TBL-EMP-COUNT(WS-IDX) END-ADD
- ADD SCORE TO TBL-SCORE-SUM(WS-IDX) END-ADD
集計結果出力(JIN02SKL-OUTPUT)
- 内部表を件数降順(DESCENDING)で走査
- JIN02SKL-DESCEND を PERFORM THRU JIN02SKL-WRITE-AGG
- 各エントリについて:
d. WS-AVG を ZERO で初期化
e. JIN02SKL-GET-AVG を PERFORM(DIVIDE TBL-SCORE-SUM BY TBL-EMP-COUNT GIVING WS-AVG END-DIVIDE)
f. SKILL-AGG-REC に編集設定(ZZZZ9 編集文字)
g. JIN02W01 へ WRITE
降順走査(JIN02SKL-DESCEND)
SUBTRACT 1 FROM WS-IDX END-SUBTRACT(END-SUBTRACT 予約語使用)
平均点算出(JIN02SKL-GET-AVG)
(DIVIDE 予約語カバレッジ + END-DIVIDE)
エラー出力(JIN02SKL-WRITE-ERR)
- VALID-ERROR-REC にエラー情報設定
- JIN02W02 へ WRITE
終了処理(JIN02SKL-CLOSE)
- JIN02R01 / JIN02W01 / JIN02W02 を CLOSE
- GOBACK
カバレッジ対象キーワード
| 予約語/記号 |
区分 |
使用箇所 |
| USAGE BINARY |
予約語(16) |
MST-LEVEL, TBL-EMP-COUNT 等 |
| USAGE PACKED-DECIMAL |
予約語(127) |
AGG-LEVEL, AGG-AVG-SCORE |
| BY(降順走査) |
予約語(18) |
PERFORM VARYING BY -1(JIN02SKL-DESCEND相当) |
| END-DIVIDE |
予約語(58) |
JIN02SKL-GET-AVG |
| END-SUBTRACT |
予約語(66) |
JIN02SKL-DESCEND |
| GREATER |
予約語(87) |
IF WS-COUNT IS GREATER THAN ZERO |
| IF GREATER THAN |
予約語(87) |
件数判定 |
| PIC ZZZZ9 |
PICTURE記号 |
AGG-COUNT-EDIT |
| PIC N |
PICTURE記号 |
(JIN01RECから継承、未使用でもCOPY参照でカバー) |