Files
cobol-tna-system/詳細設計書/詳細設計書_JIN02SKL.md

7.3 KiB
Raw Permalink Blame History

JIN02SKL 詳細設計書

プログラム概要

項目 内容
プログラムID JIN02SKL(人事→JINji, 02, スキルSukiru別評価集計→SKL)
プログラムタイプ 19M: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-RECJIN02R01, 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-RECJIN02R02, 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-RECJIN02W01, 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-RECJIN02W02, 80B

JIN01KNS と共用。VALID-ERROR-REC.cpy(独立したCOPY書式)を参照。

内部表

WS-SKILL-TABLEOCCURS 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

  1. 開始メッセージを OUTPUT6000MSGOUTSOR 経由)
  2. JIN02R01 / JIN02R02 / JIN02W01 / JIN02W02 を OPEN
  3. WS-TBL-MAX-IDX を ZERO で初期化(内部表初期化)

マスタLOAD1100R02INNSOR / 1200MSTLDASOR

  1. JIN02R02 から SKILL-MST を 1 件読込(1100R02INNSOR
  2. 1200MSTLDASOR で内部表 WS-SKILL-TABLE に設定 MST-SKILL-CODE, MST-LEVEL, MST-LEVEL-NAME, TBL-EMP-COUNT=0, TBL-SCORE-SUM=0
  3. AT END1100R02INNSOR で WRK-R02EOF='1')→ マスタLOADループ終了
  4. JIN02R02 の CLOSE は 3000OUTPUSOR で実施

主処理ループ(1300R01INNSOR → 2000MAJSOR → ループ)

  1. JIN02R01 から SKILL-EVAL を 1 件 READ1300R01INNSOR
  2. AT END → 3000OUTPUSOR へ
  3. 2000MAJSOR を PERFORM

集計処理(2000MAJSOR

  1. SEARCH ALL で該当レベルを特定
  2. WHEN 該当 → 2200UPDTTLSOR を PERFORM
  3. WHEN NOT 該当 → 2100WRTERRSOR を PERFORM

SEARCH ALL2000MAJSOR 内)

  1. SEARCH ALL WS-SKILL-TABLE
  2. AT END → PERFORM 2100WRTERRSOR(該当するレベルがない)
  3. WHEN TBL-SKILL-CODE(WS-IDX) = SKILL-CODE → PERFORM 2200UPDTTLSOR

内部表UPDATE2200UPDTTLSOR

  1. ADD 1 TO TBL-EMP-COUNT(WS-IDX) END-ADD
  2. ADD SCORE TO TBL-SCORE-SUM(WS-IDX) END-ADD

集計結果出力(3000OUTPUSOR

  1. 内部表をスキルコード降順(逆走査)で走査(内部表は SKILL-CODE 昇順。WS-TBL-MAX-IDX から -1 ずつ逆走査)
  2. 各エントリについて: 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 を PERFORMJIN02W01 へ WRITE

降順走査(3000OUTPUSOR 内)

PERFORM VARYING WS-IDX FROM WS-MAX-ENTRY BY -1
        UNTIL WS-IDX = 0
    PERFORM 3100WRITEAGSOR
END-PERFORM

SUBTRACT 1 FROM WS-IDX END-SUBTRACTEND-SUBTRACT 予約語使用)

平均点算出(3000OUTPUSOR 内)

DIVIDE TBL-SCORE-SUM(WS-IDX) BY TBL-EMP-COUNT(WS-IDX)
    GIVING WS-AVG-TEMP REMAINDER WS-REM
    END-DIVIDE

(DIVIDE 予約語カバレッジ + END-DIVIDE

エラー出力(2100WRTERRSOR

  1. VALID-ERROR-REC にエラー情報設定
  2. JIN02W02 へ WRITE

終了処理(4000STPSOR

  1. 統計表示
  2. JIN02W01 / JIN02W02 を CLOSEJIN02R01 / JIN02R02 は 3000OUTPUSOR で CLOSE 済み)
  3. 終了メッセージ OUTPUT6000MSGOUTSOR
  4. 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 -13000OUTPUSOR
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 でカバー)