操作
レビュー指摘 #12105
未完了KS4120指摘一覧
開始日:
期日:
進捗率:
0%
予定工数:
実開始日:
DD名:
INCLUDE:
DSN:
バグ区分:
QA分析:
方針(第一貨物):
実終了日:
ツールのバージョン:
AsIsSource行:
進捗計画:
設計・開発者:
画面ID:
機能区分:
機能ID:
レビュー指摘区分:
記述の仕方
検査完了日:
検査依頼日:
説明
KS41020 移行設計書(クラス設計書) レビュー指摘(誤り)¶
| 項目 | 内容 |
|---|---|
| 対象資料 | クラス設計書_KS41020_住所情報の付加.xlsx(表紙/改版履歴/クラス概要/処理フロー/プロパティ一覧/メソッド一覧/メソッド詳細/DB更新仕様/マッピング仕様/処理フロー生成定義) |
| 突合せ基準 | KS41020P_仕様書.md(現行 PL/I ソース KS41020P.pl1 から作成)、管理台帳レイアウト KANBASED(KS41020P.xlsx)、仮定の JCL(DAIMNT3J_jobflow_work.svg) |
| 作成日 | 2026-10-26 |
| 関連資料 | 確認事項(漏れ・要確認・軽微)は「KS41020_クラス設計書_確認事項.md」 |
凡例¶
| 区分 | 意味 |
|---|---|
| 【重大な誤り】 | 現行と処理結果が変わり、出力の内容・有無に大きく影響するもの |
| 【誤り】 | 現行と処理結果が変わるもの、または記述が明確に誤っているもの |
- 現行の根拠は、ソースを「pl1 L○○」、仕様書を「仕様書 ○章」と書きます。
- シート番号は Excel のシート順です(1=表紙、2=改版履歴、3=クラス概要、4=処理フロー、5=プロパティ一覧、6=メソッド一覧、7=メソッド詳細、8=DB更新仕様、9=マッピング仕様、10=処理フロー生成定義)。
現行の処理(要点)¶
| 項目 | 現行(KS41020P) | 仮定の JCL での扱い |
|---|---|---|
| 入力 | 管理台帳ワーク(顧客所在地コード順に整列済み)を順次読込(pl1 L67、L124) | DAIMNT3J_0030TD を ORDER BY KAADCODA, KAADCODB(顧客所在地コード11桁) で読む(現行 JCL STEP6 SORT FIELDS=(13,11,CH,A) の置換え) |
| 処理 | 顧客所在地コードが変わるたびに住所DB2(RDADRN)を1回検索し、同じコードのレコードすべてに住所名称6項目と仮住所区分を設定(キーブレイク)。検索前に仮住所区分を 0、名称3を空白に初期化する(pl1 L71〜L129) | 同じ |
| 検索結果 | 該当あり:名称3(カナ)があれば区分 2、カナは先頭47バイト、漢字は 2〜37 バイト目の36バイトに SO/SI を付けて 38 バイト。名称3が空白なら区分 1。該当なし:名称1・2を空白、名称3を空白、区分は 0。SQL エラー:メッセージを出して停止(pl1 L85〜L112、L136〜L139) | 同じ |
| 終了判定 | 入力終了時に所在地コードへ HIGH(11) を入れてループを抜ける(pl1 L60、L114) | - |
| 出力 | 管理台帳ワーク(入力と同じ長さ)。毎回新規作成(JCL STEP8 DISP=(NEW,KEEP,DELETE)) |
DAIMNT3J_0060TD。書込み前にクリア |
件数¶
| シート | 重大な誤り | 誤り | 計 |
|---|---|---|---|
| プロパティ一覧 | 0 | 1 | 1 |
| メソッド詳細 | 0 | 3 | 3 |
| DB更新仕様 | 1 | 0 | 1 |
| 合計 | 1 | 4 | 5 |
上記以外のシート(表紙/改版履歴/クラス概要/処理フロー/メソッド一覧/マッピング仕様/処理フロー生成定義)は指摘なし。処理フローの図・処理フロー生成定義の誤りは、メソッド詳細の指摘と同じ内容のため、メソッド詳細にまとめました。
プロパティ一覧¶
| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| 5-1 | 【誤り】 | AY27(管理台帳 DAIMNT3J_0030TD の取得条件) | 管理台帳を「条件無し」で取得しており、並び順(ORDER BY)の指定が無い。仮定の JCL では、現行の SORT ステップ(JCL STEP6 SORT FIELDS=(13,11,CH,A)、データ部 9〜19 バイト目)に代わり、KS41020 が 顧客所在地コード(KAADCODA、KAADCODB)昇順 で読む。メソッド詳細(E31〜E54)は所在地コードが変わるたびに住所DB2を検索するキーブレイクの作りなので、並び順が違っても設定される値は同じだが、同じ所在地コードが離れて出てくるたびに検索し直すため、検索回数が増える(仕様書 8章)。 |
取得条件に「ORDER BY 配送エリアコードA[KAADCODA] 昇順, 配送エリアコードB[KAADCODB] 昇順」を加える。 |
メソッド詳細¶
| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| 7-1 | 【誤り】 | E31、H50(現在住所コードの終了判定) | ループの終了判定に「現在住所コード=スペース(11)」を使っている。現行は所在地コードに入り得ない HIGH(11) を使う(pl1 L60、L114)。所在地コード(KAADCODA+KAADCODB)が空白のレコードがあると、そのレコードで外側ループを抜け、残りのレコードが登録されない。ORDER BY 昇順(5-1)では空白が先頭に来るため、空白のレコードが1件でもあれば、ほぼ全件が登録されない。 | 終了判定を「全レコード処理済み」を表すフラグ(またはデータに入り得ない値)にする。 |
| 7-2 | 【誤り】 | D86〜D107(管理台帳データ作成処理)、処理フロー生成定義 C76〜C77 | 住所DB2に該当が無い場合に何も設定しておらず、仮住所区分(VNADDTKB)が入力の値のまま登録される。現行は検索のたびに仮住所区分を 0 に初期化し、該当が無いときは 0 を出力する(pl1 L72、L102〜L110、L119、仕様書 5.2・5.3)。入力の値は前工程 KS41000 の初期値で 0 ではないため、該当なしの顧客の仮住所区分が現行と変わる。 | 該当が無い場合(以外の場合)に「仮住所区分[VNADDTKB] ← "0"」と、名称1〜3(カナ・漢字)を空白にする処理を加える。 |
| 7-3 | 【誤り】 | F95(仮住所漢字3) | 「仮住所漢字3[VNADVTN3] ← 住所DB2.[大字.通称_漢字+字.丁目_漢字][ADRNVTN3]」と全体を設定しており、桁の切出しが無い。現行は ADRNVTN3(62 バイト=全角30文字)の 2〜37 バイト目(全角18文字)だけを取り出して設定する(pl1 L92、仕様書 8章)。設定先は全角18文字分(該当なしの F101〜F103 では 18 桁でスペース埋めしている)なので、19文字以上の住所では登録エラーになるか、現行と値が変わる。カナ(F94)は「先頭47桁」と切り出しているのに、漢字だけ抜けている。 | 「ADRNVTN3 の先頭18文字(全角)をセット」のように切出し桁を書く。 |
DB更新仕様¶
| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| 8-1 | 【重大な誤り】 | BC4(処理:INSERT)、A3〜BO318 全体 | DAIMNT3J_0060TD への登録が INSERT だけで、登録の前にテーブルをクリアする処理がどこにも無い。現行の出力ワークは毎回新規作成(JCL STEP8 DISP=(NEW,KEEP,DELETE))し、使用後に削除(STEP11)するため、前回分は残らない。仮定の JCL でも「WORKDB は書込み前にクリア」としている。このままでは2回目以降の実行で前回分が残るか、キー重複で登録できず、後続の KS41030 以降が前回分と合わせて処理する(KS41000・KS41010 レビュー指摘 8-1 と同じ)。 |
登録前に DAIMNT3J_0060TD の全件削除を行う処理を追加する(JOB 側で行う場合は、その旨をクラス概要に書く)。 |
ファイル
表示するデータがありません
操作