Add Subsystem E (JIN01-02): personnel info management + design-resource consistency fixes
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
# JIN01KNS 詳細設計書
|
||||
|
||||
## プログラム概要
|
||||
|
||||
| 項目 | 内容 |
|
||||
|------|------|
|
||||
| プログラムID | JIN01KNS(人事→JINji, 01, カナKana確認Chekku→KNS) |
|
||||
| プログラムタイプ | 27(半角20桁/4桁チェック) |
|
||||
| 機能 | 人事取込データの氏名カナ(半角20桁以内・英大文字)および補助コード桁数のチェック |
|
||||
| CALL方式 | メインプログラム(JCLからCALL) |
|
||||
| DBアクセス | なし |
|
||||
| 使用サブプログラム | SUB01DAT(日付), SUB02MSG(メッセージ), SUB03END(アベンド) |
|
||||
| INITIAL指定 | PROGRAM-ID IS INITIAL(INITIAL 予約語使用) |
|
||||
| RETURN-CODE | 正常終了時 MOVE ZERO TO RETURN-CODE(RETURN-CODE 予約語使用) |
|
||||
|
||||
## ファイル一覧
|
||||
|
||||
| DD名 | ファイル名 | 編成 | RECM | サイズ | I/O | 用途 |
|
||||
|:----:|:---------:|:----:|:----:|:-----:|:---:|------|
|
||||
| JIN01R01 | EMP-IMPORT | SEQUENTIAL | FB | 200 | INPUT | 人事取込データ |
|
||||
| JIN01W01 | EMP-VALID | SEQUENTIAL | FB | 200 | OUTPUT | 正常通過データ |
|
||||
| JIN01W02 | VALID-ERROR | SEQUENTIAL | FB | 80 | OUTPUT | エラーレコード |
|
||||
|
||||
## レコード定義
|
||||
|
||||
### JIN01REC(JIN01R01 / JIN01W01 共用, 200B)
|
||||
|
||||
| 項目 | PIC | 内容 | 備考 |
|
||||
|:----|:---:|------|:----:|
|
||||
| KANA-SEI | X(20) | 姓(半角カナ) | 最大20桁チェック対象 |
|
||||
| KANA-MEI | X(20) | 名(半角カナ) | 最大20桁チェック対象 |
|
||||
| KANJI-NAME | N(40) | 漢字氏名(全角) | PIC N 使用(N(1)=2B、実長80B、合計200B) |
|
||||
| SUB-CODE | X(4) | 補助コード | 4桁チェック対象 |
|
||||
| BIRTH-DATE | X(8) | 生年月日 CCYYMMDD | — |
|
||||
| EMP-ID | X(8) | 社員番号 | — |
|
||||
| FILLER | X(060) | — | — |
|
||||
|
||||
### VALID-ERROR-REC(JIN01W02, 80B)
|
||||
|
||||
| 項目 | PIC | 内容 |
|
||||
|:----|:---:|------|
|
||||
| ERR-PROGRAMID | X(8) | エラー発生プログラムID |
|
||||
| ERR-EMP-ID | X(8) | エラー社員番号 |
|
||||
| ERR-CODE | X(4) | エラーコード(K001=カナ桁数超過, K002=英大文字以外, K003=補助コード不正) |
|
||||
| ERR-DETAIL | X(60) | エラー詳細メッセージ |
|
||||
|
||||
## 処理詳細
|
||||
|
||||
### 段落一覧
|
||||
|
||||
| 段落名 | 機能 |
|
||||
|:-------|:-----|
|
||||
| JIN01KNS-OPEN | ファイルOPEN |
|
||||
| JIN01KNS-READ | 1レコードREAD |
|
||||
| JIN01KNS-CHECK | カナチェック主処理 |
|
||||
| JIN01KNS-CHK-KANA | 半角カナ文字チェック(IS ALPHABETIC-UPPER) |
|
||||
| JIN01KNS-CHK-SIZE | 桁数チェック(20桁超過チェック) |
|
||||
| JIN01KNS-CHK-SUB | 補助コード桁数チェック(4桁) |
|
||||
| JIN01KNS-WRITE-OK | 正常データWRITE |
|
||||
| JIN01KNS-WRITE-ERR | エラーデータWRITE |
|
||||
| JIN01KNS-CLOSE | ファイルCLOSE + RETURN-CODE設定 |
|
||||
|
||||
### 処理ロジック
|
||||
|
||||
#### 初期処理(JIN01KNS-OPEN)
|
||||
1. JIN01R01 / JIN01W01 / JIN01W02 を OPEN
|
||||
2. WS-READ-CNT, WS-ERR-CNT を INITIALIZE(数値=0, PIC X=SPACE)
|
||||
|
||||
#### 主処理(JIN01KNS-READ → JIN01KNS-CHECK → JIN01KNS-READ)
|
||||
1. JIN01R01 から1レコード READ
|
||||
2. READ 成功 → JIN01KNS-CHECK へ
|
||||
3. READ 失敗(AT END)→ JIN01KNS-CLOSE へ
|
||||
|
||||
#### チェック処理(JIN01KNS-CHECK)
|
||||
1. ADD 1 TO WS-READ-CNT END-ADD(END-ADD 予約語)
|
||||
2. JIN01KNS-CHK-KANA 呼出
|
||||
3. JIN01KNS-CHK-SIZE 呼出
|
||||
4. JIN01KNS-CHK-SUB 呼出
|
||||
5. エラーフラグ OFF → JIN01KNS-WRITE-OK
|
||||
6. エラーフラグ ON → JIN01KNS-WRITE-ERR
|
||||
|
||||
#### カナ文字チェック(JIN01KNS-CHK-KANA)
|
||||
1. IF KANA-SEI IS NOT ALPHABETIC-UPPER → エラー(ALPHABETIC-UPPER 予約語)
|
||||
2. IF KANA-MEI IS NOT ALPHABETIC-UPPER → エラー
|
||||
3. エラー時は WRK-ERR-CODE に 'K002' を MOVE(88-level VALUESは使用なし)
|
||||
|
||||
#### 桁数チェック(JIN01KNS-CHK-SIZE)
|
||||
1. KANA-SEI の20桁超過をチェック(FUNCTION LENGTH)
|
||||
2. 超過時はエラーフラグ ON + エラーコード設定
|
||||
|
||||
#### 補助コードチェック(JIN01KNS-CHK-SUB)
|
||||
1. SUB-CODE が有効値(VALUES '0001' '0002' '0003' 等)かチェック
|
||||
2. 範囲外はエラーフラグ ON
|
||||
|
||||
#### 正常出力(JIN01KNS-WRITE-OK)
|
||||
1. JIN01W01 へレコード WRITE
|
||||
|
||||
#### エラー出力(JIN01KNS-WRITE-ERR)
|
||||
1. ADD 1 TO WS-ERR-CNT END-ADD
|
||||
2. VALID-ERROR-REC にエラー情報設定
|
||||
3. JIN01W02 へ WRITE
|
||||
|
||||
#### 終了処理(JIN01KNS-CLOSE)
|
||||
1. JIN01R01 / JIN01W01 / JIN01W02 を CLOSE
|
||||
2. WS-ERR-CNT = 0 → MOVE ZERO TO RETURN-CODE
|
||||
3. WS-ERR-CNT > 0 → MOVE 4 TO RETURN-CODE
|
||||
4. GOBACK
|
||||
|
||||
## カバレッジ対象キーワード
|
||||
|
||||
| 予約語/記号 | 区分 | 使用箇所 |
|
||||
|:-----------|:----:|:---------|
|
||||
| PROGRAM-ID IS INITIAL | 予約語(95) | IDENTIFICATION DIVISION |
|
||||
| RETURN-CODE | 予約語(145) | JIN01KNS-CLOSE |
|
||||
| ALPHABETIC-UPPER | 予約語(7) | JIN01KNS-CHK-KANA |
|
||||
| END-ADD | 予約語(55) | JIN01KNS-CHECK |
|
||||
| VALUES | 予約語(183) | ERR-CODE 88-level(VALUE→VALUES表記) |
|
||||
| PIC N | PICTURE記号 | KANJI-NAME定義 |
|
||||
| ZZZZ9 | PICTURE記号 | 自プログラムでは使用なし(JIN02SKLのAGG-COUNT-EDITでカバー) |
|
||||
@@ -0,0 +1,173 @@
|
||||
# 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)
|
||||
1. JIN02R01 / JIN02R02 / JIN02W01 / JIN02W02 を OPEN
|
||||
2. WS-TBL-ENTRY を INITIALIZE(内部表初期化)
|
||||
|
||||
#### マスタLOAD(JIN02SKL-LOAD-MST)
|
||||
1. JIN02R02 から SKILL-MST を全件 LOAD
|
||||
2. ADD 1 TO WS-MAX-ENTRY END-ADD
|
||||
3. 内部表 WS-SKILL-TABLE に設定(MST-SKILL-CODE, MST-LEVEL, MST-LEVEL-NAME, TBL-EMP-COUNT=0, TBL-SCORE-SUM=0)
|
||||
4. AT END → JIN02SKL-READ-EVAL へ
|
||||
5. JIN02R02 を CLOSE(不要になったので)
|
||||
|
||||
#### 主処理ループ(JIN02SKL-READ-EVAL → JIN02SKL-AGGREGATE → ループ)
|
||||
1. JIN02R01 から SKILL-EVAL を1件 READ
|
||||
2. AT END → JIN02SKL-OUTPUT へ
|
||||
3. JIN02SKL-AGGREGATE を PERFORM
|
||||
|
||||
#### 集計処理(JIN02SKL-AGGREGATE)
|
||||
1. JIN02SKL-SEARCH-LVL を呼出(SEARCH ALL)
|
||||
2. WHEN 該当 → JIN02SKL-UPDATE-TBL を PERFORM
|
||||
3. WHEN NOT 該当 → JIN02SKL-WRITE-ERR を PERFORM
|
||||
|
||||
#### SEARCH ALL(JIN02SKL-SEARCH-LVL)
|
||||
1. SEARCH ALL WS-SKILL-TABLE
|
||||
2. AT END → 直接 PERFORM 2100WRTERRSOR(該当するレベルがない)
|
||||
3. WHEN TBL-SKILL-CODE(WS-IDX) = SKILL-CODE → 直接 PERFORM 2200UPDTTLSOR
|
||||
|
||||
#### 内部表UPDATE(JIN02SKL-UPDATE-TBL)
|
||||
1. ADD 1 TO TBL-EMP-COUNT(WS-IDX) END-ADD
|
||||
2. ADD SCORE TO TBL-SCORE-SUM(WS-IDX) END-ADD
|
||||
|
||||
#### 集計結果出力(JIN02SKL-OUTPUT)
|
||||
1. 内部表を件数降順(DESCENDING)で走査
|
||||
2. JIN02SKL-DESCEND を PERFORM THRU JIN02SKL-WRITE-AGG
|
||||
3. 各エントリについて:
|
||||
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)
|
||||
```
|
||||
PERFORM VARYING WS-IDX FROM WS-MAX-ENTRY BY -1
|
||||
UNTIL WS-IDX = 0
|
||||
PERFORM JIN02SKL-WRITE-AGG
|
||||
END-PERFORM
|
||||
```
|
||||
SUBTRACT 1 FROM WS-IDX END-SUBTRACT(END-SUBTRACT 予約語使用)
|
||||
|
||||
#### 平均点算出(JIN02SKL-GET-AVG)
|
||||
```
|
||||
DIVIDE TBL-SCORE-SUM(WS-IDX) BY TBL-EMP-COUNT(WS-IDX)
|
||||
GIVING WS-AVG-TEMP REMAINDER WS-REM
|
||||
END-DIVIDE
|
||||
```
|
||||
(DIVIDE 予約語カバレッジ + END-DIVIDE)
|
||||
|
||||
#### エラー出力(JIN02SKL-WRITE-ERR)
|
||||
1. VALID-ERROR-REC にエラー情報設定
|
||||
2. JIN02W02 へ WRITE
|
||||
|
||||
#### 終了処理(JIN02SKL-CLOSE)
|
||||
1. JIN02R01 / JIN02W01 / JIN02W02 を CLOSE
|
||||
2. 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参照でカバー) |
|
||||
Reference in New Issue
Block a user