Add Subsystem E (JIN01-02): personnel info management + design-resource consistency fixes

This commit is contained in:
qiuqiuqiu
2026-07-19 20:31:51 +08:00
parent 9de04cfa87
commit 39b9ec4e50
17 changed files with 1471 additions and 0 deletions
@@ -0,0 +1,132 @@
# 人事情報管理システム 設計書(サブシステムE)
## システム概要
本サブシステムは、従業員の基本情報(氏名カナ/漢字)のフォーマット検証と、
スキル評価データの集計・分析を行う。
これにより、サブシステムA〜Dで未カバーのプログラムタイプ
No.19M:N→N件)および No.27(半角20桁/4桁チェック)を追加し、
PICTURE記号 N/BINARY/ZZZZ9 および11個の COBOL 予約語を
新たにカバーする。
### サブシステム情報
| 項目 | 内容 |
|------|------|
| サブシステムID | JIN(人事→JINji |
| COBOLプログラム数 | 2 |
| JCL数 | 2 |
| DB | なし(ファイル連携のみ) |
### サブシステム内ファイル
| # | ファイル名 | 編成 | RECM | サイズ | 用途 | 区分 |
|---|-----------|------|------|-------|------|------|
| 1 | EMP-IMPORT | SEQUENTIAL | FB | 200 | 人事取込データ(外部システムよりCSV→EBCDIC変換済) | 新規 |
| 2 | EMP-VALID | SEQUENTIAL | FB | 200 | チェック通過正常データ | 新規 |
| 3 | VALID-ERROR | SEQUENTIAL | FB | 80 | バリデーションエラーレコード(PROGRAMID・EMP-ID・ERR-CODE・詳細) | 新規 |
| 4 | SKILL-EVAL | SEQUENTIAL | FB | 200 | スキル評価明細データ | 新規 |
| 5 | SKILL-MST | SEQUENTIAL | FB | 80 | スキル評価基準マスタ | 新規 |
| 6 | SKILL-AGG | SEQUENTIAL | FB | 200 | スキル別評価集計結果 | 新規 |
### システム定数
| 定数 | 値 | 説明 |
|------|-----|------|
| KANA-MAX-LEN | 20 | 氏名カナ最大桁数(半角) |
| SUBCODE-LEN | 4 | 補助コード桁数 |
| SKILL-LEVEL-MAX | 10 | スキルレベルの最大値 |
| EVAL-SCORE-MAX | 999 | 評価点数の最大値 |
### 共通関数利用方針
既存のサブプログラム(SUB01DAT〜SUB05TIM)は本サブシステムでも利用する。
連絡領域のCOPY書式は `JINDATAC``JINMSGAC``JINENDAC` を新規作成する
(チェック用サブプログラム SUB04CHK は使用しない)。
---
## 処理フロー
```
╞══ JINJ010 ═══════════════════════════════════╡
│ JIN01KNS(カナ氏名チェック) PGMパターン: 27
│ 人事取込データ(EMP-IMPORT)を1レコードずつ読み込み
│ IF KANA-SEI IS ALPHABETIC-UPPER AND KANA-MEI IS ALPHABETIC-UPPER → 正常
│ 半角20桁超過 OR 補助コード4桁不一致 → エラーファイル出力
│ ADD 1 TO WS-READ-CNT END-ADD(件数カウント)
│ RETURN-CODE に終了ステータス設定
│ PROGRAM-ID IS INITIAL 指定
├── 正常 → EMP-VALID200B 正常データ)
└── 異常 → VALID-ERROR(80B エラーレコード)
╞══ JINJ020 ═══════════════════════════════════╡
│ JIN02SKL(スキル別評価集計) PGMパターン: 19
│ SKILL-EVALM件の評価明細)× SKILL-MST(N件の評価基準)
│ SEARCH ALL でSKILL-CODEに対応するLEVEL判定
│ 内部表にスキルコード×レベル別の件数と合計点を集計
│ 集計後、PERFORM VARYINGで降順(DESCENDING)走査し出力
│ DIVIDE ... GIVING ... END-DIVIDE で平均点算出
│ SUBTRACT 1 FROM WS-IDX END-SUBTRACT で内部表走査
│ USAGE BINARY / USAGE PACKED-DECIMAL でカウンタ・金額定義
│ エラー件数表示に ZZZZ9 編集
├── → SKILL-AGG(200B スキル別評価集計結果)
└── 異常 → VALID-ERROR(80B エラーレコード)
```
---
## JCL
### JINJ010 — カナ氏名チェック
```jcl
//JINJ010 JOB (ACCT),'カナ氏名チェック',CLASS=A
//*
//*=====================================================================
//* STEP010: 半角カナチェック(Type 27)
//*=====================================================================
//STEP010 EXEC PGM=JIN01KNS
//JIN01R01 DD DSN=EMP-IMPORT.DAT,DISP=SHR
//JIN01W01 DD DSN=EMP-VALID.DAT,DISP=(NEW,CATLG)
//JIN01W02 DD DSN=VALID-ERROR.DAT,DISP=(NEW,PASS)
```
### JINJ020 — スキル別評価集計
```jcl
//JINJ020 JOB (ACCT),'スキル別評価集計',CLASS=A
//*
//*=====================================================================
//* STEP010: M:N→N件(Type 19
//*=====================================================================
//STEP010 EXEC PGM=JIN02SKL
//JIN02R01 DD DSN=SKILL-EVAL.DAT,DISP=SHR
//JIN02R02 DD DSN=SKILL-MST.DAT,DISP=SHR
//JIN02W01 DD DSN=SKILL-AGG.DAT,DISP=(NEW,CATLG)
//JIN02W02 DD DSN=VALID-ERROR.DAT,DISP=(NEW,PASS)
```
---
## プログラム一覧
| # | PGM-ID | PGMパターン | 機能概要 | 使用COPY | DBアクセス | CALL先 |
|:-:|:------:|:----------:|---------|:--------:|:---------:|:------:|
| 1 | JIN01KNS | 27 半角20桁/4桁チェック | 人事取込データの氏名カナ桁数・半角英大文字チェック | JIN01REC, JINDATAC, JINMSGAC, JINENDAC | なし | SUB01DAT, SUB02MSG, SUB03END |
| 2 | JIN02SKL | 19 M:N→N件 | スキル評価明細×評価基準マスタの集計(M件→N件出力) | SKILL-EVAL-REC, SKILL-MST-REC, SKILL-AGG-REC, VALID-ERROR-REC, JINDATAC, JINMSGAC, JINENDAC | なし | SUB01DAT, SUB02MSG, SUB03END |
---
## COPY書式一覧
| # | COPY ID | 用途 | サイズ | 備考 |
|:-:|:--------|:----:|:------:|------|
| 1 | JIN01REC | EMP-IMPORT/EMP-VALID レコード | 200 | JIN01KNS入出力 |
| 2 | VALID-ERROR-REC | VALID-ERROR エラーレコード | 80 | JIN01KNS/JIN02SKL共用 |
| 3 | SKILL-EVAL-REC | SKILL-EVAL スキル評価明細 | 200 | JIN02SKL入力(M件) |
| 4 | SKILL-MST-REC | SKILL-MST 評価基準マスタ | 80 | JIN02SKL入力(内部表LOAD |
| 5 | SKILL-AGG-REC | SKILL-AGG 評価集計結果 | 200 | JIN02SKL出力(N件) |
| 6 | JINDATAC | SUB01DAT連絡領域 | — | CALL I/F |
| 7 | JINMSGAC | SUB02MSG連絡領域 | — | CALL I/F |
| 8 | JINENDAC | SUB03END連絡領域 | — | CALL I/F |