操作
レビュー指摘 #11935
未完了KS60152指摘一覧(共通)
開始日:
期日:
進捗率:
0%
予定工数:
実開始日:
DD名:
INCLUDE:
DSN:
バグ区分:
QA分析:
方針(第一貨物):
実終了日:
ツールのバージョン:
AsIsSource行:
進捗計画:
設計・開発者:
画面ID:
機能区分:
機能ID:
レビュー指摘区分:
記述の仕方
検査完了日:
検査依頼日:
説明
KS60151・KS60152 共通指摘一覧(シート別)¶
| 項目 | 内容 |
|---|---|
| 抽出元 | KS60152 移行設計書 レビュー指摘(全件:「KS60152_移行設計書_レビュー指摘.md」「KS60152_帳票出力_レビュー指摘.md」)のうち、KS60151 のレビュー指摘(「KS60151_移行設計書_レビュー指摘.md」「KS60151_帳票出力_レビュー指摘.md」)に同じ指摘、または同じ種類の指摘があるもの |
| 対象資料 | ① クラス設計書 KS60152・KS60151(Excel) ② テーブル定義 DAISEQ4J_0700TD(KS60152)/DAISEQ4J_0635TD(KS60151)。どちらも KS60144P の出力で、レイアウトは同じ SQHAIDAA〜D |
| 突合せ基準 | 現行ソース KS60152P・KS60151P(PL/I)、各詳細設計書(現行解析MD)、JCL DAISEQ4J |
| 前提 | 帳票は A-SPOOL 経由で作成し、テキスト形式(1行133バイト=ASA+132桁)で出力する。次期システムの文字コードは Shift_JIS(SO/SI なし) |
| 作成日 | 2026-10-15 |
- 指摘No は、KS60152 の指摘(全件)の番号です。「KS60151 の同じ指摘」欄は、KS60151 のレビュー指摘の番号です(MD-○・PR-○・T35-○ などは「KS60151_移行設計書_レビュー指摘.md」、CH-○ は「KS60151_帳票出力_レビュー指摘.md」)。
- 指摘内容は、KS60152 の設計書に対するものです。KS60151 側の箇所・内容は、KS60151 の指摘を参照してください。
- 共通の指摘を除いた残りは「KS60152_移行設計書_レビュー指摘_単独.md」にあります。指摘No は全件・共通・単独のファイルで同じ番号を使っています。
- 「同じ種類」とは、設計の誤り方(判定項目の取り違え、EBCDIC のバイト位置の扱い、編集書式の未定義など)が同じものです。KS60152 にしか無い処理(出力先区分、3本目の帳票、顧客法人管理マスターなど)に関する指摘は、単独側に残しています。
凡例¶
| 区分 | 意味 |
|---|---|
| 【誤り】 | 現行ソースと処理結果が変わるもの、または記述が明確に誤っているもの |
| 【漏れ】 | 必要な記載が欠けているもの |
| 【要確認】 | 移行に伴う意図的な変更の可能性があるもの、または前提が設計書から読み取れないもの |
重大な指摘¶
KS60151 と KS60152 の両方の設計書を、同じ方針で直す必要があるものです。
| 分類 | 指摘No(KS60152) | KS60151 の同じ指摘 | 内容 |
|---|---|---|---|
| 行の種類の判定 | MD-0-1、MD-0-2、PF-1、ML-1、MD-4-1、MD-5-1、MD-5-2、MD-7-1、GD-1、GD-2、T70-2 | MD-0-1、MD-0-2、ML-1 | 行の種類を DATA_KBN で判定している。 現行は SQHADTID(KS60152 は SQHANLIN も)で判定する。現行で印字しない DTID 1・2 の計の行まで印字し、総合計(送り状合計)が出ない。 |
| 入力の並び順 | T70-11、PR-4、MD-0-7、GD-16 | PR-1、PR-4、T35-1 | 入力ワーク(0700TD/0635TD)の取得に並び順が無い。 現行は KS60144P の出力順に依存して、改ページ・行カウンタ・前回キーとの比較をしている。 |
| EBCDIC のバイト位置 | MD-2-4、MD-2-5、MD-2-8、MD-2-12、MD-5-5、MD-7-7、MD-17-2、MD-17-4、CH-D-1 | MD-0-5、MD-1-9、MD-1-10、MD-1-11、MD-2-1〜MD-2-3、CH-4 | 現行の EBCDIC のバイト位置・バイト数を、文字位置・文字数としてそのまま使っている。「(営)」の判定、住所・名称の改行位置(30・28バイト)、店所住所の切り出し、出力バッファの桁が現行と変わる。 |
| 備考の判定 | MD-7-4〜MD-7-7、MD-12-1〜MD-12-3、GD-12 | MD-1-21、MD-1-22、PF-2 | 備考の「KKKK」「必着」「着」の判定位置と置換が現行と違う。 |
| 13〜14行目 | MD-2-1、GD-6 | MD-1-14、MD-1-15 | 13〜14行目の出力行数が現行と違い、以降の行位置がずれる。 |
| 編集書式 | CH-D-2、CH-D-3、CH-A-3、CH-B-5、CH-C-5 | CH-5、CH-9 | 金額の編集書式(カンマ、0 の空白、符号)が現行と違う、または定義されていない。 現行でカンマが付くのは請求額だけ。 |
| テキスト出力の仕様 | CH-C-6、CH-A-4、CH-B-3、CH-B-4、CH-C-4、CH-D-4 | CH-4、CH-7、CH-14、CH-16 | A-SPOOL 向けテキスト(ASA+132桁、Shift_JIS)の仕様と、SO/SI の位置の扱いが決まっていない。 |
| 銀行欄・検品明細 | CH-D-17、CH-D-14、MD-12-4 | CH-8、CH-10、CH-3 | 銀行欄(10・11行目の47〜94桁)と検品明細の重ね書きが、現行の配置どおりに定義されていない。 |
指摘件数サマリ¶
| 部 | シート・範囲 | 【誤り】 | 【漏れ】 | 【要確認】 | 計 |
|---|---|---|---|---|---|
| ① | クラス概要 | 0 | 1 | 0 | 1 |
| ① | 処理フロー | 2 | 0 | 0 | 2 |
| ① | プロパティ一覧 | 0 | 1 | 1 | 2 |
| ① | メソッド一覧 | 1 | 1 | 0 | 2 |
| ① | マッピング仕様 | 0 | 0 | 1 | 1 |
| ① | メソッド詳細 | 19 | 2 | 10 | 31 |
| ① | 処理フロー生成定義(非表示シート) | 5 | 1 | 0 | 6 |
| ② | テーブル定義(DAISEQ4J_0700TD) | 2 | 1 | 1 | 4 |
| ② | ER図・SQL | 0 | 1 | 0 | 1 |
| ③ | 出力方式(0152TD → テキスト出力) | 0 | 1 | 0 | 1 |
| ③ | クラス概要・メソッド一覧ほか(CH-A) | 1 | 0 | 1 | 2 |
| ③ | 見出し1・見出し2(CH-B) | 0 | 1 | 3 | 4 |
| ③ | 計・明細・出力処理(CH-C) | 0 | 0 | 2 | 2 |
| ③ | 行編集・共通処理(CH-D) | 6 | 1 | 1 | 8 |
| 合計 | 36 | 11 | 20 | 67 |
① クラス設計書 KS60152¶
クラス概要¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| CL-1 | 【漏れ】 | 使用テーブル AR5〜 | CL-1 | 使用テーブルに次が無い(KS60151 CL-1 と同じ)。 ・ALTLIB(SEQPRTNC):自店出力店所テーブル。メソッド詳細 行24 で ALTLIBデータ処理[LSB1020] から取得している(src L514〜542、JCL L582) ・未収管理マスター(現行 MDMIKAN。LKN0010 で参照、src L645、JCL L591):共通関数「未収管理店コード取得」(行147)に置き換えているが、参照先が書かれていない |
入力として ALTLIB(SEQPRTNC)と、共通関数経由で参照する未収管理のテーブルを追記する。 |
処理フロー¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| PF-1 | 【誤り・重大】 | 1.メイン処理(生成定義 C54〜C90)、7.明細行処理の見出し(B896) | MD-0-1、ML-1 | 行の種類を DATA_KBN("5" 見出し1、"6" 見出し2、"3" 明細、"4" 集計)で判定している(KS60151 MD-0-1 と同じ)。現行は SQHANLIN と SQHADTID で判定する(src L555〜559 NLIN=00・DTID=5、L713 DTID=6、L1263〜1266 NLIN 90・98 かつ DTID=3、L1409〜1413 NLIN 91・99 かつ DTID=3、NLIN=99 かつ DTID=9、L1852〜1854 その他で DTID=0)。 ・0700TD のコード表(T70-2)では総合計が "9" なので、どの分岐にも入らず「送り状合計」(src L1510〜1511)が出ない ・"4" の中で NLIN だけを見ているので、現行で印字しない DTID 1・2 の計の行(src L1407、L1850 の ELSE ;)まで印字される ・見出し「7. 明細行処理 (DTID=0)」と、呼び出し条件(DATA_KBN="3")が合っていない |
判定を NLIN と DTID に変える。見出し1:NLIN=00 かつ DTID=5、見出し2:NLIN=00 かつ DTID=6、検品計:NLIN 90・98 かつ DTID=3、通常計:NLIN 91・99 かつ DTID=3、または NLIN=99 かつ DTID=9、明細:上記以外の NLIN で DTID=0。メソッド詳細 行43〜75 も同じ(他作業者の担当範囲)。 |
| PF-2 | 【誤り】 | 2.見出し1処理(生成定義 C132) | MD-0-6、MD-1-5 | 自店所出力の判定を「荷主区分 = ""(空文字)」で行っている(メソッド詳細 行120 も同じ)。現行は UPRNASKB(CHAR(1))が空白 ' ' かどうか(src L582)。固定長の列は空白で埋まるので "" にならず、自店所フラグが "1" にならない。その結果、自店所出力の顧客まで KS601522 の店所CD が未収管理店に置き換わる(src L692〜693)。KS60151 MD-0-6・MD-1-5 と同じ。 | 「前後の空白を除いた結果が空」で判定すると書く。 |
プロパティ一覧¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| PR-4 | 【漏れ】 | データ No.1 請求明細印刷ワークデータリスト(AY27『条件無し』、ER図 1) | PR-1、PR-4、T35-1 | 参照先の 0700TD「ER図・SQL」の SQL に並び順が無い(T70-11)。現行は KS60144P が WORK0700 に書いた順に読み、見出し1の前回キー比較(src L568、L618)・行カウンタ・改ページをこの順序に頼っている。また「条件無し」なので、0700TD に前回実行分が残っていると一緒に読む(T70-10)。KS60151 PR-1・PR-4 と同じ。 | ORDER BY(KS60144 の書込み順を保証するキー。ID が書込み順に採番されるなら ID)を指定する。0700TD のクリアのタイミングを KS60144 側と合わせて記載する。 |
| PR-5 | 【要確認】 | データ No.2〜7 のER図欄(AV28〜AV33) | PR-2、PR-3 | ER図番号がどの資料の SQL を指すか分からない。No.2(VKSYUPR)は「2」だが 0700TD のER図・SQLには No.1 しか無い。No.3〜7(VKCORPO・RDTENS・VKBANKM)は「1」で、0700TD の No.1(T70-12 の「1.銀行マスター取得」)と同じ番号。また VKSYUPR・VKCORPO・VKBANKM は VSAM の DD 名のままで、移行後のテーブル名が分からない(KS60151 PR-2・PR-3 と同じ)。 | 参照先の資料と SQL 番号を明記する。移行後の物理テーブル名を記載する。 |
メソッド一覧¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| ML-1 | 【漏れ】 | No.1 メイン処理(AI4)、No.7 明細行処理(P10) | ML-1、MD-0-1 | No.1 の機能説明が空欄。No.7 は名称に「(DTID=0)」とあるが、メイン処理は DATA_KBN="3" で呼んでいる(PF-1)。 | No.1 に「ALTLIB(SEQPRTNC)と請求明細印刷ワーク(0700TD)を読み、新行番号[NLIN]とデータID[DTID]で見出し1・見出し2・明細・検品計・通常計に振り分ける」と書く。判定項目は PF-1 に合わせる。 |
| ML-4 | 【誤り】 | No.17 スペース区切り位置算出(AI20) | ML-2 | 「28バイト単位の区切り点」と書いているが、現行は30バイトを超えない空白位置で区切り、区切りが見つからない段だけ前の区切り+28バイトにする(src L2201〜2225、L2251〜2271)。KS60151 ML-2 と同じ。 | 「空白位置で区切り、1段30バイト以内。区切りが無い段は28バイト」と書き直す。 |
マッピング仕様¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| MP-3 | 【要確認】 | 明細 No.18・22・23・25・26(V92・V96・V97・V99・V100)、集計 No.13・17・18・20・21(V123・V127・V128・V130・V131) | MD-1-18、T35-4 | 明細・合計の運賃・保険料・その他料金・割戻金・消費税を、見出し名の列(SDTAUNTI・SDTAHOKR・SDTARYOK・SDTAAAAA・SDTATTAX)から取っている。0700TD の列定義とは合っているが、KS60144 の設計がこれらの行でこの列に値を入れるかは、対応表が無いので確認できない(KS60144 T35-3・T35-4、KS60151 MD-1-18 と同じ)。見出し1の開始・最終年月日(V18・V19)も、0700TD が8桁のため現行の6桁と違う(T70-4)。 | 0700TD のテーブル説明に「行の種類ごとの列の対応表」を作り(T70-6)、KS60144 の DB更新仕様と突き合わせる。 |
メソッド詳細¶
No.1 メイン処理(行3〜85)¶
| No | 区分 | 箇所 | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| MD-0-1 | 【誤り・重大】 | 行43〜75 | MD-0-1 | 行の種類を DATA_KBN("5" 見出し1、"6" 見出し2、"3" 明細、"4" 集計)で判定している。現行は SQHANLIN と SQHADTID で判定する(src L555〜559、L713、L1263〜1266、L1409〜1413、L1852〜1854)。KS60144 の設計が DATA_KBN に設定する値は、見出し "1"・"2"、明細 "3"、計 "4"、検品料見出し "7" で、"5"・"6" は無い(KS60151 MD-0-1 と同じ)。このため見出し1・2が処理されない。見出し1が処理されないので、出力先区分・配信キー・店所CD も設定されないまま明細や計が出力される。 | 次のように判定する。 ・NLIN=00 かつ DTID=5:見出し1 ・NLIN=00 かつ DTID=6:見出し2 ・NLIN=90・98 かつ DTID=3:検品計 ・NLIN=91 かつ DTID=3、NLIN=99 かつ DTID=3・9:通常計 ・それ以外の NLIN で DTID=0:明細 ・上記以外の組合せ:処理しない |
| MD-0-2 | 【誤り】 | 行58〜72、行54〜57 | MD-0-2 | 集計 "4" を新行番号だけで振り分けており、DTID の条件が無い。KS60144 の設計では、元払計・着払計など(DTID 1・2)も "4" になるので、現行では印字しない行(src L1407「ELSE ;」、L1850)まで印字し、行カウンタも進む(KS60151 MD-0-2 と同じ)。明細 "3" にも DTID=0 の条件が無い(src L1854、L2145)。 | MD-0-1 のとおり、DTID の条件を加える。 |
| MD-0-6 | 【要確認】 | 行120、297、321、324、359、361、378、420〜426、551、578、581 | MD-0-6 | 空白の判定を「= ""」「<> ""」で行っている。現行は空白との比較(UPRNASKB=' '、SQHBHEAD=(8)' '、SQHBYUNN=(7)' '、O11HNM2=(28)' '、SUBSTR(SQHBYUNO,4,2)=(2)' ' など)。NCHAR の固定長列や、固定長で切り出した結果は空白で埋まるため、"" とは一致しない(KS60151 MD-0-6 と同じ)。 | 「前後の空白(全角・半角)を除いた結果が空」で判定する、と明記する。 |
| MD-0-7 | 【要確認】 | 行32、行40〜42 | PR-1、PR-4 | 0700 を「条件無し」で取得し、件数分を順に処理している(プロパティ一覧 No.1)。現行は KS60144P の出力順に依存して処理する(見出し1のたびの初期化、行カウンタ、荷主・店所のキャッシュ比較)。ORDER BY が無いと順序が保証されない(KS60151 PR-1 と同じ)。 | 取得 SQL に、KS60144 の出力順を保証する ORDER BY を指定する(プロパティ一覧・0700 の担当と調整)。 |
No.2 見出し1処理(行86〜217)¶
| No | 区分 | 箇所 | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| MD-1-2 | 【誤り】 | 行120 | MD-1-5、MD-0-6 | 自店所フラグを「荷主区分 = ""」で判定している。UPRNASKB は CHAR(1) で、現行は「= ' '」(src L582)。"" とは一致しないので、自店所出力の顧客まで KS601522 の店所CD が未収管理店に置き換わる(KS60151 MD-1-5 と同じ)。 | 空白判定にする(MD-0-6)。 |
| MD-1-5 | 【要確認】 | 行145〜152 | MD-1-2 | 現行の LKN0010(src L645)を、共通関数「未収管理店コード取得」に置き換えている。該当が無いときの戻り値が書かれていない(KS60151 MD-1-2 と同じ)。なお、パーティション判定と未収管理店の取得を見出し1のたびに行うのは、現行(店所が変わったときだけ、src L618〜647)と違うが、結果は同じ。 | 共通関数の仕様(引数、戻り値、該当なしのときの値)を記載する。 |
| MD-1-6 | 【要確認】 | 行157〜167 | MD-0-3 | ①終了年月日が6桁なら "20" を付け、8桁で "20080919" と比較している。0700 の SQHAEYMD 相当の列が6桁か8桁かが確定していない(KS60151 MD-0-3 と同じ)。②この判定の結果を「検品区分フラグ」に入れているが、現行の TENK_FLG は**サーチャージ(転嫁料)**の有無のフラグ(src L707〜709)で、検品とは関係ない。見出し2では検品料データ区分[SQHBKENP] と並んで使われるので(行507、649、692)、取り違えやすい。 | ①0700 の桁数を確定する。②名前を「サーチャージ表示フラグ」に直す(プロパティ一覧 P10 も)。 |
No.3 見出し2処理(行218〜715)¶
| No | 区分 | 箇所 | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| MD-2-1 | 【誤り・重大】 | 行285〜355、行649〜708 | MD-1-14、MD-1-15 | ①13〜14行目の出力(検品料あり:MIDK_1・MIDK_2、なし:SPACE+MID_SUR1 または SPACE)が、1ページ目の分岐(行356「以外の場合」)の中にある。現行では、1ページ目と2ページ目以降のどちらでも出力する(src L1202〜1258 は L715 の IF の外)。2ページ目以降は2行不足する。 ②2ページ目以降は、No.8 の呼び出し10回(空行7行+名称3行)で行カウンタが +10 され、さらに行355で +10 している。見出し1の後の2と合わせて22になる。現行は 2+7+3+2=14(src L732、L783、L1258)。 |
13〜14行目の処理を、行285の IF の外(『END IF』行709の後)に移す。行355の加算は削除する。行708の「← 14」は、No.8 の加算と二重にならないように整理する。 |
| MD-2-4 | 【誤り】 | 行292〜299、行547〜556 | MD-2-1、MD-2-2、MD-0-5 | 名称の編集が現行の NM_EDIT_SUB_RTN(src L2228〜2271)と合わない。 ・頭:SO/SI を除いていない頭[SQHBHEAD] の「2バイト目から6バイト」を使っている。Shift_JIS(SO なし)では全角の途中から切ることになる。空判定も "" になっている(現行は (8)' ') ・代名:SO/SI を除いた後の文字列で「1〜40バイト」「44バイト目から20バイト」を切っている。SO/SI を除いた後の位置は現行の EBCDIC 位置とずれる。現行は、先頭が SO(全角)なら2バイト目から40バイト、カナなら1バイト目から40バイト ・つなぎの空白:「 」(全角2文字=4バイト)を使っている。現行は2バイト((2)' ') (KS60151 MD-2-1、MD-2-2 と同じ) |
0700 の格納形式を確定したうえで、Shift_JIS のバイト位置で切り出す。頭は先頭3文字(6バイト)、つなぎは半角空白2バイトにする(KS60151 MD-0-5)。1ページ目と2ページ目以降の同じ処理(行291〜327、行546〜584)は、共通の処理にまとめる。 |
| MD-2-5 | 【誤り】 | 行410〜429 | MD-1-8、MD-1-9 | 住所の結合が現行の JS_EDIT_SUB_RTN(src L2165〜2199)と合わない。 ・行421で、上段の代わりに「中段加工済み」をつないでいる。上段が消え、中段が2回出る ・つなぎの空白を「 」(4バイト)、最後を「 」(2バイト)にしている。現行は各段の後ろに2バイト((2)' ') ・上段が空のとき、現行は先頭に2バイトの空白が入る(I=0 → I=3 で中段を3バイト目から置く、L2179)。設計は詰める ・末尾は半角スペースだけを除いている。現行は全角空白(X'4040')単位で詰める(KS60151 MD-1-8 と同じ) |
行421を「上段加工済み」に直す。つなぎは半角空白2バイトにする。末尾は全角・半角の空白を除く。区切り位置算出(担当外)のバイト数の数え方は KS60151 MD-1-9 を参照。 |
| MD-2-8 | 【誤り】 | 行451〜452 | MD-1-10 | 「配達店所名の8バイト目から6バイト=(営)」なら「1〜7バイト&" 営業所"」としている。これは EBCDIC のバイト位置のまま。現行は、SO+全角3文字の後ろの6バイトが SO 抜きの「(営)」なら、SO+全角3文字+「 営業所」+SI にする(src L862〜864、WK_KAKO_EIGYO は L477〜478)。Shift_JIS で「1〜7バイト」とすると、全角4文字目の途中で切れる(KS60151 MD-1-10 と同じ)。 | Shift_JIS なら「7〜12バイト目(4〜6文字目)=(営)なら、1〜6バイト(3文字)&" 営業所"」。0700 の格納形式に合わせて確定する。 |
| MD-2-12 | 【要確認】 | 行541、行592、行609 | MD-1-11 | 店所所在地を「2文字目から22バイト」「24文字目から」「46文字目から」と、文字位置とバイト長を混ぜて切り出している。現行は VSAM(EBCDIC)の先頭の SO を飛ばして22バイト(全角11文字)ずつ(src L53〜55、L919〜921、L1139)。RDTENS(DDTTNADN)の格納形式によっては、1文字目が欠けたり、1段の長さが変わったりする(KS60151 MD-1-11 と同じ)。 | RDTENS の格納形式を確認し、Shift_JIS で「1〜22、23〜44、45〜66バイト」などに直す。 |
No.4 検品計処理(行716〜781)¶
| No | 区分 | 箇所 | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| MD-4-1 | 【誤り・重大】 | 行716〜774(No.4 全体)、メイン処理 行58〜66 | MD-0-1、MD-0-2 | DTID の判定が無い。メイン処理は DATA_KBN="4" かつ NLIN が "90"・"98" なら No.4 を呼び、No.4 も DTID を見ない。現行は (NLIN=90 かつ DTID=3) または (NLIN=98 かつ DTID=3) のときだけ処理し、それ以外は何もしない(src L1265〜L1266、L1407「ELSE ;」)。0700 の DTID は「1:元 2:着 3:合計 9:総計」で、DATA_KBN="4"(集計)の行には DTID 1・2 も含まれ得る。その行まで空行・見出し・計行を出し、行カウンタも進む。KS60151 MD-0-1、MD-0-2 と同じ。 | 冒頭(行730 の前)に「引数.合計行データ.データID[SQHDDTID] ≠ "3" の場合、処理を終了する」を追加する。 |
No.5 通常計処理(行782〜897)¶
| No | 区分 | 箇所 | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| MD-5-1 | 【誤り・重大】 | 行801〜891(No.5 全体)、メイン処理 行67〜69 | MD-0-1、MD-0-2 | DTID の判定が無い。現行は (91,3)・(99,3)・(99,9) の3通りだけを処理し、それ以外(NLIN=91・99 で DTID 1・2 など)は何もしない(src L1411〜L1413、L1850「ELSE ;」)。設計は NLIN だけで判定するため、元払計・着払計などの現行で印字しない行まで印字し、行カウンタも 49・50 にしてしまう。KS60151 MD-0-1、MD-0-2 と同じ。 | 冒頭に「(NLIN="91" かつ DTID="3")、(NLIN="99" かつ DTID="3")、(NLIN="99" かつ DTID="9") のいずれでもない場合、処理を終了する」を追加する。 |
| MD-5-2 | 【要確認】 | 行855、メイン処理 行44〜75 | MD-0-1 | 送り状合計(DTID=9)の分岐が No.5 にあるが、メイン処理は DATA_KBN が "3"〜"6" のときしか処理せず、No.5 を呼ぶのは DATA_KBN="4" のときだけ。0700 の DATA_KBN の定義は「4:集計、…、9:総合計」で、総合計の行が DATA_KBN="9" で書かれると No.5 に来ず、「送り状合計」が出ない(推測)。KS60151 MD-0-1 と同じ種類。 | メイン処理の振分けを DTID・NLIN で行う(KS60151 MD-0-1 の対応)か、DATA_KBN="9" も No.5 に渡す。KS60144 の設計が総合計の行の DATA_KBN に何を入れるかを確認する(メイン処理の担当と合わせて確認)。 |
| MD-5-5 | 【漏れ】 | 行884 | MD-0-5 | 請求区分の項目が「引数.請求明細配信データ(合計行).請求区分」となっていて、項目名(物理名)と切り出し位置が無い。現行は SUBSTR(SQHDSQKB,1,10)(src L1712)。0700 の SQHDSQKB は NCHAR(11)。 | 「請求区分(集計)[SQHDSQKB] の先頭10バイト」と書く(バイト数の数え方は KS60151 MD-0-5 の結論に合わせる)。桁位置は CH-C-3。 |
| MD-5-6 | 【要確認】 | 行813(設定は 行163〜166) | MD-0-3 | サーチャージ有無の判定に「プロパティ.検品区分フラグ」を使っている。設定は「請求終了年月日の桁数=8 かつ >"20080919"」(行163)。現行は TENK_FLG(SQHAEYMD > 080919、6桁 YYMMDD、src L707〜L709)。①名前が検品(SQHBKENP、13〜14行目の判定)と紛らわしく、プロパティ一覧(No.6)にもサーチャージ用の項目が無い。②0700 の SDTASYMD に6桁で入っていると、桁数=8 が成立せず、サーチャージの見出しが出なくなる(KS60151 MD-0-3 と同じ)。 | プロパティ名を「サーチャージフラグ」に改め、プロパティ一覧の説明を直す。0700 の終了年月日の桁数を確定し、判定式を合わせる。 |
No.7 明細行処理(DTID=0)(行954〜1045)¶
| No | 区分 | 箇所 | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| MD-7-1 | 【誤り・重大】 | 行974〜1040、メイン処理 行54〜57 | MD-0-1 | 名前は「DTID=0」だが、DTID の判定がどこにも無い。メイン処理は DATA_KBN="3"(明細)で No.7 を呼ぶ。現行は、NLIN が 00・90・91・98・99 以外で、かつ SQHADTID=0 のときだけ明細を出す(src L1852〜L1856、L2145「ELSE ;」)。DTID≠0 の行が DATA_KBN="3" で来ると、現行で印字しない行を明細として出し、行カウンタも進む。KS60151 MD-0-1 と同じ。 | 冒頭に「引数.明細行.データID[SQHCDTID] ≠ "0" の場合、処理を終了する」を追加する。 |
| MD-7-4 | 【誤り・重大】 | 行965〜967、行997〜1030、行1035 | MD-1-21、MD-1-22、PF-2 | 8バイトの「明細備考」を作って明細行編集処理に渡しているが、現行の明細行に「明細備考」という8バイトの欄は無い。現行の備考関係の印字は次の3項目で、すべて SQHCBIKO・SQHCTSKB・SQHCTENS から作る(src L2032〜L2068)。 ・特積区分 MEI_TSKB(122〜123桁)=SQHCTSKB ・点数 MEI_TENS(124〜127桁)=SQHCTENS の下4桁(ゼロ埋め) ・備考 MEI_BIKO(128〜132桁)=SQHCBIKO の1〜5バイト目 これを、KKKK・「着」「必着」の条件で書き換える(MD-7-5〜MD-7-7)。設計の「元着区分="2" なら備考の左8バイト」「該当なしなら左8バイト」は現行に無い。また、同じ備考の判定と置換を No.12(行1627〜1668、作業者D の範囲)でも別の内容で行っており、二重になっている。生成定義 C1108〜C1144 も同じ。 |
No.7 の行997〜1030 を削除し、現行の判定(MD-7-5〜MD-7-7)で「特積区分(2バイト)・点数(4バイト)・備考(5バイト)」の3つの値を作って No.12 に渡す形にする。No.12 の備考編集(行1627〜1668)と一本化し、どちらか一方だけで行う(作業者D と調整)。 |
| MD-7-5 | 【誤り】 | 行1000〜1003 | MD-1-21 | 軽油引取税転嫁分(備考の9〜12バイト目='KKKK')のとき、明細備考を空白にしている。現行は、点数欄 ← 備考の1〜4バイト目、備考欄 ← 備考の5〜8バイト目(5バイト目は空白)とし、特積区分は SQHCTSKB のまま(src L2039〜L2044)。この判定は、訂正変更区分や検品明細かどうかに関係なく行う。一方 No.12 は KKKK の処理を「備考≠空白 かつ 特別区分=空白 かつ 検品でない」の中でしか行わない(行1630、作業者D の範囲)ため、訂正変更区分がある明細や検品明細では、現行と違って点数欄に SQHCTENS が出る。 | 「備考[SQHCBIKO] の9〜12バイト目 = "KKKK" の場合、点数 ← 備考の1〜4バイト目、備考 ← 備考の5〜8バイト目(+空白1バイト)、特積区分 ← 訂正変更区分[SQHCTSKB]」とし、他の条件をかけない。KKKK は1バイト文字なので、0700 の格納形式にかかわらず位置は 9〜12 バイト目でよい。 |
| MD-7-6 | 【誤り】 | 行1004〜1009 | MD-1-22 | 「元着区分="2"」だけで「着」「必着」の置換を飛ばしている。現行で置換を飛ばすのは検品明細(荷送・荷受人氏名の14バイト目='‾' かつ 元着区分=2)のときだけ(src L2051〜L2053)。元着区分=2 の通常の明細では、現行は置換して特積区分・点数・備考を書き換えるのに、設計は書き換えない。また、置換の前提条件「備考≠空白 かつ 訂正変更区分=空白」(src L2048)が No.7 に無い。 | 「KKKK でない場合:備考≠空白 かつ 訂正変更区分=空白 かつ 検品フラグ=false のとき、着・必着の置換と3項目の書換え(MD-7-7)を行う。それ以外は 特積区分=SQHCTSKB、点数=SQHCTENS、備考=備考の1〜5バイト目 のまま」とする。 |
| MD-7-7 | 【誤り・重大】 | 行1013〜1028 | MD-1-22、MD-0-5 | 「着」「必着」の判定位置と置換が現行と違う。 【現行】(src L2056〜L2064、位置は EBCDIC のバイト位置) ① 備考の8〜11バイト目=SO+着+SI なら、そこを 'チヤク '(4バイト)に置き換える ② 備考の6〜11バイト目=SO+必着+SI なら、そこを 'ヒツチヤク '(6バイト)に置き換える(①が先) ③ 置き換えた備考の 1〜2 → 特積区分、3〜6 → 点数、7〜10 → 備考 3項目は122〜131桁に連続して並ぶので、印字は「置き換えた備考の1〜10バイト目」になる。例:「着」なら 備考の1〜7バイト目+チヤク、「必着」なら 1〜5バイト目+ヒツチヤク。 【設計】「1〜2文字目=着」なら作業域の1〜3文字目に チヤク、「3〜6文字目=必着」なら4〜8文字目に ヒツチヤク を入れ、作業域には チヤク・ヒツチヤク だけが残り、備考のほかの部分(荷受店コード等)が消える。判定位置も現行と合わない。KS60151 MD-1-22 と同じ種類。 |
0700 の SQHCBIKO の格納形式(KS60151 MD-0-5、T35-3)に合わせて位置を換算する。Shift_JIS(SO/SI なし)で、1〜7バイト目が1バイト文字の場合は次のとおり(No.12 行1644・1648 の「8〜9バイト目」「6〜9バイト目」はこの換算と一致する)。 ・8〜9バイト目=「着」なら、印字(122〜131桁)=備考の1〜7バイト目+"チヤク" ・6〜9バイト目=「必着」なら、印字=備考の1〜5バイト目+"ヒツチヤク" ・どちらでもなければ、印字=備考の1〜10バイト目 (特積区分・点数・備考の3項目に分けて渡す場合は、上の10バイトを 2・4・4 に分け、備考の5バイト目は空白)。No.12 の置換文字 "着 "・"着必 "(行1646・1650)は誤りなので、作業者D の指摘と合わせて チヤク・ヒツチヤク に直す。 |
| MD-7-8 | 【要確認】 | 行978〜983 | MD-1-20 | 検品明細の判定で、荷送・荷受人氏名の14バイト目を "~"(チルダ)と比較している。現行は '‾'(オーバーライン、src L2051・L2070)。EBCDIC の '‾' を Shift_JIS に変換すると 0x7E になるが、Java で読むと文字セット "Shift_JIS" では U+203E(‾)、"Windows-31J" では U+007E(~)になり、"~" との比較が成立するかは 0700 への格納方法と Java の文字セット次第。また変数名が「商品名14桁目」だが、項目は荷送・荷受人氏名[SQHCSHNM](KS60151 MD-1-20 と同じ)。 | 比較する値を、0700 に格納されるコード(Unicode のコードポイント、またはバイト値)で明記する。変数名を「荷送・荷受人氏名14桁目」に直す。 |
No.12 明細行編集処理¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| MD-12-1 | 【誤り】 | 行1630〜1641 | MD-1-21 | 「KKKK」(軽油転嫁)の判定を「備考≠空白 且つ 訂正区分=空白 且つ 検品でない」の中に入れている。現行は「KKKK」を最初に無条件で判定し(訂正区分があっても、検品明細でも)、それ以外のときだけ上記の条件で備考を編集する(src L2039〜L2068)。訂正区分が入った明細や検品明細の「KKKK」で、点数・備考欄の内容が変わる。 | 「備考の9〜12バイト=KKKK なら、点数欄(124〜127)=備考1〜4、備考欄(128〜132)=備考5〜8。以外で、備考≠空白 且つ 訂正区分=空白 且つ 検品でない場合に…」の順に直す。 |
| MD-12-2 | 【誤り】 | 行1643〜1651 | MD-1-22、T35-3 | 「着」「必着」の置換が現行と違う。 ・現行は EBCDIC の「SO+着+SI」(8〜11バイト)を半角カナ「チヤク 」に、「SO+必着+SI」(6〜11バイト)を「ヒツチヤク 」に、同じバイト数のまま置き換える(src L2056〜L2060)。設計は全角の「着 」「着必 」に置き換えており、出る文字が違い(「必着」が「着必」に逆転)、長さも変わる。 ・判定は「8〜9バイト目」「6〜9バイト目」(SO/SI を除いた位置)なのに、つなぐ残りは「12文字目以降」「11文字目以降」で、バイトと文字が混在し、SO/SI の2バイト分の補正も無い(SO/SI が無ければ残りは10バイト目から)。 ・行1645・1649 に引数の無い「中文字列抽出をコールする」が残っている。 |
0700 の備考の格納形式(SO/SI の有無。KS60151 T35-3)を決めたうえで、「1〜7バイト+『チヤク 』+(元の SI の次のバイト以降)」「1〜5バイト+『ヒツチヤク 』+(同)」とバイトで書く。その後、1〜2・3〜6・7〜10バイトを 122・124・128 に出す(行1652〜1666 の位置は一致)。 |
| MD-12-3 | 【要確認】 | 行1627〜1668(No.7 行997〜1030 と重複) | PF-2 | 備考の編集を No.7(明細備考を作る)と No.12(122〜132 に出す)の2か所で、違う内容で行っている。No.7 は「1〜2文字目=着」「3〜6文字目=必着」など、現行の位置(8〜11・6〜11バイト)とも No.12 とも違う。 | 備考の編集は1か所(No.12)にまとめ、No.7 の明細備考(CH-D-12)は削除する。 |
| MD-12-4 | 【漏れ】 | 行1518〜1533 | CH-10 | 検品明細の金額の計算が無い。現行は税区分1・2で KMEI_GOKEI1(運賃+集配+航送+代引+その他、税込みかつ税区分2≠1 なら+消費税)、KMEI_ZIKN(税抜きかつ税区分2≠1 のときだけ消費税、他は0)、KMEI_GOKEI2(全項目の合計、税区分2≠1 なら+消費税)を計算する(src L2080〜L2127)。 | 計算を追記する(KS60151 CH-10 と同じ種類の漏れ)。 |
No.13 SO/SI除去処理¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| MD-13-2 | 【要確認】 | 行1675〜1703(呼び出し:No.3 行293〜299・548〜556、No.14 行1759〜1764) | T35-3 | 先頭の SO と末尾の SI しか除かない。代名(SQHBNAME)は「SO+40バイト+SI+SO+20バイト+SI」の2つの全角の並びで(src L2240〜L2242 の 2〜41・44〜63)、途中の SI・SO(42〜43バイト)は残る。先頭の SO を除いた後の「44バイト目から20バイト」(No.3 行299)は、元の43バイト目(SO)から取ることになり1バイトずれる。また、次期の 0700・銀行マスターが Shift_JIS なら SO/SI はそもそも無く、この処理と、SO を前提にした位置(「頭の2バイト目から6バイト」など)が合わない。 | 0700・VKBANKM の移行後の格納形式(SO/SI の有無)を確定し(KS60151 T35-3)、SO/SI を残すなら途中の SO/SI も除く、残さないならこの処理と位置の指定を見直す。 |
No.14 銀行情報編集¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| MD-14-3 | 【誤り】 | 行1760・1763・1971・1974、行1766〜1768 | MD-1-13 | 銀行名・支店名は「末尾スペース除去」のあと SO/SI を除いている。現行は名称の先頭20バイトの中で、後ろから空白(X'40'。全角空白 X'4040' も含む)と SI を飛ばして長さを決め、名称が空のときは2バイトの空白を残す(src L977〜L1000)。全角空白で埋まった名称や、20バイトを超える名称では、表示名称の長さ(=4通りの分岐)と支店名の位置が変わる。getBytes の文字コードも書かれていない。KS60151 MD-1-13 と同じ。 | 末尾の半角・全角空白を除くと書く。名称は20バイトまでとするかを VKBANKM の項目長で確認する。getBytes は Shift_JIS(MS932)のバイト数と明記する。 |
No.17 スペース区切り位置算出¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| MD-17-2 | 【誤り】 | 行2206・2208 | ML-2、MD-1-9 | 上限を 28 にしている。現行は 30(src L2207〜L2210、L2257〜L2259)。現行の区切り位置は区切りの空白(全角空白2バイト)の終わりなので、30 で「文字28バイト+空白2バイト」になる。28 にすると、ちょうど28バイトの段が次の段に送られる。区切りが無い段の既定値 28(行2217・2221)は現行どおり。 | 上限を 30 にする(区切り位置の数え方を現行と同じにする前提。MD-17-3)。 |
| MD-17-4 | 【誤り】 | 行2194〜2199 | MD-1-9、MD-2-3 | 「スペース位置」で何を探すか(半角空白か全角空白か)、位置がバイトか文字かが書かれていない。現行の区切りは全角空白(EBCDIC X'4040')で、X'40' を探して見つける。Shift_JIS では全角空白は 0x8140 で、半角空白(0x20)を探しても見つからず、全段が既定の28バイトで切られる(全角の途中で切れることもある)。文字列(文字単位)の位置で数えると、全角が多い住所では1段に全角30文字まで入る(KS60151 MD-1-9 と同じ)。 | 「全角空白と半角空白を区切りとし、位置は Shift_JIS のバイト位置(区切り空白の最後のバイトの位置)で数える」と書く。既定の28バイトで切るときは全角の途中で切れないようにする。 |
処理フロー生成定義(非表示シート)¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| GD-1 | 【誤り・重大】 | 生成定義 C54〜C90(MD 行43〜75 と同じ) | MD-0-1 | 読込ループの分岐を DATA_KBN("5" 見出し1、"6" 見出し2、"3" 明細、"4" 集計)で行っている。現行は SQHANLIN と SQHADTID で分岐する(src L555〜L559、L1263、L1409、L1852〜L1854)。 見出しには SQHANLIN=00 の条件が、明細には SQHADTID=0 の条件が無い。節7の名前は「明細行処理 (DTID=0)」だが、判定が無い。KS60151 MD-0-1 と同じ。 |
前提の表のとおり「SQHANLIN(NLIN)+SQHADTID(DTID)」で分岐する。 ・見出し1:NLIN=00 かつ DTID=5 ・見出し2:NLIN=00 かつ DTID=6 ・検品計:NLIN=90/98 かつ DTID=3 ・通常計:NLIN=91/99 かつ DTID=3、または NLIN=99 かつ DTID=9 ・明細:それ以外の NLIN かつ DTID=0 ・それ以外:処理なし |
| GD-2 | 【誤り】 | 生成定義 C76〜C87、C821〜C874、C895〜C1010(MD 行61〜72、730〜774、805〜891 と同じ) | MD-0-2 | 計の行を SQHDNLIN だけで振り分けており、DTID を見ていない。現行は、90・98・91 は DTID=3 だけ、99 は DTID=3・9 だけを処理し、それ以外(DTID 1・2 の元払計・着払計など)は印字しない(src L1265〜L1266、L1407、L1411〜L1413、L1850)。生成定義では、これらの行まで印字し、行カウンターも進む。KS60151 MD-0-2 と同じ。 | 検品計処理・通常計処理を呼ぶ条件に DTID を加える(GD-1)。 |
| GD-6 | 【誤り・重大】 | 生成定義 C271〜C362、C738〜C806(MD 行285〜355、649〜708 と同じ) | MD-1-14、MD-1-15 | 2ページ目以降の見出し2に、次の2つの誤りがある。 ①空行7行と名称3行を「1行を…挿入する」で出力しており、この中でカウンターは +10 される。それなのに、C362 でさらに +10 している。見出し1後の2から22になる(現行は 2+7+3+2=14、src L732、L783、L1258)。 ②13〜14行目(検品見出し MIDK_1・MIDK_2、または空行+MID_SUR1/空行)が、1ページ目の分岐(C364「else」〜C806「endif」)の中にある。2ページ目以降には出ない。現行は、ページ番号の分岐の外で必ず出す(src L1202〜L1258)。 |
C362 の加算を削除する。13〜14行目(C738〜C802)を C806 の「endif」の後ろに移す。カウンターは、両方のページで14になるようにする。 |
| GD-12 | 【誤り】 | 生成定義 C1108〜C1144、C1745〜C1789、C1635・C1717(MD 行997〜1030、1630〜1664 と同じ) | MD-1-21、MD-1-22、PF-2 | 備考を、節7(明細備考8バイト、88桁目)と節12(122〜131桁)で二重に編集している。判定も現行と違う。 現行の処理は次のとおり(src L2032〜L2068)。 ①既定値として TSKB=SQHCTSKB、TENS=SQHCTENS、BIKO=備考1〜5を入れる。 ②備考9〜12='KKKK' なら、TSKB の値に関係なく TENS・BIKO を置き換える。 ③そうでなく、備考≠空白かつ TSKB=空白かつ検品でなければ、「着」を「チヤク」、「必着」を「ヒツチヤク」に変えてから、1〜2・3〜6・7〜10桁を切り出す。 生成定義には次の違いがある。 ・①の既定値が無い。 ・KKKK を③の条件の中で判定している。 ・置換後の文字が「着 」「着必 」になっている。 |
備考の編集を1か所にまとめ、現行の①〜③の順序で書く。判定位置(EBCDIC のバイト位置)は、KS60151 MD-0-5 の結論に合わせる。 |
| GD-16 | 【漏れ】 | 生成定義 C41(MD 行32、プロパティ一覧 データ No.1「条件無し」と同じ) | PR-1 | 請求明細印刷ワークデータリストの取得に、並び順の指定が無い。現行は、順編成ファイルの順序に依存している(見出し1→見出し2→明細→計の順。改ページ・行カウンター・キャッシュの比較もこの順序に頼る。src L546、L2148)。KS60151 PR-1 と同じ。 | ORDER BY(ID、または YYMM・SDTASHTN・RENB・NPAG・NLIN など、KS60144 の出力順)を指定する。 |
| GD-21 | 【誤り】 | メソッド詳細 側(生成定義は正しい) | PF-1、PF-2 | 生成定義のほうが正しく、メソッド詳細が食い違っている箇所がある。 ・MD 行48(引数が「見出し1処理 をコールする。」になっている)⇔ C61 ・MD 行191(設定する文字列に項目名が無い)⇔ C222「配信店所[SQHATNCD]」 ・MD 行421(上段の条件で中段を連結している)⇔ C447 ・MD 行457・474〜503・520(出力バッファが「変数.出力バッファ」)⇔ C495・C515〜C575「住所6/7行出力バッファ」 ・MD 行527(印刷データが「変数.郵便番号前半」)⇔ C583 ・MD 行529(不要な「出力バッファ.住所4 ← 住所4文字列」)⇔ 生成定義には無い ・MD 行345「出力バッファ2」、行613(印刷データ欄が「設定する文字列:…」)、行648「出力バッファ12」⇔ C350・C696・C736 ・MD 行1691・1699(SO 判定・終了位置の比較対象)⇔ C1812・C1820 ・MD 行1966「銀行マスター」(直後の行1968は「銀行マスター2」)⇔ C1952 |
メソッド詳細を生成定義に合わせて直す(KS60151 PF-1・PF-2 と同じ扱い)。 |
② テーブル定義 DAISEQ4J_0700TD(請求明細印刷ワークデータ ECOデリバリー版)¶
テーブル定義(DAISEQ4J_0700TD)¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| T70-2 | 【誤り】 | No.2 DATA_KBN(L10)、No.8 DTID(L16) | MD-0-1、T35-4 | DATA_KBN のコード表「1:旧,2:旧,3:明細,4:集計,5:新,6:新,7:連番3,8:連番4,9:総合計」が、KS60144 の設計(総合計も "4"、"9" を設定する処理なし、"7" は検品料見出し。KS60151 MD-0-1)とも、KS60152 のメイン処理("9" の分岐なし、PF-1)とも合っていない。「7:連番3,8:連番4」の意味も不明。DTID の備考「1:元2:着3:合計9:総計」には、現行で使う 0(明細)・5(見出し1)・6(見出し2)が無い(src L559、L713、L1854)。 | KS60144 の設計と合わせて DATA_KBN のコード表を確定する。KS60152 は DTID と NLIN で判定する(PF-1)ので、DTID の値(0・1・2・3・5・6・9)を正しく書く。 |
| T70-4 | 【誤り】 | No.15・16 SDTAKYMD・SDTASYMD(NCHAR(8)) | T35-2、MD-0-3 | 現行の SQHASYMD・SQHAEYMD は PIC'(6)9'(YYMMDD)(KS60144 T35-1 と同じ)。KS60152 のメソッド詳細は6桁・8桁の両方を扱う書き方(行159〜160、行1179)なので影響は限られるが、定義と KS60144 の書き方が決まっていない。現行の S(開始)・E(終了)と 0700 の K(開始)・S(最終)で記号が入れ替わっている。 | 桁数を確定し、対応(SQHASYMD→SDTAKYMD、SQHAEYMD→SDTASYMD)を備考に書く。 |
| T70-6 | 【漏れ】 | テーブル説明(A108〜) | T35-4 | 空欄。行の種類(見出し1・見出し2・明細・合計)ごとに、どの列に何が入るかの対応表が無い。例:明細の運賃は SDTAUNTI、見出し2の運賃は SQHBUNTI、合計の保険料は SDTAHOKR(MP-3)。KS60151 T35-4、KS60144 T35-4 と同じ。 | 対応表と、DATA_KBN・DTID のコード表(T70-2)を書く。 |
| T70-7 | 【要確認】 | No.24 SQHBNAME(64)、No.23 SQHBHEAD(8)、No.26 SQHBHTEN(14)、No.36〜38 SDTAJKA1〜3(34・38・52)、No.62 SQHCCHNM(12)、No.63 SQHCSHNM(14)、No.69 SQHCBIKO(12) | T35-3 | 桁数が現行の EBCDIC のバイト数(SO/SI 込み)のまま。NCHAR に SO/SI を残すのか、文字にして格納するのかが決まっていない。KS60152 のメソッド一覧 No.13「SO/SI除去処理」や、住所・名称の区切り位置(30・28バイト)はこれ次第で変わる(KS60151 T35-3 と同じ)。 | 格納形式(文字コード、SO/SI の有無、桁の数え方)を決め、テーブル説明に書く。 |
ER図・SQL¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| T70-11 | 【漏れ】 | C5〜D8(SELECT * FROM DAISEQ4J_0700TD) |
T35-1、PR-1 | ORDER BY が無い。現行の KS60152P は WORK0700 を先頭から順に読み(src L546、L2148)、見出し1の前回キー比較、行カウンタ、改ページ、計の行の位置をこの順序に頼っている。RDB では ORDER BY が無いと順序が保証されない(PR-4)。 | KS60144 の書込み順を保証する ORDER BY を付ける(ID が書込み順に採番されるなら ORDER BY ID。キーで並べるなら YYMM・SDTASHTN・RENB・NPAG・NLIN など、KS60144 の出力順と同じになるキーを KS60144 の設計と確認して決める)。 |
③ 帳票出力(A-SPOOL 向けテキスト)¶
出力方式(0152TD → テキスト出力)¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| CH-C-6 | 【漏れ】 | No.8 行1046〜1081(MD-8-1 の対応) | CH-4、CH-14、CH-16 | テキストとして出力する場合の仕様(どのファイルに、何バイトの行を、ASA をどう付けて書くか)が無い。現行の仕様は次のとおり(src L26〜L28、L462、L563、L796、各 WRITE、JCL L593〜L595)。 | No.8 を次の仕様で書き直す。 ① 出力先と振分け:出力先区分="1" → KS601521(現行 OUTFILE、インフォコム)と KS601523(現行 OUTFIL3、インフォコム送付用)の両方に同じ行を、この順で書く。"2" → KS601522(現行 OUTFIL2、事業所送付用)だけに書く。"0" → どこにも書かない。1行目だけはファイルごとに 33〜36桁が違う(MD-8-2)。 ② 行の形式:1行=133バイト固定。1バイト目=ASA 制御文字、2〜133バイト目=印字データ132バイト。現行の RECFM=FA、BLKSIZE=133 と同じ。 ③ ASA:'1'(改ページ。見出し1の1行目)、'0'(1行空け。1ページ目の4行目)、' '(それ以外すべて。2行目、5〜14行目、空行、明細、48〜50行目)。CH-C-1、CH-C-2 のとおり、計の行も ' '。 ④ 文字コードと132バイト化:Shift_JIS(全角2バイト、半角カナ1バイト、SO/SI なし)。印字データは Shift_JIS のバイト数で132バイトに右詰め空白埋め・切捨てを行い、全角の途中で切らない(切れる場合はその1文字を半角空白2つにする。KS60151 CH-4)。行1058〜1061 の「スペース埋め(長さ132)」が文字数でなくバイト数であることを明記する。℡・№ など Shift_JIS に無い文字の扱いは KS60151 CH-16 に合わせる。 ⑤ 行の順序:処理した順にファイルの末尾へ追記する(シーケンス番号は不要)。 ⑥ 行カウンタ:書き出しのたびに No.8 で+1 する。呼び出し側では加算しない(MD-4-2)。出力先区分="0" のときも、現行は行カウンタを進める(src の LINE_CNT の更新は OUT_SW に関係なく行う)が、各処理の冒頭で終了するので結果は変わらない。 ⑦ A-SPOOL への引渡し:ファイル名、クラス(現行 E)、フォーム名(KS601521〜KS601523)、改行コードの有無、ASA を1バイト目に残すことを、A-SPOOL の取込仕様に合わせて記載する(要確認)。 |
クラス概要・メソッド一覧ほか(CH-A)¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| CH-A-3 | 【誤り】 | メソッド一覧 No.16 数値上書き処理(AI19)、メソッド詳細 行2143〜2164 | CH-5 | 「カンマ区切り・右寄せ編集(幅超過時はカンマなし)」で、入る限りすべての数値にカンマを付け、0 も「0」と編集する。現行は次のとおりで、ほとんどの金額欄が変わる。 ・カンマが付くのは鑑の請求額 OT4SQKN('ZZZZ,ZZZ,ZZZ'、src L145)だけ。明細・合計・鑑の内訳は 'ZZZ…'(src L172〜178、L309〜320、L346〜357)でカンマなし ・'ZZZ…' は 0 を空白で印字する。負数は重ね定義('---9')で符号付き ・検品明細・検品料合計(KMEI_・KKEI_)は '----9' で 0 も「0」(src L377〜398) |
引数に編集書式(カンマの有無、0 の空白化)を加え、項目ごとに現行の PIC に合わせて使い分ける(KS60151 CH-5 と同じ)。 |
| CH-A-4 | 【要確認】 | メソッド一覧 No.13 SO/SI除去処理(AI16) | CH-4 | 「先頭 SO・末尾 SI を除去して返す」とあるが、現行の帳票では SO/SI が各1桁を占めている(例:住所 OT5JYU1_SO〜_SI、src L150〜152)。Shift_JIS のテキストには SO/SI が無いので、除いた分だけ以降の桁が詰まる。0700TD の格納形式(T70-7)と、SO/SI の位置に半角空白を入れるかどうかが決まっていない(KS60151 CH-4 と同じ)。 | 「SO/SI の位置には半角空白1バイトを入れ、各項目は Shift_JIS のバイト数で桁に詰める」と記載する。 |
見出し1・見出し2(CH-B)¶
| No | 区分 | 箇所 | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| CH-B-3 | 【要確認】 | 行331・340・349・438・447・469・532・600・617・626 | CH-4、CH-7 | 住所・名称を「3桁目から28(名称3は16)バイト」に置いている。現行は3桁目が SO、データは4〜31桁(名称3は4〜19桁)、その後ろが SI(src L147〜257)。Shift_JIS で SO の位置から詰めると1桁左にずれる。また、名称の SO/SI は、1ページ目は先頭が全角のときだけ付き(src L925〜947)、2ページ目以降は常に付く(src L736〜744)。どちらを再現するかが決まっていない(KS60151 CH-4、CH-7 と同じ)。 | 「SO・SI の位置は半角空白とし、データは4桁目から」と記載する。カナ名称の扱いも決める。 |
| CH-B-4 | 【要確認】 | 行655・660・665・674・679 | CH-4 | 検品見出しの文字列から SO/SI を抜いて、現行と同じ欄(12〜45、46〜58、59〜90桁)に置いている。現行の M11MID1 は「SO+**検品(8バイト)+SI+空白24」の34バイト(src L263〜264)なので、Shift_JIS で詰めると、文字が1桁左にずれて、欄内の後続の位置も変わる(M11MID2・M12MID1・M12MID2 も同じ)。 | CH-B-3 と同じ規則(SO/SI の位置は半角空白)で文字列を定義する。 |
| CH-B-5 | 【漏れ】 | 行402〜406、行473〜513 | CH-5 | 「数値上書き処理」の編集書式が書かれていない。現行は次のとおり。 ・請求額:'ZZZZ,ZZZ,ZZZ'(カンマ付き、0 は空白)、負数は '----,---,--9'(src L145、L452) ・鑑の金額:'ZZZ…'(0 は空白)、負数は '---9'(src L172〜178、L453〜459) 仮締のときに設定する0(行400)は、現行では空白で印字される。 |
項目ごとの書式を定義する(KS60151 CH-5 と同じ)。 |
| CH-B-6 | 【要確認】 | 行633 | CH-16 | 12行目の「℡」は、Java の文字セット "Shift_JIS" では変換できない(KS60151 CH-16 と同じ)。 | Windows-31J を使うか、別の表記に置き換えるかを決める。 |
計・明細・出力処理(CH-C)¶
| No | 区分 | 箇所 | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| CH-C-4 | 【要確認】 | No.4 行750〜754 | CH-4 | 48行目の見出し「検品個数⇒ 有り 無し」を、開始位置25、24バイトで設定している。現行の MKGMID1 は 25〜48桁の24バイトで、25桁目が SO、26〜47桁が全角11文字、48桁目が SI(src L281〜L286)。Shift_JIS では全角11文字=22バイトなので、25桁目から詰めると、現行より1桁左に出る。KS60151 CH-4 と同じ。No.5 のサーチャージ見出し(行828〜830、72桁目から 'サーチャージ' 7バイト)は半角カナなので現行(MS2MID1、72〜78桁)と一致する。 | 「26桁目から22バイト(25桁目と48桁目は空白)」と書くか、KS60151 CH-4 の規則(SO/SI の位置は半角空白1バイト)を共通の規則として記載し、それに従う。 |
| CH-C-5 | 【要確認】 | No.4 行768〜774、No.5 行862〜889、No.7 行1032〜1040(編集は No.10〜No.12、作業者D の範囲) | CH-5、CH-9 | No.4・No.5・No.7 が出す行の符号・ゼロの扱いは、No.10〜No.12 の「数値上書き処理」に任されているが、現行は行・項目ごとに書式が違う。No.10〜No.12 のレビューで、次の現行仕様と合っているかを確認してほしい。 ・計の行(KEI):0 以上は 'ZZZ…'(0 は空白)、負数は重ね定義 KEI_D の '---9'(符号付き)で、項目ごとに切り替える(src L1575〜L1691、L1717〜L1833、L359〜L373) ・検品料の計の行:個数・重量・その他料金・合計は KNP_KEI の '-----9'(0 も '0')。保険料・その他立替・割引(93〜113桁)と時間帯料(86〜92桁)は KEI の 'ZZZ…'(0 は空白、負数は符号が落ちる(推測))。KS60152 は時間帯料に KKEI_ZIKN ではなく KEI_ZIKN を使っている(src L1350〜L1352、L1356、L1362、L1372〜L1374、L1379、L1386)。No.10 は保険料・その他立替・割引を合計に足すだけで、印字していない ・明細行(MEISAI):計の行と同じく 'ZZZ…'/'---9' の切替え(src L1919〜L2029、L324〜L338)。検品明細(KNP_MEISAI)は '----9'(0 も '0')(src L375〜L386) |
作業者D の指摘と合わせて、行種別ごとの項目・桁位置・書式の表(KS60151 帳票出力「参考:現行の出力行レイアウト」と同じ形)を設計書に載せる。KS60152 の検品料の計の行では、上記のとおり KEI_* の項目も印字されることを明記する。 |
行編集・共通処理(CH-D)¶
共通(No.15 文字列上書き・No.16 数値上書き・SO/SI)¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| CH-D-1 | 【誤り】 | No.15 行2099・2111〜2120、No.16 行2129・2159〜2164、No.9 行1094・No.10 行1270・No.14 行1717(出力バッファ『配列』文字型) | CH-4、MD-0-5 | 出力バッファを「文字型『配列』」とし、開始位置・フィールド長は「バイト」と書いているが、置換は文字の位置で行う形になっている。全角1文字は Shift_JIS で2バイトなので、文字単位で置き換えると全角を含む項目の右側の桁がすべて左に詰まり、No.8 で132桁にスペース埋めした行が132バイトを超える(例:OUT_1 の店所略称(全角6文字)で、店所コード33〜36桁(A-SPOOL の振分けキー)が6桁左にずれる)。スペース埋め・切り捨てもバイト単位か文字単位か書かれておらず、全角の途中で切れる場合の扱いも無い。行2116 は「MIN(… , 引数.出力バッファ『配列』)」で「長さ」が抜けている(生成定義 C2043 は「出力バッファ長」)。No.11・No.12 は出力バッファの初期化(長さ・空白埋め)が無い。 | 出力バッファは「Shift_JIS の byte[132](初期値は半角スペース)」と定義し、開始位置・長さはバイトで扱うと明記する。設定する文字列は Shift_JIS に変換してから、長さに足りなければ半角スペースで埋め、超えれば切り捨てる(全角の途中で切れる場合はその1文字を半角スペースにする)。No.11・No.12 の先頭に初期化を追記する。 |
| CH-D-2 | 【誤り・重大】 | No.16 行2143〜2151 | CH-5 | 金額を「カンマ付きで幅に収まればカンマ付き、収まらなければカンマなし」で編集している。現行でカンマ付きの PIC は請求額 OT4SQKN(ZZZZ,ZZZ,ZZZ、src L145)だけで、明細・合計・検品・鑑の金額はすべてカンマなし(ZZZ…、---9)。例:明細の運賃 12345 は現行「 12345」、設計「 12,345」。「幅を超えたらカンマ無し」も PIC と同じ結果にならない。OT4SQKN は10桁で「1234,567,890」(カンマ位置固定)と出るが、設計は「1,234,567,890」が13桁で幅12を超えるため「1234567890」になる。幅を超えたときに右端を切り出すと、負数の符号も落ちる。 |
書式(PIC 相当)を引数で受け取る形にする。最低限、①0 を空白にするか(Z)/「0」と出すか(9)、②符号の有無、③カンマの有無(OT4SQKN だけ)の3つを持たせ、項目ごとの書式を行レイアウト表に書く(KS60151 CH-5 と同じ)。 |
| CH-D-3 | 【誤り】 | No.16 行2143〜2145、呼び出し側の全項目 | CH-5 | long を書式整形するので、0 は常に「0」と出る。現行は ZZZ… の項目(明細・合計の金額、個数・重量、鑑、請求額)は 0 を空白にする。例:税区分2=1 の明細の消費税(MEI_ZIKN=0、src L1952)は現行空白、設計「0」。逆に検品明細・検品料計(KMEI_・KKEI_、----9)は 0 を「0」と出す。 |
CH-D-2 の書式引数で、Z 系は 0 を空白、9 終わりは「0」とする。 |
| CH-D-4 | 【要確認】 | No.9 行1155・1158〜1162、No.10 行1284〜1292(SO/SI の位置) | CH-4 | 全角項目の桁の取り方が統一されていない。No.10 は現行の SO の位置を飛ばして文字を置いている(「検品料 計」を25桁目、「検品料」を7桁目)が、No.9 の店所略称は SO の位置(18桁目)から置き、「???」の固定値も SO/SI の2桁を詰めた「 ??? 」(12バイト)にしている。このため店所略称だけ現行より1桁左に出る。KS60151 CH-4 と同じ問題。 | 「現行の SO/SI の位置には半角スペース1桁を置く」に統一する。店所略称は19桁目から12バイト(18・31桁は空白)、未登録時は「 ??? 」(14バイト)とする。RDTENS の DDTTNRNM に SO/SI が入っているかどうかも確認する。 |
No.9 OUT_1行編集¶
| No | 区分 | 箇所(セル・行) | KS60151 の同じ指摘 | 指摘内容 | 正しい内容・対応案 |
|---|---|---|---|---|---|
| CH-D-6 | 【誤り】 | 行1177、行1227〜1243 | MD-0-3 | 開始年月日は6桁なら "20" を付けて8桁にしている(行1205〜1206)が、終了年月日は8桁への変換が無く、「桁数=8 の場合」だけ出力する。6桁で入ってきたとき(行1179 で "250105" を判定しているので、6桁もあり得る前提)、111〜118桁が空白になる。現行は YYMMDD の上2桁から順に出す(src L667〜L674)。 | 終了年月日にも行1205〜1206 と同じ変換を入れる。0700 の SDTASYMD(NCHAR(8))の格納桁数を KS60144 と合わせて確定する(KS60151 MD-0-3)。 |
| CH-D-13 | 【漏れ】 | 行1627〜1668 | MD-1-19 | 備考の条件に当たらないとき(大半の明細)の、122〜132桁の既定値が無い。現行は先に MEI_TSKB=訂正変更区分(122〜123)、MEI_TENS=受付店・配達店の下4桁ゼロ埋め(124〜127、SQHCTENS は DECIMAL(5) → PIC (4)9)、MEI_BIKO=備考の1〜5バイト(128〜132)を入れ、条件に当たったときだけ上書きする(src L2032〜L2035)。 |
既定値の設定を追記する。点数は KS60151 MD-1-19 と同じく「下4桁を4桁ゼロ埋め」。 |
| CH-D-14 | 【誤り】 | 行1518〜1533 | CH-10、CH-3 | 検品明細(KNP_MEISAI)の内容が現行と大きく違う。 ・個数 34〜38・重量 40〜46(現行 KMEI_KOSU 47〜51・KMEI_JRYO 52〜57、 ----9)・荷送人名(33〜46)を出していない(現行は通常明細と同じく出し、その上に重ねる) ・現行の 元着欄「検」(13〜16、src L2074)、「運送送状⇒」(58〜69)、着荷主電話番号+備考の10〜12バイト(70〜83、src L2078)、合計1(84〜89)、消費税(90〜95)、合計2(114〜121)、備考1〜5バイト(128〜132)が無い ・現行は通常明細の保険料・立替・割引(96〜113)と訂正区分・点数(122〜127)が残る(KS60151 CH-3 と同じ)が、設計はこれらも出さない |
検品明細は「通常明細を編集した後、KNP_MEISAI の項目を上書きする」と書き、各項目の位置と書式(----9、0 も「0」)を記載する。計算は MD-12-4。 |
| CH-D-17 | 【誤り・重大】 | 行1717、行1797〜1964、行1995〜2075、戻り値(No.3 行642〜648) | CH-8 | ①銀行欄を1本のバッファ(1行)に作っている。現行は第1銀行を10行目、第2銀行(または1銀行時の種別・口座番号)を11行目に出し、それぞれ名称1・2(3〜32桁)、店所住所3(106〜129桁)、TEL・振込記号と同じ行にある(src L1012・L1017・L1055・L1134)。No.3 は戻り値を独立した1行として出しており(設定値も「変数.出力バッファ12」)、行数も1行多くなる。 ②1銀行のときも名称の長さで4通りに分け、名称を22桁目、種別を48〜56桁目、口座番号を62桁目に出している。現行の1銀行は長さで分けず、10行目に名称(49〜88)、11行目に種別(71〜74)・「口座番号」(77〜84)・番号(86〜92)を出す。 ③2銀行のときの名称の開始位置が、第1銀行 5桁目・第2銀行 67桁目で、現行(10行目・11行目とも48桁目)と違う。 |
戻り値を「10行目の銀行欄(48バイト)」「11行目の銀行欄(48バイト)」の2つにし、呼び出し側で10行目・11行目の47〜94桁に入れる。配置は本書冒頭の「銀行欄の現行の配置」のとおり。 |
表示するデータがありません
操作