サブシステムEをJIN04PRT〜JIN08TST追加で9本に拡充(全48プログラム)。JIN01-09のIBM COBOL完全版・bin再ビルド版・設計書・使用資源一覧・カバレッジ統計・DDL(schema_jin)・COPY(DB-COMMON/JIN04RPT-REC/JIN05REC)をroot側最新に同期。KYU03AGG/KYU08PRI/SHA02MNC/SHA10S10再テスト済み(全PASS)

This commit is contained in:
qiuqiuqiu
2026-08-05 00:11:07 +08:00
parent 182b161208
commit a918489f93
88 changed files with 2953 additions and 300 deletions
@@ -10,11 +10,12 @@ JIN04PRT(社員台帳印刷)と JIN05UPD(人事異動DB更新)を新規
未カバーのCOBOL予約語を計16語カバーする。
さらに JIN06SRT(社員データ並替)・JIN07SUB(社員情報取得サブPGM)・
JIN08TSTJIN07SUB呼出テスト)を追加し、
SORT/RELEASE/EXIT PROGRAM/ADDRESS/OMITTED/PERFORM TIMES をカバーする。
SORT/RELEASE/EXIT PROGRAM/ADDRESS/OMITTED をカバーする。
最後に JIN09RPT(社員別スキル集計レポート)を追加し、
CANCEL/I-O-CONTROL/NEXT SENTENCE/EJECT/SKIP2/FALSE の6語をカバーし、
CANCEL/I-O-CONTROL/NEXT SENTENCE/EJECT/FALSE の5語をカバーし、
PERFORM(複合条件)・SET(条件名 SET)を昇格させる。
当初は SAME RECORD AREA もカバー予定だったが、GnuCOBOL 3.2 でレコード長の
SKIP2 はソース行 `*SKIP2` がコメント扱いでディレクティブとして機能しないため、
実装せず統計対象から除外する。当初は SAME RECORD AREA もカバー予定だったが、GnuCOBOL 3.2 でレコード長の
異なるファイル間の共有領域が最小レコード長に固定される制約が判明したため、
SAME は断念した。)
@@ -55,7 +56,7 @@ SAME は断念した。)
| TOP-MARGIN | 2 | 台帳印刷上部余白 |
| BOTTOM-MARGIN | 4 | 台帳印刷下部余白 |
| MAX-TRANS | 500 | JIN05UPD 最大処理件数(PERFORM UNTIL の上限ガード) |
| MAX-SORT-REC | 999 | JIN06SRT 最大SORT件数(PERFORM TIMES の上限ガード) |
| MAX-SORT-REC | 999 | JIN06SRT 最大SORT件数(PERFORM UNTIL + WRK-SORT-CNT の上限ガード) |
| SKILL-LIST-MAX | 20 | JIN09RPT 内部表(スキル別集計)最大要素数 |
| SUM-LINES-MAX | 100 | JIN09RPT 1社員あたり最大出力行数 |
@@ -114,7 +115,7 @@ DBアクセス用の COPY 書式として `DB-COMMON` を WORKING-STORAGE に取
│ CLOSE WITH LOCK で出力ファイル保護
│ STRING ON OVERFLOW で安全な文字列編集
│ エラー時 STOP literal で終了
├── → JIN-LEDGER133B 台帳印刷ファイル)
├── → JIN-LEDGER132B 台帳印刷ファイル)
╞══ JINJ050 ═══════════════════════════════════╡
│ JIN05UPD(人事異動DB更新) PGMパターン: DB更新
@@ -133,7 +134,7 @@ DBアクセス用の COPY 書式として `DB-COMMON` を WORKING-STORAGE に取
╞══ JINJ060 ═══════════════════════════════════╡
│ JIN06SRT(社員データ並替) PGMパターン: 34(SORT
│ EMP-VALID200B)を INPUT PROCEDURE で読込
│ PERFORM TIMES で最大件数制限(MAX-SORT-REC
│ PERFORM UNTIL + WRK-SORT-CNT 比較で最大件数制限(MAX-SORT-REC
│ RELEASE で SORT ファイルへ送出
│ SORT ... ON ASCENDING KEY EMP-ID
│ OUTPUT PROCEDURE で RETURN 受取 → SORTED-EMP へ書出
@@ -156,7 +157,7 @@ DBアクセス用の COPY 書式として `DB-COMMON` を WORKING-STORAGE に取
│ NEXT SENTENCE で文言継続制御、SET 条件名 TO FALSE で状態リセット
│ 集計完了後、社員別に SKILL-SUM(120B)へ出力
│ CANCEL 'SUB02MSG' でメッセージサブPGMを解放
│ EJECT / SKIP2 でソースページ・行制御
│ EJECT でソースページ・行制御
├── → SKILL-SUM(120B 社員別スキル集計結果)
└── 異常 → VALID-ERROR(80B エラーレコード)
```
@@ -297,10 +298,10 @@ DBアクセス用の COPY 書式として `DB-COMMON` を WORKING-STORAGE に取
| 3 | JIN03RAN | 36 ランキング生成 | スキル評価集計結果を平均点降順にランキング出力 | SKILL-AGG-REC, JIN03REC, JINDATAC, JINMSGAC, JINENDAC | なし | SUB01DAT, SUB02MSG |
| 4 | JIN04PRT | 04 編集出力(印刷制御) | 社員マスタを読込みLINAGE制御で台帳印刷。PAGE-COUNTER/DATE/TIMEカバー | JIN01REC, JIN04RPT-REC, JINDATAC, JINMSGAC, JINENDAC | なし | SUB01DAT, SUB02MSG, SUB03END |
| 5 | JIN05UPD | 09 DB更新 | 人事異動トランザクションを読込みDB2社員マスタを更新。EXCEPTION/FALSE/VALUES/REPLACING/TIMES/THRU/ON OVERFLOW/BY CONTENTカバー | JIN05REC, VALID-ERROR-REC, JINDATAC, JINMSGAC, JINENDAC, DB-COMMON | DB2EMPLOYEE | SUB01DAT, SUB02MSG, SUB03END |
| 6 | JIN06SRT | 34 SORT | EMP-VALIDをEMP-ID昇順に並替。SORT/RELEASE/PERFORM TIMESカバー | JIN01REC, VALID-ERROR-REC, JINDATAC, JINMSGAC, JINENDAC | なし | SUB01DAT, SUB02MSG, SUB03END |
| 6 | JIN06SRT | 34 SORT | EMP-VALIDをEMP-ID昇順に並替。SORT/RELEASEカバー(上限はPERFORM UNTIL+WRK-SORT-CNT>999 | JIN01REC, VALID-ERROR-REC, JINDATAC, JINMSGAC, JINENDAC | なし | SUB01DAT, SUB02MSG, SUB03END |
| 7 | JIN07SUB | 25 サブPGM | 社員IDで社員情報を取得して返却。EXIT PROGRAM/ADDRESS/OMITTEDカバー | JIN01REC | なし | —(CALLされる側) |
| 8 | JIN08TST | 05 振り分け(IF | JIN07SUB呼出テストドライバ。OMITTED引数でCALL。テスト専用 | JINDATAC, JINMSGAC, JINENDAC | なし | JIN07SUB, SUB01DAT, SUB02MSG, SUB03END |
| 9 | JIN09RPT | 32 1:N+キーブレイク | 社員別スキル集計レポート。CANCEL/I-O-CONTROL/NEXT SENTENCE/EJECT/SKIP2/FALSEカバー | SKILL-EVAL-REC, SKILL-MST-REC, JIN09REC, VALID-ERROR-REC, JINDATAC, JINMSGAC, JINENDAC | なし | SUB01DAT, SUB02MSG, SUB03END |
| 9 | JIN09RPT | 32 1:N+キーブレイク | 社員別スキル集計レポート。CANCEL/I-O-CONTROL/NEXT SENTENCE/EJECT/FALSEカバー | SKILL-EVAL-REC, SKILL-MST-REC, JIN09REC, VALID-ERROR-REC, JINDATAC, JINMSGAC, JINENDAC | なし | SUB01DAT, SUB02MSG, SUB03END |
---
@@ -333,7 +334,7 @@ DBアクセス用の COPY 書式として `DB-COMMON` を WORKING-STORAGE に取
| 3 | PAGE-COUNTER | × | WRITE ADVANCING PAGE 時の特殊レジスタ参照 | JIN04PRT |
| 4 | UPON | × | DISPLAY msg UPON CONSOLE | JIN04PRT |
| 5 | EJECT | × | ソース行 EJECT によるページ制御 | JIN04PRT |
| 6 | SKIP2 | × | ソース行 SKIP2 による改行制御 | JIN04PRT |
| 6 | SKIP2 | × | 実装しない。`*SKIP2` はコメント行であり SKIP2 ディレクティブとして機能しないため統計対象から除外 | JIN04PRT |
| 7 | CLOSE WITH LOCK | △(単純のみ) | CLOSE file WITH LOCK | JIN04PRT |
| 8 | STOP literal | △(RUNのみ) | STOP 'error message' | JIN04PRT |
| 9 | STRING ON OVERFLOW | △(未使用) | STRING ... ON OVERFLOW | JIN04PRT, JIN05UPD |
@@ -349,7 +350,7 @@ DBアクセス用の COPY 書式として `DB-COMMON` を WORKING-STORAGE に取
| 19 | DISPLAY WITH NO ADVANCING | △(未使用) | DISPLAY 'msg' WITH NO ADVANCING | JIN05UPD |
| 20 | SORT | × | SORT ファイル ON ASCENDING KEY ... INPUT/OUTPUT PROCEDURE | JIN06SRT |
| 21 | RELEASE | × | INPUT PROCEDURE 内で RELEASE 送出 | JIN06SRT |
| 22 | PERFORM TIMES | △(UNTILのみ) | PERFORM 段落 TIMES 回数指定 | JIN06SRT |
| 22 | PERFORM TIMES | △(UNTILのみ) | 実装しない。PERFORM UNTIL + 上限カウンタ(WRK-SORT-CNT>MAX-SORT-REC)で上限ガードを実装 | JIN06SRT |
| 23 | EXIT PROGRAM | △(EXITのみ) | サブPGM終了を EXIT PROGRAM で実施 | JIN07SUB |
| 24 | ADDRESS | × | MOVE ADDRESS OF 引数 TO WS-PTR で引数アドレス取得 | JIN07SUB |
| 25 | OMITTED | × | CALL ... USING ... OMITTED + IS OMITTED 判定 | JIN08TST, JIN07SUB |
@@ -358,7 +359,7 @@ DBアクセス用の COPY 書式として `DB-COMMON` を WORKING-STORAGE に取
| 28 | NEXT | × | NEXT SENTENCE で後続文へ | JIN09RPT |
| 29 | SENTENCE | × | NEXT SENTENCE で後続文へ | JIN09RPT |
| 30 | EJECT | × | ソース行 EJECT によるページ制御 | JIN09RPT |
| 31 | SKIP2 | × | ソース行 SKIP2 による改行制御 | JIN09RPT |
| 31 | SKIP2 | × | 実装しない。`*SKIP2` はコメント行であり SKIP2 ディレクティブとして機能しないため統計対象から除外 | JIN09RPT |
| 32 | FALSE | × | SET 条件名 TO FALSE で状態リセット | JIN09RPT |
| 33 | PERFORM(多重ループ/複合条件) | △(UNTIL/単一のみ) | PERFORM VARYING 多重ループ + 複合条件(AND/OR | JIN09RPT |
| 34 | SET(条件名) | △(UP BY/DOWN BYのみ) | SET 条件名 TO TRUE/FALSE による条件名設定 | JIN09RPT |
@@ -367,7 +368,7 @@ DBアクセス用の COPY 書式として `DB-COMMON` を WORKING-STORAGE に取
| 指標 | 現状 | 改善後 |
|------|:----:|:------:|
| 予約語×(未使用) | 41語 | 34語(7語削減:CANCEL/I-O-CONTROL/NEXT/SENTENCE/EJECT/SKIP2/FALSE |
| 予約語×(未使用) | 41語 | 35語(6語削減:CANCEL/I-O-CONTROL/NEXT/SENTENCE/EJECT/FALSE |
| PERFORM | △ | ◎(多重ループ+複合条件IFで実質的カバー) |
| SET | △ | ◎(条件名 SET TO FALSE で実質的カバー) |
| ◎+△率 | 80.0%164/205 | 83.4%171/205 |