# KS60780 移行設計書 確認事項

| 項目 | 内容 |
|---|---|
| 対象資料 | ① クラス設計書 KS60780「請求データ＆請求集約コードマッチング」（非表示シート・処理フローシートは対象外）<br>② テーブル定義 KS60750J_0100TD（No.22 の出力＝現行 WORK0100：事業所用）と DDL<br>③ テーブル定義 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）

## テーブル定義・ＥＲ図・ＳＱＬ・DDL

| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| T100-2 | 【要確認C】 | テーブル定義 C13・L13・L14、DDL L79・L80 | SDTASPA1 の論理名・備考が「ＬＯＷ－ＶＡＬＵＥ」、SDTADTID の備考が「[00:ＨＥＡＤ部]」。この表では 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 | 【漏れ】 | ＥＲ図・ＳＱＬ B4 | 1番の SQL が全件取得で、ユニークキーで取得する SQL が無い（ルール 7.1）。 | 1番に ID で1件取得する SQL を書き、全件取得を2番にする（参照している KS60790 の番号も合わせる）。 |

---

# ③ テーブル定義 KS60750J_0110TD（請求明細ヘッダーワークデータ2）

## テーブル定義・ＥＲ図・ＳＱＬ・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 | 【漏れ】 | ＥＲ図・ＳＱＬ 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 の案）でよいか確認する。 |
