# KS60770 移行設計書 確認事項

| 項目 | 内容 |
|---|---|
| 対象資料 | ① クラス設計書 KS60770「請求データヘッダー部出力」（非表示シート・処理フローシートは対象外）<br>② テーブル定義 DAISEQ4J_0610TD（KS60770 の入力）と DDL<br>③ テーブル定義 KS60750J_0050TD（KS60770 の出力）と DDL |
| 突合せ基準 | 現行ソース KS60770P（PL/I）、コピーブック SQALLHED ほか、JCL DAISEQ4J（SORT L74〜L90、KS60770P L657〜L663、SORT3 L695〜L708）、KS60130・KS60135 の 0610TD に関する指摘 |
| 記述ルール | 設計書作成ルール（バッチ抜粋） |
| 作成日 | 2026-10-15（初版）／2026-10-22（記述ルールを反映して改訂） |
| 関連資料 | 誤りの指摘は「KS60770_移行設計書_レビュー指摘.md」 |

## 凡例

| 区分 | 意味 |
|---|---|
| 【漏れ】 | ルールで記述することになっている項目が、記載されていないもの |
| 【要確認A】 | 処理に必要な記載が欠けているもの（【漏れ】を除く） |
| 【要確認B】 | 処理結果は変わらないが、ルールの書き方に合っていないもの |
| 【要確認C】 | 移行に伴う意図的な変更の可能性があるもの、または前提が読み取れないもの |

- 根拠は、ソースを「src L○○」、JCL を「JCL L○○」、ルールを「ルール X.Y」「ルール X.Y.Z」と書きます。
- テーブル定義の指摘番号（T61-n、T50-n）は、他のプログラムの指摘から参照されているため、前回の番号を引き継いでいます（欠番があります）。
- 次のものは対象外です。
  - 非表示シート（処理フロー生成定義）
  - ルールで記述しなくてもよい項目：処理フロー図（ルール 5.2）、メソッド名・物理名（ルール 5.4、8.1）、処理の項番（ルール 2.5「可能な限り」）、"" / 0 / false の初期値（ルール 5.5）
  - 軽微な指摘（改版履歴・更新履歴、ログの文言・桁揃え、誤字、論理名・備考だけの誤り、条件の「==」「≠」など）
- 出力 0050TD の事前削除は、バッチ設計書 DAISEQ4J の処理フローで行うため、指摘していません。
- ルール 5.3・5.6・5.7 が参照する3章はバッチ抜粋に無いため、プロパティ一覧・DB更新仕様・マッピング仕様は2章のルールと現行一致で確認しています。
- 指摘番号はレビュー指摘（誤り）と通し番号です。

## 現行の処理（要点）

| 項目 | 現行の仕様 |
|---|---|
| 入力 | WORK0620（KS60130P の出力を SORT で並べたもの。JCL L88〜L89）。可変長で5種類のレイアウトが混在する |
| 対象行 | SDTADTID＝00 の見出しで（src L69）、運賃・料金・消費税・保険料の合計が **0 以外（マイナスを含む）** のもの（src L72〜L73） |
| 出力 | 入力の見出しレコードをそのまま書く（src L76）。出力先 WORK0050 は毎回空から作る（JCL L609、L660） |
| 後続 | SORT3（請求先番号。JCL L707）→ KS60780（1対1の突き合わせ） |
| メッセージ | `<<<  INPUT COUNT = `、`<<< OUTPUT COUNT = `（src L87〜L88。INPUT COUNT は加算されず常に 0） |

## 件数

| 資料 | シート | 漏れ | 要確認A | 要確認B | 要確認C | 計 |
|---|---|---:|---:|---:|---:|---:|
| ① | クラス概要 | 0 | 1 | 0 | 0 | 1 |
| ① | メソッド一覧 | 1 | 0 | 0 | 0 | 1 |
| ① | メソッド詳細 | 0 | 0 | 3 | 1 | 4 |
| ① | DB更新仕様 | 0 | 1 | 0 | 0 | 1 |
| ② | DAISEQ4J_0610TD | 1 | 3 | 1 | 0 | 5 |
| ③ | KS60750J_0050TD | 1 | 1 | 0 | 0 | 2 |
| **合計** | | **3** | **6** | **4** | **1** | **14** |

---

# ① クラス設計書 KS60770

## クラス概要

| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| CL-1 | 【要確認A】 | B5 | ソースのコメント（src L7）の転記だけで、見出し（データID 00）のうち運賃＋その他料金＋消費税＋保険料が 0 以外（マイナスを含む）のものを、そのまま 0050TD に登録することが書かれていない（src L69〜L76）。 | 「全送状ワークデータの見出し（データID 00）のうち、運賃＋その他料金＋消費税＋保険料が 0 以外のものを、そのまま 0050TD に登録する。」と書く。 |

## メソッド一覧

| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| ML-1 | 【漏れ】 | AI4 | No.1「メイン処理」の機能説明が空欄（ルール 5.4）。 | 「見出し（データID 00）のうち請求額（運賃＋その他料金＋消費税＋保険料）が 0 以外のものを 0050TD に登録する。」と書く。 |

## メソッド詳細

| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| MD-2 | 【要確認C】 | No.1 D18〜E22 | 見出しが0件のとき「入力データが存在しません。…」を出して "1" を返し、件数ログ2行（D45〜F48）を出さない。現行は0件でも `<<<  INPUT COUNT = `・`<<< OUTPUT COUNT = ` に 0 を付けて出す（src L67〜L68、L87〜L88）。 | ジョブログを照合しているなら、0件でもループを0回で抜けて D45 以降を通す。 |
| MD-3 | 【要確認B】 | No.1 D26、E27 | 「取得件数 の間繰り返す」「変数.全送状ワークデータ ← データ.全送状ワークデータ」で、何件目を取り出すかの変数が無い（ルール 2.9.2）。 | 変数に Y を追加し、「Y ← 1、Y <= データ.全送状ワークデータの取得件数 の間繰り返す」「データ.全送状ワークデータ Y件目」とする。 |
| MD-4 | 【要確認B】 | No.1 F21 | 「引数」と値を同じセルに書いている（ルール 2.17）。E46・F46 は分けて書いている。 | 1つ右のセルに「引数」、その右に「ログメッセージ：…」を書く。 |
| MD-5 | 【要確認B】 | No.1 D43 | 繰り返しの終わり「次のループへ」が『』で囲まれていない（ルール 2.6）。 | 『次のループへ』とする。 |

## DB更新仕様

| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| DB-1 | 【要確認A】 | V14・V16・V17（SDTAHYMD・SDTAKYMD・SDTASYMD） | 写し元の 0610TD は NCHAR(6)（現行 PIC'(6)9'、SQALLHED L9、L12〜L13）、写し先の 0050TD は NCHAR(8)・[YYYYMMDD] で、桁の違う列へ「そのまま」写す方法が書かれていない（T50-3 と同じ）。現行は6桁のまま書き（src L76）、後続 KS60780 の 0100TD・0110TD も NCHAR(6)。 | 0050TD を NCHAR(6)・[YYMMDD] にそろえる（T50-3）。8桁のままなら 6桁→8桁の変換と、KS60780 での 8桁→6桁の戻し方を書く。 |

---

# ② テーブル定義 DAISEQ4J_0610TD（全送状ワークデータ。KS60770 の入力）

## テーブル定義・ＥＲ図・ＳＱＬ・DDL

| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| T61-1 | 【要確認A】 | DAISEQ4J_0610TD E・F 列（DECIMAL の業務列。E13、E37〜E42、E52・E54・E55・E57・E59、明細・付替訂正・使用料・デパートの DECIMAL 列）、DDL L9・L33〜L38・L48・L50・L51・L53・L55 ほか | DECIMAL の桁数・小数が空欄で、DDL も精度の無い NUMBER になっている（KS60135 T10-1 と同じ）。写し先の 0050TD は DECIMAL(13,0)・(9,0)・(7,0) で、型がそろっていない。 | 現行の精度（SDTASQNO は DECIMAL(13,0)、金額は (9,0)、SDTABANK・SDTABAN1 は (7,0) など）を記入し、DDL も合わせる。 |
| T61-4 | 【要確認A】 | DAISEQ4J_0610TD C10・L10（REC_TYPE）、C15・L15（SDTADTID）、L65・L115・L129・L142 | 「データＩＤ」の列が REC_TYPE・SDTADTID・SDTBDTID など6つあり、どの列で行の種類を判定するか、見出し以外の行の SDTADTID に何が入るかが書かれていない（KS60135 MD-8 と関連）。KS60770 は SDTADTID = '00' で見出しを選ぶ（ＥＲ図・ＳＱＬ C29、現行 src L69）ので、見出し行の SDTADTID に半角 '00' が入らない取込みにすると出力が0件になる。 | 備考に、行の種類を判定する列と、見出し行の SDTADTID に半角2桁の '00' が入ることを書く。 |
| T61-13 | 【要確認A】 | DAISEQ4J_0610TD E9・E163、DDL L5・L164 | ID・VERSION（DECIMAL）の桁が空欄で、DDL も桁の指定が無い（ルール 9。KS60780 T100-4 と同じ）。 | 桁を記入する（固定項目として様式で決めるならそれに合わせる）。 |
| T61-14 | 【漏れ】 | ＥＲ図・ＳＱＬ B4 | 1番の SQL が全件取得で、ユニークキーで取得する SQL が無い（ルール 7.1）。 | 1番に ID で1件取得する SQL を書き、既存の SQL を2番以降にずらす（参照している KS60135・KS60144・KS60770 のプロパティ一覧の番号も合わせる）。 |
| T61-15 | 【要確認B】 | ＥＲ図・ＳＱＬ D16〜D22、D31〜D37 | ORDER BY のカンマを行の末尾に付けている（ルール 7.1）。 | カンマは行の先頭に付ける（例：`, SDTASQNO ASC`）。 |

---

# ③ テーブル定義 KS60750J_0050TD（請求明細全送り状データ（Ａ）ＨＥＡＤ。KS60770 の出力）

## テーブル定義・ＥＲ図・ＳＱＬ・DDL

| No | 区分 | セル | 指摘内容 | 対応案 |
|---|---|---|---|---|
| T50-8 | 【要確認A】 | KS60750J_0050TD E9・E70、DDL L5・L68 | T61-13 と同じ。 | T61-13 と同じ。 |
| T50-9 | 【漏れ】 | ＥＲ図・ＳＱＬ B4 | 1番の SQL が全件取得で、ユニークキーで取得する SQL が無い（ルール 7.1）。 | 1番に ID で1件取得する SQL を書き、全件取得を2番にする（参照している KS60780 プロパティ一覧 AV29 の番号も合わせる）。 |

---

# 参考：現行の挙動を踏襲するか確認が必要な事項

| No | 現行の挙動 | 確認事項 |
|---|---|---|
| B-1 | ICNT をどこでも加算しないため、`<<<  INPUT COUNT = ` は常に 0 と表示される（src L49、L87）。 | 設計も入力件数を加算しない（常に 0）。不具合を踏襲するか、取得件数（見出しの件数）を表示するか確認する。 |
| B-2 | 合計 WKSYUJ は FIXED DEC(9)（src L52）で、9桁を超えると上位桁が落ちる（合計がちょうど 1,000,000,000 なら 0 とみなされ出力されない）。 | 設計の作業合計（数値型）は桁が落ちないので、極端な金額では判定が変わる。実害は無いと思われるが、踏襲しなくてよいか確認する。 |
| B-3 | SORT3 のキー（`19,8,PD`、JCL L707）は SDTASQNO より1バイト長く、SDTASPA1 の1バイト目まで含む。見出しの SDTASPA1 が空白なら、実質は SDTASQNO の順。 | 0050TD の取得は SDTASQNO を先頭にする（T50-6）。見出しの SDTASPA1 の1バイト目に空白以外が入ることが無いか、現行データで確認する。 |
| B-4 | WORK0620 の SORT（JCL L88〜L89）は EBCDIC のバイト比較で、空白＜英字＜数字。 | 0610TD・0050TD の ORDER BY は DB の照合順序（空白＜数字＜英字）になる。SDTASHTN・SDTAKKKK・SDTASPA1 が数字と空白だけか確認する。 |
