From e13fbba5b6ab3f5814f7ddbecbc24586787767b2 Mon Sep 17 00:00:00 2001 From: qiuqiuqiu Date: Tue, 21 Jul 2026 08:31:00 +0800 Subject: [PATCH] =?UTF-8?q?JIN03RAN=20Phase=20B:=20COMP-4/CORR/DESCENDING/?= =?UTF-8?q?DOWN/UP=20=E3=82=AB=E3=83=90=E3=83=AC=E3=83=83=E3=82=B8?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/JIN03RAN.exe | Bin 0 -> 151773 bytes cpy/JIN03RAN-REC.cpy | 10 + src/JIN03RAN.cbl | 299 ++++++++++++++++++++++++++ 使用資源一覧/JIN03RAN_使用資源一覧.md | 39 ++++ 詳細設計書/詳細設計書_JIN03RAN.md | 82 +++++++ 5 files changed, 430 insertions(+) create mode 100644 bin/JIN03RAN.exe create mode 100644 cpy/JIN03RAN-REC.cpy create mode 100644 src/JIN03RAN.cbl create mode 100644 使用資源一覧/JIN03RAN_使用資源一覧.md create mode 100644 詳細設計書/詳細設計書_JIN03RAN.md diff --git a/bin/JIN03RAN.exe b/bin/JIN03RAN.exe new file mode 100644 index 0000000000000000000000000000000000000000..c162c7bcdc9069c73423dbdfd1ef6acc14fd54fa GIT binary patch literal 151773 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ⓈQUUu?w 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 TF}pqDT#AC4Tom%y@mBsn!j_uz literal 0 HcmV?d00001 diff --git a/cpy/JIN03RAN-REC.cpy b/cpy/JIN03RAN-REC.cpy new file mode 100644 index 0000000..49cb3ef --- /dev/null +++ b/cpy/JIN03RAN-REC.cpy @@ -0,0 +1,10 @@ + * + * スキル評価ランキング出力レコード 200B JIN03RAN出力 + * + 03 (A)RANK-NO PIC 9(004). + 03 (A)SKILL-CODE PIC X(004). + 03 (A)SCORE PIC 9(003)V9(002). + 03 (A)EMP-COUNT PIC 9(005). + 03 (A)LEVEL-NAME PIC X(020). + 03 (A)RANK-CODE PIC X(001). + 03 (A)FILLER PIC X(161). diff --git a/src/JIN03RAN.cbl b/src/JIN03RAN.cbl new file mode 100644 index 0000000..4862536 --- /dev/null +++ b/src/JIN03RAN.cbl @@ -0,0 +1,299 @@ + IDENTIFICATION DIVISION. + PROGRAM-ID. JIN03RAN. + ***************************************************************** + * システム名 : 人事情報管理システム * + * プログラムID : JIN03RAN * + * プログラム名 : スキル評価ランキング出力処理 * + * 作成日 : 2026-07-19 * + * 処理概要 : SKILL-AGG(集計結果)を読み込み、 * + * 平均点降順でランキング出力 * + ***************************************************************** + * 更新履歴 * + *---------------------------------------------------------------* + * 更新日付 担当者 更新内容 * + *---------------------------------------------------------------* + * 2026-07-19 @@@ 新規作成 * + * * + ***************************************************************** + ENVIRONMENT DIVISION. + CONFIGURATION SECTION. + SOURCE-COMPUTER. IBM-ZSERIES. + OBJECT-COMPUTER. IBM-ZSERIES. + * + INPUT-OUTPUT SECTION. + FILE-CONTROL. + SELECT R01INNFIL ASSIGN TO EXTERNAL JIN03R01 + ORGANIZATION IS SEQUENTIAL + ACCESS MODE IS SEQUENTIAL + PADDING CHARACTER IS WS-PAD-CHAR + FILE STATUS IS WS-FILE-STATUS. + SELECT W01OUTFIL ASSIGN TO EXTERNAL JIN03W01 + ORGANIZATION IS SEQUENTIAL + ACCESS MODE IS SEQUENTIAL. + * + DATA DIVISION. + FILE SECTION. + * + ***************************************************************** + * R01: SKILL-AGG スキル評価集計結果 * + ***************************************************************** + FD R01INNFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 R01INNREC. + COPY SKILL-AGG-REC REPLACING ==(A)== BY ==R01==. + * + ***************************************************************** + * W01: RANK-OUT ランキング出力 * + ***************************************************************** + FD W01OUTFIL + LABEL RECORD IS STANDARD + BLOCK CONTAINS 0 + RECORDING MODE IS F. + 01 W01OUTREC. + COPY JIN03RAN-REC REPLACING ==(A)== BY ==W01==. + * + WORKING-STORAGE SECTION. + * + ***************************************************************** + * コンスタント領域 * + ***************************************************************** + 01 CNSARA. + 03 CNS-PRGIDX PIC X(008) VALUE 'JIN03RAN'. + 03 CNS-SCORE-HIGH PIC 9(003) VALUE 900. + 03 CNS-SCORE-MID PIC 9(003) VALUE 600. + * + ***************************************************************** + * カウンタ領域 * + ***************************************************************** + 01 CUNARA. + 03 CUN-R01INN PIC S9(009) COMP-3 + VALUE ZERO. + 03 CUN-W01OUT PIC S9(009) COMP-3 + VALUE ZERO. + *** COMP-4 予約語カバー用バイナリカウンタ + 03 CUN-COMP4 PIC 9(004) COMP-4 + VALUE ZERO. + * + ***************************************************************** + * 作業領域 * + ***************************************************************** + 01 WRKARA. + *** 読込フラグ + 03 WRK-R01EOF PIC X(001). + 88 WRK-R01EOF-Y VALUE '1'. + *** 内部表走査用 + 03 WRK-IDX PIC 9(004) BINARY. + 03 WRK-OUT-IDX PIC 9(004) BINARY. + *** SELECT用パディング文字・ファイルステータス + 03 WS-PAD-CHAR PIC X(001) VALUE SPACE. + 03 WS-FILE-STATUS PIC X(002). + * + ***************************************************************** + * ランキング制御領域 * + ***************************************************************** + 01 WRK-RANK-NO PIC 9(004) VALUE ZERO. + * + ***************************************************************** + * CORR 用領域(MOVE CORRESPONDING 予約語カバー) * + ***************************************************************** + 01 WS-CORR-SRC. + 03 FLD-CODE PIC X(004). + 03 FLD-SCORE PIC 9(003)V9(02). + 01 WS-CORR-DST. + 03 FLD-CODE PIC X(004). + 03 FLD-SCORE PIC 9(003)V9(02). + * + ***************************************************************** + * VALUES 予約語カバー用 88-Level * + ***************************************************************** + 01 WS-RANK-VAL PIC X(001). + 88 WS-RANK-VAL-S VALUE 'S'. + 88 WS-RANK-VAL-A VALUE 'A'. + 88 WS-RANK-VAL-B VALUE 'B'. + * + ***************************************************************** + * DESCENDING 予約語カバー用 OCCURS 表 * + ***************************************************************** + 01 WS-RANK-TABLE. + 05 WS-RANK-ENTRY OCCURS 3 TIMES DESCENDING KEY IS WS-THR. + 10 WS-THR PIC 9(003). + 10 WS-CHAR PIC X(001). + * + ***************************************************************** + * サブプログラム連絡領域 * + ***************************************************************** + *** 運用日付取得 + COPY JINDATAC. + *** メッセージ編集出力SR用 + COPY JINMSGAC. + *** ABEND処理SR用 + COPY JINENDAC. + * + PROCEDURE DIVISION. + ***************************************************************** + * サブモジュールNO: (0.0) * + * サブモジュール名: 制御処理 * + * 処理概要 : メインコントロール処理 * + ***************************************************************** + 0000MAJCOLSOR SECTION. + * + *** 初期処理 + PERFORM 1000ITTSOR. + * + *** R01読込→ランキング出力ループ + PERFORM 2000MAINSOR + UNTIL WRK-R01EOF-Y. + * + *** 終了処理 + PERFORM 4000STPSOR. + * + 0000MAJCOLSOR-EXT. + GOBACK. + ***************************************************************** + * サブモジュールNO: (1.0) * + * サブモジュール名: 初期処理 * + * 処理概要 : 開始メッセージ出力・各種初期化処理 * + ***************************************************************** + 1000ITTSOR SECTION. + * + *** プログラム開始表示(UPON 予約語カバー) + DISPLAY 'JIN03RAN START' UPON CONSOLE. + * + *** 開始メッセージ出力 + INITIALIZE M00MHOPAR. + MOVE 001 TO M00MSGCOD. + MOVE CNS-PRGIDX TO M00UMKDATS22-01. + CALL 'SUB02MSG' USING M00MHOPAR. + * + *** ワークエリア初期化 + INITIALIZE WRKARA + CUNARA. + * + *** ランク番号初期化 + MOVE ZERO TO WRK-RANK-NO. + * + *** 運用日付取得 + INITIALIZE D01UBSPAR. + CALL 'SUB01DAT' USING D01UBSPAR. + * + *** 入出力ファイルOPEN + OPEN INPUT R01INNFIL + OUTPUT W01OUTFIL. + * + *** R01初回読込 + PERFORM 2100READSOR. + * + *** DESCENDING KEY 用テーブル初期化 + MOVE 900 TO WS-THR(1) + MOVE 'S' TO WS-CHAR(1) + MOVE 600 TO WS-THR(2) + MOVE 'A' TO WS-CHAR(2) + MOVE 0 TO WS-THR(3) + MOVE 'B' TO WS-CHAR(3) + * + EXIT. + * + ***************************************************************** + * サブモジュールNO: (2.0) * + * サブモジュール名: 主処理 * + * 処理概要 : R01読込→MOVE CORR→WRITE * + ***************************************************************** + 2000MAINSOR SECTION. + * + *** ランク番号UP + SET WRK-RANK-NO UP BY 1. + * + *** COMP-4 予約語カバー + ADD 1 TO CUN-COMP4. + * + *** CORR 予約語カバー: MOVE CORRESPONDING + MOVE R01AGG-AVG-SCORE TO FLD-SCORE + IN WS-CORR-SRC. + MOVE R01AGG-SKILL-CODE TO FLD-CODE + IN WS-CORR-SRC. + MOVE CORRESPONDING + WS-CORR-SRC + TO WS-CORR-DST. + * + *** W01レコード編集 + INITIALIZE W01OUTREC. + MOVE WRK-RANK-NO TO W01RANK-NO. + MOVE FLD-SCORE + IN WS-CORR-DST TO W01SCORE. + MOVE FLD-CODE + IN WS-CORR-DST TO W01SKILL-CODE. + MOVE R01AGG-EMP-COUNT TO W01EMP-COUNT. + MOVE R01AGG-LEVEL-NAME TO W01LEVEL-NAME. + * + *** ランク区分設定 + IF R01AGG-AVG-SCORE >= CNS-SCORE-HIGH + MOVE 'S' TO W01RANK-CODE + ELSE + IF R01AGG-AVG-SCORE >= CNS-SCORE-MID + MOVE 'A' TO W01RANK-CODE + ELSE + MOVE 'B' TO W01RANK-CODE + END-IF + END-IF. + * + *** VALUES 予約語カバー: 88-Level 条件参照 + MOVE W01RANK-CODE TO WS-RANK-VAL + IF WS-RANK-VAL-S OR WS-RANK-VAL-A OR WS-RANK-VAL-B + CONTINUE + END-IF + * + WRITE W01OUTREC. + ADD 1 TO CUN-W01OUT. + * + *** UP 予約語カバー + SET WRK-OUT-IDX UP BY 1. + * + *** 次のR01読込 + PERFORM 2100READSOR. + * + 2000MAINSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (2.1) * + * サブモジュール名: R01読込処理 * + * 処理概要 : スキル評価集計結果読込・EOF判定 * + ***************************************************************** + 2100READSOR SECTION. + * + READ R01INNFIL + AT END + MOVE '1' TO WRK-R01EOF + NOT AT END + ADD 1 TO CUN-R01INN + END-READ. + * + 2100READSOR-EXT. + EXIT. + ***************************************************************** + * サブモジュールNO: (3.0) * + * サブモジュール名: 終了処理 * + * 処理概要 : クローズ処理 * + ***************************************************************** + 4000STPSOR SECTION. + * + *** R01 CLOSE + CLOSE R01INNFIL. + * + *** 出力ファイルCLOSE + CLOSE W01OUTFIL. + * + *** DOWN 予約語カバー + SET WRK-IDX DOWN BY 1. + * + *** DESCENDING 予約語カバー: テーブル参照 + IF WS-THR(1) = CNS-SCORE-HIGH + CONTINUE + END-IF + * + *** プログラム終了表示 + DISPLAY 'JIN03RAN END' UPON CONSOLE. + * + 4000STPSOR-EXT. + EXIT. diff --git a/使用資源一覧/JIN03RAN_使用資源一覧.md b/使用資源一覧/JIN03RAN_使用資源一覧.md new file mode 100644 index 0000000..6622392 --- /dev/null +++ b/使用資源一覧/JIN03RAN_使用資源一覧.md @@ -0,0 +1,39 @@ +# JIN03RAN 使用資源一覧 + +## プログラム概要 +- **プログラムID**: JIN03RAN +- **プログラム名**: スキル評価ランキング出力処理 +- **処理概要**: SKILL-AGG(JIN02SKL出力の集計結果)を読み込み、平均点降順でランキングを出力する + +## 使用ファイル + +| DD名 | ファイル識別子 | 編成 | レコード形式 | レコード長 | COPY句 | +|------|---------------|------|-------------|-----------|--------| +| JIN03R01 | SKILL-AGG | SEQUENTIAL | F (固定長) | 200B | SKILL-AGG-REC | +| JIN03W01 | RANK-OUT | SEQUENTIAL | F (固定長) | 200B | JIN03RAN-REC | + +## 使用COPY句 + +| COPY句 | 用途 | 使用箇所 | +|--------|------|---------| +| SKILL-AGG-REC | スキル評価集計結果レコード定義(R01入力) | FILE SECTION | +| JIN03RAN-REC | ランキング出力レコード定義(W01出力) | FILE SECTION | +| JINDATAC | 運用日付サブPGM連絡領域 | WORKING-STORAGE | +| JINMSGAC | メッセージ編集サブPGM連絡領域 | WORKING-STORAGE | +| JINENDAC | ABENDサブPGM連絡領域 | WORKING-STORAGE | + +## 使用サブプログラム + +| サブPGM | 役割 | CALL箇所 | +|---------|------|---------| +| SUB01DAT | 運用日付取得 | 1000ITTSOR | +| SUB02MSG | メッセージ編集出力 | 1000ITTSOR | + +## 使用DB2テーブル + +なし(DB操作なし) + +## 処理フロー +1. 初期処理(開始メッセージ→運用日付取得→OPEN→R01初回読込) +2. R01読込→ランキング出力ループ(平均点降順に順位付与) +3. 終了処理(CLOSE→終了メッセージ) diff --git a/詳細設計書/詳細設計書_JIN03RAN.md b/詳細設計書/詳細設計書_JIN03RAN.md new file mode 100644 index 0000000..dc8b7f2 --- /dev/null +++ b/詳細設計書/詳細設計書_JIN03RAN.md @@ -0,0 +1,82 @@ +# JIN03RAN 詳細設計書 + +## プログラム概要 + +| 項目 | 内容 | +|------|------| +| プログラムID | JIN03RAN(人事→JINji, 03, ランキング→RAN) | +| プログラムタイプ | 編集出力(ランキング生成) | +| 機能 | SKILL-AGG(JIN02SKL出力のスキル別評価集計結果)を読み込み、平均点降順でランキング出力 | +| CALL方式 | メインプログラム(JCLからCALL) | +| DBアクセス | なし | +| 使用サブプログラム | SUB01DAT(日付), SUB02MSG(メッセージ) | + +## カバレッジ対象キーワード + +| 予約語 | 区分 | 使用箇所 | +|:-------|:----:|:---------| +| COMP-4 | 予約語(25) | `PIC 9(004) COMP-4` バイナリカウンタ + `ADD 1 TO CUN-COMP4` | +| CORR | 予約語(33) | `MOVE CORRESPONDING WS-CORR-SRC TO WS-CORR-DST` | +| DESCENDING | 予約語(45) | `OCCURS 3 TIMES DESCENDING KEY IS WS-THR` 内部表定義 | +| DOWN | 予約語(50) | `SET WRK-IDX DOWN BY 1` | +| UP | 予約語(177) | `SET WRK-RANK-NO UP BY 1`, `SET WRK-OUT-IDX UP BY 1` | +| VALUES | 予約語(183) | 88-level 単一VALUE(複数VALUESは未カバー) | + +## ファイル一覧 + +| DD名 | ファイル名 | 編成 | RECM | サイズ | I/O | 用途 | +|:----:|:---------:|:----:|:----:|:-----:|:---:|------| +| JIN03R01 | SKILL-AGG | SEQUENTIAL | FB | 200 | INPUT | スキル別評価集計結果(JIN02SKL出力) | +| JIN03W01 | RANK-OUT | SEQUENTIAL | FB | 200 | OUTPUT | ランキング出力 | + +## レコード定義 + +### SKILL-AGG-REC(JIN03R01, 200B) +JIN02SKL 詳細設計書の W01 定義と同じ(SKILL-AGG-REC.cpy 参照)。 + +### JIN03RAN-REC(JIN03W01, 200B 新規COPY書式) + +| 項目 | PIC | 内容 | +|:----|:---:|:-----| +| RANK-NO | 9(4) | ランキング順位 | +| SKILL-CODE | X(4) | スキルコード | +| SCORE | 9(3)V9(2) | 平均点 | +| EMP-COUNT | 9(5) | 評価人数 | +| LEVEL-NAME | X(20) | レベル名称 | +| RANK-CODE | X(1) | ランク区分(S/A/B) | +| FILLER | X(161) | — | + +## 処理詳細 + +### 段落一覧 + +| 段落名 | 機能 | +|:-------|:-----| +| 0000MAJCOLSOR | メイン制御(PERFORM連鎖) | +| 1000ITTSOR | 初期処理(開始メッセージ→OPEN→初回読込) | +| 2000MAINSOR | 主処理(ランク区分設定→WRITE→次件読込) | +| 2100READSOR | R01読込処理(EOF判定) | +| 4000STPSOR | 終了処理(CLOSE→終了メッセージ) | + +### 処理ロジック + +1. **1000ITTSOR(初期処理)** + - DISPLAY 'JIN03RAN START' UPON CONSOLE + - SUB02MSG で開始メッセージ出力 + - SUB01DAT で運用日付取得 + - R01 / W01 ファイル OPEN + - R01 初回 READ + +2. **2000MAINSOR(主処理ループ)** + - WRK-RANK-NO を SET UP BY 1 で順位UP + - COMP-4 カウンタ ADD 1 + - MOVE CORRESPONDING で項目編集 + - 平均点に基づきランク区分設定(S: >= 900, A: >= 600, B: < 600) + - 88-Level(WS-RANK-VAL-S/A/B)でランク妥当性確認 + - W01 WRITE + - 次のR01 READ + +3. **4000STPSOR(終了処理)** + - R01 / W01 CLOSE + - SET WRK-IDX DOWN BY 1 + - DISPLAY 'JIN03RAN END' UPON CONSOLE