docs(COBOL): add KYU COBOL deficiencies to investigation record (Java-side excluded)
This commit is contained in:
@@ -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:` コメントを参照。*
|
||||
|
||||
Reference in New Issue
Block a user