レビュー指摘 #11948 » KS60780_移行設計書_確認事項.md
KS60780 移行設計書 確認事項
| 項目 | 内容 |
|---|---|
| 対象資料 | ① クラス設計書 KS60780「請求データ&請求集約コードマッチング」(非表示シート・処理フローシートは対象外) ② テーブル定義 KS60750J_0100TD(No.22 の出力=現行 WORK0100:事業所用)と DDL ③ テーブル定義 KS60750J_0110TD(No.23 の出力=現行 WORK0110:エコデリバー用)と DDL |
| 突合せ基準 | 現行ソース KS60780P(PL/I)、コピーブック SQALLHED、JCL DAISEQ4J(No.22 L710〜L719、No.23 L720〜L729、SORT4 L730〜L776)、KS60760・KS60770 のレビュー指摘(入力 0030TD・0040TD・0050TD) |
| 記述ルール | 設計書作成ルール(バッチ抜粋) |
| 作成日 | 2026-10-15(初版)/2026-10-22(記述ルールを反映して改訂) |
| 関連資料 | 誤りの指摘は「KS60780_移行設計書_レビュー指摘.md」 |
凡例
| 区分 | 意味 |
|---|---|
| 【漏れ】 | ルールで記述することになっている項目が、記載されていないもの |
| 【要確認A】 | 処理に必要な記載が欠けているもの(【漏れ】を除く) |
| 【要確認B】 | 処理結果は変わらないが、ルールの書き方に合っていないもの |
| 【要確認C】 | 移行に伴う意図的な変更の可能性があるもの、前提が読み取れないもの、または現行との違いが小さく対応を確認するもの |
- 根拠は、ソースを「src L○○」、JCL を「JCL L○○」、ルールを「ルール X.Y」「ルール X.Y.Z」と書きます。
- 0110TD は名前以外が 0100TD と同じなので、同じ事象は「T100-n と同じ」と書きます。前段の KS60760・KS60770 で指摘済みの入力テーブルの問題は、その指摘No を参照します。
- 次のものは対象外です。
- 非表示シート(処理フロー生成定義)
- ルールで記述しなくてもよい項目:処理フロー図(ルール 5.2)、メソッド名・物理名(ルール 5.4、8.1)、処理の項番(ルール 2.5「可能な限り」)、"" / 0 / false の初期値(ルール 5.5)
- 軽微なルール違反(先行開発で許可されていた書き方。条件の「==」「≠」、改版履歴・更新履歴の記載など)
- 出力 0100TD・0110TD の事前削除は、バッチ設計書 DAISEQ4J の処理フロー(KS60780 の直前の削除ステップ)で行うため、指摘していません。
- ルール 5.3・5.6・5.7 が参照する3章はバッチ抜粋に無いため、プロパティ一覧・DB更新仕様・マッピング仕様は2章のルールと現行一致で確認しています。
- 指摘番号はレビュー指摘(誤り)と通し番号です。
現行の処理(要点)
| 項目 | 現行の仕様 |
|---|---|
| 実行 | 同じプログラムを2回実行する。No.22:TRFILE=WORK0060(優先印刷マスターに有る)→ WORK0100(事業所用)。No.23:TRFILE=WORK0080(無い)→ WORK0110(エコデリバー用)。INFILE はどちらも WORK0090 |
| マッチング | INFILE のキーは SDTASQNO を13桁にした2〜8桁目、TRFILE のキーは TRKOCD。文字比較で、片方が終わると HIGH(7)。一致したら両方を1件ずつ読み進める(1対1)(src L69〜L107) |
| 一致したとき | TRDAIH=TRKOCD なら SDTADTID←00、違えば 99。SDTASPA1 ← TRDAIH∥TRTNCD(11桁)。本締(SDTAKARI=1)だけレコード全体を書き、仮締は件数を数える(src L83〜L93) |
| メッセージ |
<<< OUTPUT COUNT = 、<<< KARI JIME = (右詰め12桁、0件でも表示。src L111〜L112) |
| 出力の後続 | SORT4(代表扱い店=SDTASPA1 の8〜11桁 → 集約代表=1〜7桁 → SDTACKTT。JCL L742・L774)→ KS60790 |
件数
| 資料 | シート | 漏れ | 要確認A | 要確認B | 要確認C | 計 |
|---|---|---|---|---|---|---|
| ① | クラス概要 | 0 | 1 | 0 | 0 | 1 |
| ① | プロパティ一覧 | 0 | 1 | 0 | 1 | 2 |
| ① | メソッド一覧 | 0 | 0 | 1 | 0 | 1 |
| ① | メソッド詳細 | 0 | 1 | 7 | 4 | 12 |
| ① | DB更新仕様 | 0 | 2 | 0 | 0 | 2 |
| ② | KS60750J_0100TD | 1 | 1 | 0 | 3 | 5 |
| ③ | KS60750J_0110TD | 1 | 1 | 0 | 3 | 5 |
| 合計 | 2 | 7 | 8 | 11 | 28 |
表紙・改版履歴、マッピング仕様は確認事項なし。
① クラス設計書 KS60780
クラス概要
| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| CL-1 | 【要確認A】 | B5、B6 | ソースのコメント(src L7〜L9)の転記だけで、2回実行して入力データ区分 "1" は 0030TD→0100TD(事業所用)、"2" は 0040TD→0110TD(エコデリバー用)を作ること、荷主コードで1対1に突き合わせ、データID・SDTASPA1 を書き換えて本締だけを出力することが書かれていない(JCL L710〜L729、src L81〜L95)。 | 「0050TD と 0030TD("1")または 0040TD("2")を荷主コードで1対1に突き合わせ、一致した本締の見出しのデータID・区分を書き換えて 0100TD(事業所用)または 0110TD(エコデリバー用)に登録する。」と書く。 |
プロパティ一覧
| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| PR-1 | 【要確認A】 | P5、BG5 | 入力データ区分をどこから設定するか(起動引数など)と、どのステップが "1"/"2" を渡すかが書かれておらず、BG5 に出力先も無い。取り違えると事業所用とエコデリバー用が入れ替わる(現行は DD の割当てで切り替える。JCL L713・L715、L723・L725)。 | 設定方法を書き、備考を「"1":0030TD→0100TD(No.22 事業所用)、"2":0040TD→0110TD(No.23 エコデリバー用)」とする。 |
| PR-4 | 【要確認C】 | B126 | 表の外に「b.入力データ区分 ="1" マッチング処理(KS60750J_0030TD との照合)」が残っている。メソッド詳細 D84 の下書きと思われる(推測)。 | 不要なら削除する。 |
メソッド一覧
| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| ML-1 | 【要確認B】 | AI4 | 機能説明が処理内容の節の見出し(1.1〜1.4)を並べたもので、何を入力し何を出力するかが読み取れない。末尾の「)」も欠けている(ルール 5.4)。 | 「入力データ区分に応じて、0050TD と 0030TD または 0040TD を荷主コードで1対1に突き合わせ、一致した本締の見出しを 0100TD または 0110TD に登録する。」と書く。 |
メソッド詳細
| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| MD-1 | 【要確認A】 | No.1 A4〜AJ5(引数)、D37・D49・D61・D63・E85・E115 | 処理を「プロパティ.入力データ区分」で切り替えているが、その値を受け取る引数が無く、プロパティにセットする処理も無い(ルール 5.5)。No.22(0030TD → 0100TD)と No.23(0040TD → 0110TD)のどちらの実行かが決まらない(JCL L710〜L729)。 | 起動時に受け取る引数(またはプロパティの設定元)と、"1"=No.22、"2"=No.23 の対応を書く。 |
| MD-2 | 【要確認C】 | No.1 D61〜E66、D142〜F143 | 入力データ区分が "1"・"2" 以外のとき、照合ファイル件数を 0 にして入力を全件読み飛ばし、件数 0 で正常終了("1")する。現行は DD の割当てで決まり、この経路は無い(JCL L710〜L729)。 | "1"・"2" 以外はエラー("0")で終了する。 |
| MD-3 | 【要確認C】 | No.1 D31〜E34、D43〜E46、D55〜E58 | 入力が0件のとき「入力データが存在しません。…」を出して "1" を返し、件数ログ2行とバッチ終了ログ(D151)を出さない。現行は0件でも <<< OUTPUT COUNT = ・<<< KARI JIME = に 0 を付けて出す(src L59〜L60、L72、L111〜L112)。 |
ジョブログを照合しているなら、0件でもループを0回で抜けて D147 以降を通す。 |
| MD-4 | 【要確認C】 | No.1 G148、G150 | 件数を「&」でつなぐだけで桁揃えが無い。現行は FIXED DEC(9) を文字にするので右詰め12桁になる(src L46、L48、L111〜L112)。 | ログを照合しているなら現行に合わせる。 |
| MD-5 | 【要確認C】 | No.1 F88・F89、F117・F118 | 照合キーを TRKOCD を trim() した値にし、比較の規則も書かれていない。現行は CHAR(7) のまま EBCDIC で比べる(src L79、L81、L97、L101)ので、先頭に空白がある値や英字(EBCDIC では数字より小さい)を含む値は大小が変わり、取得の並び順とも合わずに一致を読み飛ばす。 | trim せず7桁のまま比べ、比較の規則(TRKOCD が数字7桁である前提など)を書く。 |
| MD-6 | 【要確認B】 | No.1 F74、F87、F116 | 0 から始まる添え字(「< 件数」で回す)に「件目」を使っている。件目は1件目から数える(ルール 2.9.1、2.9.2)。 | 添え字で書くか、「Y ← 1」「Y <= 件数」の形の件目にそろえる。 |
| MD-7 | 【要確認B】 | No.1 D31、D43、D55、E40、E52、D70・E72・E85・E115 | データの有無を「= null 又は 取得件数 = 0件」で判定し、E40・E52 でデータに null をセットしている(ルール 2.13、2.16)。D70 ほかは「の件数」で、「取得件数」とそろっていない。 | 区分に応じたデータだけを取得し、「取得件数 = 0件 の場合」だけで判定する。null のセットは削除する。 |
| MD-8 | 【要確認B】 | No.1 F88、F117 | 「null でない場合 trim()した値、それ以外は プロパティ.HIGH」と、セットの中に条件を日本語で書いている(ルール 2.7、2.21)。TRKOCD は NOT NULL(0030TD・0040TD の DDL)なので、この条件は不要。 | 「変数.ブレークキー照合 ← 変数.照合レコード030.顧客コード[TRKOCD] をセット」とする(MD-5 と合わせる)。 |
| MD-9 | 【要確認B】 | No.1 F33、F45、F57、G77〜G79、E161 | 「引数」と値を同じセルに書いている(ルール 2.17)。 | 1つ右のセルに「引数」、その右に「項目:値」を書く。 |
| MD-10 | 【要確認B】 | No.1 D145 | 繰り返しの終わり「次のループへ」が『』で囲まれていない(ルール 2.6)。 | 『次のループへ』とする。 |
| MD-11 | 【要確認B】 | No.1 R10〜R13、R17、R18 | 件数・インデックス・比較結果の型が数値型(小数部あり)。整数は整数型(ルール 2.12)。 | 整数型にする。 |
| MD-12 | 【要確認B】 | No.1 G159、E161 | 「例外情報」に「変数.」などが無く、どこの値か読めない(ルール 2.15)。 | 変数に定義し「変数.例外情報」とする。 |
DB更新仕様
| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| DB-4 | 【要確認A】 | V9、V63(SDTASPA1) | TRDAIH・TRTNCD を11桁固定(7桁+4桁、トリムしない)で連結することが書かれていない。現行は CHAR(7)∥PIC'(4)9' で必ず11桁(src L31〜L32、L86)で、詰まると後続 SORT4 のキー(8〜11桁=代表扱い店、1〜7桁=集約代表。JCL L742、L774)がずれる。null の扱いは、両列とも NOT NULL(0030TD・0040TD の DDL)なので不要。 | 「TRDAIH 7桁(右空白埋め)& TRTNCD 4桁、トリムせず11桁にする」と書き、null の記述は削除する。 |
| DB-5 | 【要確認A】 | V14・V16・V17、V68・V70・V71(年月日3項目) | 写し元の 0050TD は NCHAR(8)・[YYYYMMDD]、写し先の 0100TD・0110TD は NCHAR(6) で、桁の違う列へ「そのまま」写す方法が書かれていない(KS60770 DB-2・T50-3 と同じ)。現行は6桁のまま書き(src L90)、KS60790 は1〜2桁を年として使う。 | 0050TD を NCHAR(6) にそろえる(KS60770 T50-3)。8桁のままなら 8桁→6桁の変換を書く。 |
② テーブル定義 KS60750J_0100TD(請求明細ヘッダーワークデータ1)
テーブル定義・ER図・SQL・DDL
| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| T100-2 | 【要確認C】 | テーブル定義 C13・L13・L14、DDL L79・L80 | SDTASPA1 の論理名・備考が「LOW-VALUE」、SDTADTID の備考が「[00:HEAD部]」。この表では SDTASPA1 に集約代表コード(1〜7桁)+代表扱い店(8〜11桁)、SDTADTID に 00(代表)/99(集約される荷主)が入る(src L83〜L86)。 | SDTASPA1 を「集約代表コード+代表扱い店」として備考に桁の内訳を書き、SDTADTID の備考を「[00:代表 99:集約される荷主]」にする(DDL のコメントも同じ)。 |
| T100-3 | 【要確認C】 | テーブル定義 C11・L11、DDL L77 | SDTAKKKK の論理名・備考が「顧客名」だが、予備項目である(KS60770 T61-8 と同じ)。処理結果は変わらない。 | 論理名・備考を「予備」にする。 |
| T100-4 | 【要確認A】 | テーブル定義 E9・E70、DDL L5・L68 | ID・VERSION(DECIMAL)の桁が空欄で、DDL も桁の指定が無い。 | 桁を記入する。他のテーブル定義も同じなので、固定項目として様式で決めるならそれに合わせる。 |
| T100-5 | 【要確認C】 | テーブル定義 C4・A79〜A80 | 論理名「請求明細ヘッダーワークデータ1」とテーブル説明(空欄)から、事業所用(優先印刷マスターに有る荷主=0030TD との一致分。現行 WORK0100 → KS607902、JCL L710〜L760)であることが読み取れず、0110TD と取り違えるおそれがある。 | テーブル説明に「事業所用」と書く(論理名を変えるなら保管ファイル名も合わせる)。 |
| T100-8 | 【漏れ】 | ER図・SQL B4 | 1番の SQL が全件取得で、ユニークキーで取得する SQL が無い(ルール 7.1)。 | 1番に ID で1件取得する SQL を書き、全件取得を2番にする(参照している KS60790 の番号も合わせる)。 |
③ テーブル定義 KS60750J_0110TD(請求明細ヘッダーワークデータ2)
テーブル定義・ER図・SQL・DDL
| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| T110-2 | 【要確認C】 | テーブル定義 C13・L13・L14、DDL L79・L80 | T100-2 と同じ。 | T100-2 と同じ。 |
| T110-3 | 【要確認C】 | テーブル定義 C11・L11、DDL L77 | T100-3 と同じ。 | T100-3 と同じ。 |
| T110-4 | 【要確認A】 | テーブル定義 E9・E70、DDL L5・L68 | T100-4 と同じ。 | T100-4 と同じ。 |
| T110-5 | 【要確認C】 | テーブル定義 C4・A79〜A80 | 論理名「請求明細ヘッダーワークデータ2」とテーブル説明(空欄)から、エコデリバー用(優先印刷マスターに無い荷主=0040TD との一致分。現行 WORK0110 → KS607901、JCL L720〜L792)であることが読み取れない。 | テーブル説明に「エコデリバー用」と書く(論理名を変えるなら保管ファイル名も合わせる)。 |
| T110-8 | 【漏れ】 | ER図・SQL B4 | T100-8 と同じ(ルール 7.1)。 | T100-8 と同じ。 |
参考:現行の挙動を踏襲するか確認が必要な事項
| No | 現行の挙動 | 確認事項 |
|---|---|---|
| B-1 | 一致したら見出しと顧客集約コードを両方1件ずつ進める(1対1、src L94〜L95)。同じ荷主で枝番の違う見出しや、TRFILE の同じ荷主の2件目は、メッセージも無く捨てられる。 | 設計も同じ動き。踏襲してよいか確認する。 |
| B-2 | 一致しても仮締(SDTAKARI ≠ 1)なら出力せず件数だけ数え、顧客集約コードも進める。後ろに同じ荷主の本締があっても出力されない(src L87〜L95)。 | 設計も同じ動き。踏襲してよいか確認する。 |
| B-3 | SORT2・SORT3・SORT4 に EQUALS の指定が無く、同じキーの中の順は USORTM の既定による(JCL L677、L692、L707、L742、L774)。 | PR-2・PR-3・T100-6 の並び順は、EQUALS で動く場合の現行と同じになる。運用の既定を確認する。 |
| B-4 | キーの比較と SORT は EBCDIC で、空白<英字<数字(src L81、L97、L101)。 | DB の ORDER BY と Java の比較は空白<数字<英字になる。荷主コード・集約代表・代表扱い店が数字と空白だけか確認する(KS60760 T30-7 と同じ)。 |
| B-5 | SORT3 は SDTASQNO 全体の順、突き合わせのキーはその2〜8桁目(src L73〜L76、JCL L707)。1桁目が 0 以外の請求先番号があると順が合わず、突き合わせが外れる。 | 設計も同じ。1桁目が常に 0 であることを確認する。 |
| B-6 | SDTADTID は SORT4 のキーに無く、同じまとまりの中で代表(00)が先頭とは限らない。KS60790 は区切りの先頭レコードの見出し項目を使う。 | 現行どおり ORDER BY に SDTADTID を入れない(T100-7 の案)でよいか確認する。 |