From 1454a4a5e24d8a77bec47172623fdf56959b1b52 Mon Sep 17 00:00:00 2001 From: opencode Date: Sat, 29 Aug 2026 21:45:44 +0800 Subject: [PATCH] docs(COBOL): add KYU COBOL deficiencies to investigation record (Java-side excluded) --- JavaSrc/doc/COBOL不备点_调查记录.md | 61 +++++++++++++++++------------ 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/JavaSrc/doc/COBOL不备点_调查记录.md b/JavaSrc/doc/COBOL不备点_调查记录.md index c9f4656..802af87 100644 --- a/JavaSrc/doc/COBOL不备点_调查记录.md +++ b/JavaSrc/doc/COBOL不备点_调查记录.md @@ -1,16 +1,18 @@ # 既存 COBOL コード不備点 調査記録 - **作成日**: 2026-08-25 -- **背景**: KIN01‑09 / ZAN01‑06 の COBOL→Java 変換後、Java↔COBOL↔設計書 の三方照合を実施。本ファイルは「既存 COBOL 側に存在する不備・設計書からの乖離」を記録し、後続調査・対応の起点とする。 +- **更新日**: 2026-08-29(KYU01‑09 追加) +- **背景**: KIN01‑09 / ZAN01‑06 / KYU01‑09 の COBOL→Java 変換後、Java↔COBOL↔設計書 の三方照合を実施。本ファイルは「既存 COBOL 側に存在する不備・設計書からの乖離」のみを記録する。 +- **記録方針**: **Java 側の缺陷(Java 真缺陷等)は本記録の対象外**。COBOL が正・Java が誤であった事象は、COBOL 側に不備がないため ◯(または –)として扱い、Java 側対応は別途管理する。 - **関連成果物**: - - 修正済 Java: `src/Sub05TimSub.java`(丸め), `src/Kin07DaiMain.java`(未知休暇型), `src/dto/Kin03Rec.java`(数値埋込), `src/Zan03ChkMain.java`(休日フラグ互換), `src/util/ConvUtil.java`(padLeftZero 追加) - - COBOL 側マーキング: 各対象行に `COBOL-DEFICIENCY:` コメントを付与済(参照先=本ファイル) + - COBOL 側マーキング: 各対象行に `COBOL-DEFICIENCY:` コメントを付与(参照先=本ファイル)。ZAN/KIN は `cobol/KIN01INP.cbl` 等に既存、KYU は `cobol/KYU01CVT.cbl:306` に追加。 --- -## 1. 照合結果サマリ(全 30 項目) +## 1. 照合結果サマリ(照合対象 39 項目) -判定: ◯=一致(無影響) △=軽差/条件無影響 ✗=差異(有影響) +判定: ◯=一致(無影響) △=軽差/条件無影響 ✗=差異(有影響・COBOL側不備) +※ Java 側缺陷は記録対象外のため、COBOL が正しい事象は ✗/△ とせず ◯ または – とする。 | 模块 | 文件 | 判定 | COBOL 側問題? | 備考 | |------|------|------|--------------|------| @@ -18,7 +20,7 @@ | ZAN02 | Zan02ChkMain | ◯ | – | キー比較のみ条件差 | | **ZAN03** | Zan03ChkMain | ✗ | **C類** | 休日フラグ値('1')設計未規定/運用慣習 | | ZAN04 | Zan04MatMain | ◯ | – | – | -| **ZAN05** | Zan05CalMain | ✗ | –(COBOL正) | Java 側真缺陷(丸め)→已修 | +| ZAN05 | Zan05CalMain | ◯ | – | COBOL 正(Java 側缺陷は記録対象外) | | ZAN06 | Zan06UpdMain | ◯ | – | ADD は COBOL と一致 | | **KIN01** | Kin01InpMain | ✗ | **A類** | フィールド数ゲート off‑by‑one | | KIN02 | Kin02UpdMain | ◯ | – | – | @@ -26,7 +28,7 @@ | **KIN04** | Kin04ChkMain | ✗ | **A類** | フィールド数ゲート off‑by‑one | | **KIN05** | Kin05MatMain | ✗ | **A類** | WRK‑BEST 未リセット | | KIN06 | Kin06CldMain | △ | **D類**(条件) | 休日全件取込≤50 件の上限リスク | -| KIN07 | Kin07DaiMain | △ | –(COBOL正) | Java 側真缺陷(未知型)→已修 | +| KIN07 | Kin07DaiMain | ◯ | – | COBOL 正(Java 側缺陷は記録対象外) | | **KIN08** | Kin08DbuMain | ✗ | **B類** | RESET で MONTHLY のみ削除/T カード 10 名上限 | | **KIN09** | Kin09CsvMain | ✗ | **B類** | FULL/SHORT 出力範囲反転/時間欄書式 | | SUB01 | Sub01DatSub | △ | – | TZ 依存(条件) | @@ -35,8 +37,17 @@ | SUB04 | Sub04ChkSub | △ | – | parseInt vs NUMVAL(条件) | | SUB05 | Sub05TimSub | △ | – | double 精度(条件) | | PAR DTO群 | Zan*Par/Kin*Rec 等 | ◯ | – | – | -| **Kin03Rec** | dto/Kin03Rec | △ | –(copybook正) | Java 側真缺陷(埋込)→已修 | +| Kin03Rec | dto/Kin03Rec | ◯ | – | copybook 正(Java 側缺陷は記録対象外) | | EmpRec | dto/EmpRec | – | – | COBOL 対応物なし(照合不可) | +| **KYU01** | Kyu01CvtMain | ✗ | **B類** | エラー区分リテラル設計乖離(EMPID-ERR vs EMP- ) | +| KYU02 | Kyu02RegMain | ◯ | – | COBOL 側不備なし | +| KYU03 | Kyu03AggMain | ◯ | – | COBOL 側不備なし(Java 側缺陷は記録対象外) | +| KYU04 | Kyu04CalMain | ◯ | – | COBOL 側不備なし(Java 側缺陷は記録対象外) | +| KYU05 | Kyu05DedMain | ◯ | – | COBOL 側不備なし | +| KYU06 | Kyu06UpdMain | ◯ | – | COBOL 側不備なし | +| KYU07 | Kyu07DivMain | ◯ | – | 三方一致(KYU07Dnn);過去の「COBOL=KYU07nn」見解は誤り | +| KYU08 | Kyu08PriMain | ◯ | – | COBOL 側不備なし | +| KYU09 | Kyu09MrgMain | ◯ | – | COBOL 側不備なし(Java 側缺陷は記録対象外) | --- @@ -68,7 +79,7 @@ ### B 類:COBOL が設計書から乖離(Java は設計書通り=正) -> これらは「COBOL の挙動が設計と食い違っている」点。Java を COBOL に合わせて戻すと**設計違反**になる。原則として **Java を維持**し、COBOL 側を不備として記録する。 +> これらは「COBOL の挙動が設計と食い違っている」点。Java を COBOL に合わせて戻すと設計違反になる。原則として **Java を維持**し、COBOL 側を不備として記録する。 #### B‑1. KIN09CSV — FULL/SHORT 出力範囲が設計と逆 - **ファイル:行**: `cobol/KIN09CSV.cbl:160` `IF MODE-SHORT PERFORM 2500-SHORT-MODE` @@ -97,6 +108,14 @@ - **Java 挙動**: 全件格納(設計通り、無制限)。 - **対応**: **Java 維持**。COBOL 側の実装上限制(設計未記載のため、COBOL の制限を「仕様」とみなすか要合意)。 +#### B‑5. KYU01CVT — エラー区分リテラルが設計と乖離 +- **ファイル:行**: `cobol/KYU01CVT.cbl:306` `MOVE 'EMP- ' TO W02ERR-CATEGORY` +- **COBOL 挙動**: 社員番号空チェック時、エラー区分に `EMP- `(末尾 2 空白、計 8 文字)を出力。 +- **設計指定**: `doc/design/疑問点_KYU01CVT.md`(詳細設計書)L155「ERR-CATEGORY は 'CSV-ERR' または 'EMPID-ERR' で固定」。 +- **Java 挙動**: `src/Kyu01CvtMain.java:277` にて `EMPID-ERR` を出力(設計通り)。 +- **COBOL 側問題**: 設計が規定するリテラル `EMPID-ERR` を出力せず、別字面 `EMP- ` を出力(事実上の定数バグ/設計乖離)。 +- **対応**: Java は設計準拠で正 → **Java 維持**。COBOL 側をレガシー不備として記録。 + ### C 類:設計書未規定/データ慣習 #### C‑1. ZAN03CHK — 休日フラグ値の指定欠落 @@ -118,34 +137,24 @@ --- -## 3. Java 側真缺陷(本調査で発見・既に修正済) - -参考として、COBOL ではなく **Java 側にあった真の缺陷**を記録(いずれも修正完了)。 - -| 項目 | ファイル | 修正内容 | -|------|----------|----------| -| ZAN05 丸め | Sub05TimSub.java | `Math.round` → `Math.floor`(設計=0.1h 切捨) | -| KIN07 未知休暇型 | Kin07DaiMain.java | 未知型を無視(W02 非出力)に変更 | -| Kin03Rec 数値埋込 | dto/Kin03Rec.java | `padRight` → `padLeftZero`(前ゼロ)+ ConvUtil に `padLeftZero(String,int)` 追加 | -| ZAN03 フラグ互換 | Zan03ChkMain.java | フラグ `'1'` と `'H'` の両方を受容 | - ---- - -## 4. 設計書自身の矛盾(COBOL/Java 双方に関係) +## 3. 設計書自身の矛盾(COBOL/Java 双方に関係) 1. **KIN09CSV 詳細設計書**: PARM 表(L33) `FULL=日別+月次` に対し、§3 見出し「SHORT 時のみ追加処理(2500‑SHORT‑MODE)」が逆のニュアンス。正規定義は PARM 表。→ Java は PARM 表準拠(正)。 2. **KIN08DBU 詳細設計書**: ステップ 3‑1 に `MONTHLY_ABSENCE` 削除のみ記載され、`DAILY_RECORDS` 削除が抜けている(使用 DB 表表・SYSIN 仕様からのみ読取可)。→ Java は両削除(正)。 3. **ZAN03CHK**: 休日フラグ値の規定なし(C‑1)。 +4. **KYU07DIV 補足(設計矛盾ではない)**: 過去に「COBOL 実際は KYU07nn、設計 KYU07Dnn で乖離(B類)」と見なしたが、実 COBOL ソース(`cobol/KYU07DIV.cbl:37` 等)は `KYU07D01`~`KYU07D50` を使用。設計=COBOL=Java の三方一致であり、COBOL 不備・設計矛盾ともに存在しない。当該見解は誤りであった。 --- -## 5. 推奨対応方針 +## 4. 推奨対応方針 - **A 類 (KIN01/04/05)**: COBOL バグ。Java は設計準拠で正 → **Java 維持**。COBOL 側をレガシー不備として本ファイルに記録。業務確認の上、COBOL を「仕様通り(バグ有)」で据え置くか別途 COBOL 修正するか決定。 -- **B 類 (KIN09/KIN08)**: COBOL が設計から乖離。Java は設計準拠 → **Java 維持**。COBOL 側を不備記録。**厳密な COBOL 出力パリティ(並行運用比較等)が必要な場合のみ**、Java に「COBOL 互換モード」フラグを検討(要合意)。 +- **B 類 (KIN09/KIN08/KYU01)**: COBOL が設計から乖離。Java は設計準拠 → **Java 維持**。COBOL 側を不備記録。**厳密な COBOL 出力パリティ(並行運用比較等)が必要な場合のみ**、Java に「COBOL 互換モード」フラグを検討(要合意)。 - **C 類 (ZAN03)**: 設計書へフラグ値('1')を追記。Java は両対応済。 - **D 類 (KIN06)**: 本番休日マスタ件数を確認し、50 件超なら双方で上限緩和。 -- **設計書矛盾**: 上記 3 点を設計書へ反映(設計側修正)。 +- **設計書矛盾**: 上記を設計書へ反映(設計側修正)。 +- **Java 側缺陷**: 本記録の対象外(別途チケット/PR で管理)。 --- + *本ファイルは調査記録であり、コード変更は別途チケット/PR で管理すること。COBOL 側マーキング箇所は各 `.cbl` 内の `COBOL-DEFICIENCY:` コメントを参照。*