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
処理詳細
段落一覧
| 段落名 |
機能 |
| 0000MAJCOLSOR |
メインコントロール(初期→マスタLOAD→主処理→出力→終了) |
| 1000ITTSOR |
初期処理(開始メッセージ・初期化・運用日付・OPEN) |
| 1100R02INNSOR |
評価基準マスタ(R02)読込・EOF判定 |
| 1200MSTLDASOR |
評価基準マスタ全件LOAD → 内部表構築 |
| 1300R01INNSOR |
評価明細(R01)読込・EOF判定 |
| 2000MAJSOR |
集計主処理(SEARCH判定 → 更新 or エラー) |
| 2100WRTERRSOR |
エラーレコードWRITE |
| 2200UPDTTLSOR |
内部表の件数・合計点UPDATE |
| 3000OUTPUSOR |
集計結果出力(降順走査 → 平均点算出 → WRITE) |
| 3100WRITEAGSOR |
1エントリWRITE |
| 4000STPSOR |
終了処理(統計表示・CLOSE・終了メッセージ) |
| 6000MSGOUTSOR |
メッセージ編集出力SUB呼出 |
| 9999ABDSOR |
エラー処理(ABEND) |
設計書の機能記述(SEARCH-LVL / GET-AVG / DESCEND 等)は、実装では個々の SECTION ではなく親段落(2000MAJSOR / 3000OUTPUSOR)内にインラインで実装されている。
処理ロジック
初期処理(1000ITTSOR)
- 開始メッセージを OUTPUT(6000MSGOUTSOR 経由)
- JIN02R01 / JIN02R02 / JIN02W01 / JIN02W02 を OPEN
- WS-TBL-MAX-IDX を ZERO で初期化(内部表初期化)
マスタLOAD(1100R02INNSOR / 1200MSTLDASOR)
- JIN02R02 から SKILL-MST を 1 件読込(1100R02INNSOR)
- 1200MSTLDASOR で内部表 WS-SKILL-TABLE に設定
(MST-SKILL-CODE, MST-LEVEL, MST-LEVEL-NAME, TBL-EMP-COUNT=0, TBL-SCORE-SUM=0)
- AT END(1100R02INNSOR で WRK-R02EOF='1')→ マスタLOADループ終了
- JIN02R02 の CLOSE は 3000OUTPUSOR で実施
主処理ループ(1300R01INNSOR → 2000MAJSOR → ループ)
- JIN02R01 から SKILL-EVAL を 1 件 READ(1300R01INNSOR)
- AT END → 3000OUTPUSOR へ
- 2000MAJSOR を PERFORM
集計処理(2000MAJSOR)
- SEARCH ALL で該当レベルを特定
- WHEN 該当 → 2200UPDTTLSOR を PERFORM
- WHEN NOT 該当 → 2100WRTERRSOR を PERFORM
SEARCH ALL(2000MAJSOR 内)
- SEARCH ALL WS-SKILL-TABLE
- AT END → PERFORM 2100WRTERRSOR(該当するレベルがない)
- WHEN TBL-SKILL-CODE(WS-IDX) = SKILL-CODE → PERFORM 2200UPDTTLSOR
内部表UPDATE(2200UPDTTLSOR)
- ADD 1 TO TBL-EMP-COUNT(WS-IDX) END-ADD
- ADD SCORE TO TBL-SCORE-SUM(WS-IDX) END-ADD
集計結果出力(3000OUTPUSOR)
- 内部表をスキルコード降順(逆走査)で走査(内部表は SKILL-CODE 昇順。WS-TBL-MAX-IDX から -1 ずつ逆走査)
- 各エントリについて:
a. WS-AVG を ZERO で初期化
b. DIVIDE TBL-SCORE-SUM BY TBL-EMP-COUNT GIVING WS-AVG END-DIVIDE
c. SKILL-AGG-REC に編集設定(ZZZZ9 編集文字)
d. 3100WRITEAGSOR を PERFORM(JIN02W01 へ WRITE)
降順走査(3000OUTPUSOR 内)
SUBTRACT 1 FROM WS-IDX END-SUBTRACT(END-SUBTRACT 予約語使用)
平均点算出(3000OUTPUSOR 内)
(DIVIDE 予約語カバレッジ + END-DIVIDE)
エラー出力(2100WRTERRSOR)
- VALID-ERROR-REC にエラー情報設定
- JIN02W02 へ WRITE
終了処理(4000STPSOR)
- 統計表示
- JIN02W01 / JIN02W02 を CLOSE(JIN02R01 / JIN02R02 は 3000OUTPUSOR で CLOSE 済み)
- 終了メッセージ OUTPUT(6000MSGOUTSOR)
- GOBACK
カバレッジ対象キーワード
| 予約語/記号 |
区分 |
使用箇所 |
| USAGE BINARY |
予約語(16) |
TBL-LEVEL, TBL-EMP-COUNT, TBL-SCORE-SUM(内部表) |
| USAGE PACKED-DECIMAL |
予約語(127) |
AGG-LEVEL, AGG-AVG-SCORE |
| BY(降順走査) |
予約語(18) |
PERFORM VARYING BY -1(3000OUTPUSOR) |
| END-DIVIDE |
予約語(58) |
3000OUTPUSOR |
| END-SUBTRACT |
予約語(66) |
3000OUTPUSOR |
| GREATER |
予約語(87) |
IF WS-COUNT IS GREATER THAN ZERO |
| IF GREATER THAN |
予約語(87) |
件数判定 |
| PIC ZZZZ9 |
PICTURE記号 |
AGG-COUNT-EDIT |
| PIC N |
PICTURE記号 |
(JIN02SKL では PIC N 未使用。PIC N は JIN01KNS が JIN01REC の KANJI-NAME でカバー) |