サブシステム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:
@@ -10,11 +10,12 @@ JIN04PRT(社員台帳印刷)と JIN05UPD(人事異動DB更新)を新規
|
||||
未カバーのCOBOL予約語を計16語カバーする。
|
||||
さらに JIN06SRT(社員データ並替)・JIN07SUB(社員情報取得サブPGM)・
|
||||
JIN08TST(JIN07SUB呼出テスト)を追加し、
|
||||
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-LEDGER(133B 台帳印刷ファイル)
|
||||
├── → JIN-LEDGER(132B 台帳印刷ファイル)
|
||||
│
|
||||
╞══ JINJ050 ═══════════════════════════════════╡
|
||||
│ JIN05UPD(人事異動DB更新) PGMパターン: DB更新
|
||||
@@ -133,7 +134,7 @@ DBアクセス用の COPY 書式として `DB-COMMON` を WORKING-STORAGE に取
|
||||
╞══ JINJ060 ═══════════════════════════════════╡
|
||||
│ JIN06SRT(社員データ並替) PGMパターン: 34(SORT)
|
||||
│ EMP-VALID(200B)を 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 | DB2(EMPLOYEE) | 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) |
|
||||
|
||||
Reference in New Issue
Block a user