4. 技術情報(品番・構成・設計№)
お客様から「この部品を作ってほしい」という話が来ても、AS/400上で受注・生産の処理ができるようになる前に、必ず品番・構成(BOM)・設計№を登録しておく必要があります。MENUK1「技術情報管理」はその土台づくりを担うサブシステムです。
構成(BOM)がksmpを軸にどうつながっているかをER図で見るには、16. データモデル(ER図)を参照してください(自己参照になっている点、1段しか展開されない点もそちらで図解しています)。
- 受注・生産の前に必ず品番・構成(BOM)・設計№を登録しておく「土台づくり」がMENUK1の役割。
- BOMのksmpは1行=単一の親子関係のフラット構造だが、実データには多段階層が実在する。
- 部品品番(10,096件)は受注品番(6,704件)よりおよそ1.5倍多く、複数部品がぶら下がる構造。
1. 位置づけ — 新規品番立ち上げのバックボーン
板倉製作所では、お客様(トヨタ紡織・アイシン・デンソー等)から新しい部品の依頼が来ても、 AS/400システム上で受注処理や生産指示ができるようになる前に、必ず技術情報を登録しておく必要があります。 それがMENUK1「技術情報管理」サブシステムの役割です。次の3つの情報がそろって初めて、その品番(部品番号)は 「受注可能」「生産可能」になります。
- 受注品番登録 KSBS01
お客様に対して「この品番を扱っている」とマスタに登録する。担当: 技術・営業事務 - 構成(BOM)登録
その品番が実際にはどんな部品(単品品番)の組み合わせでできているかを登録する。担当: 生産技術 - 設計№登録 KSBS03
図面に対応する社内管理番号を割り当てる。担当: 設計 - レーザー№登録(必要に応じて) KSBS14
レーザーマーキング機に登録する識別番号を割り当てる。担当: 生産技術
(出典: analysis/out/menu_tree.md:85-111, pilot/spec/menuk1-predig.md:13-26)
#CHKSNサブルーチンは、
入力された品番が設計№マスタ(snmp)にも受注品番マスタ(jhmp)にも一件も存在しない場合、
メッセージ14「設計№が登録されていない品番は処理できません。」で入力そのものをブロックします。
つまりまったくの新規品番は、先に設計№を確保してからでないと受注品番登録すら通らないという業務ルールです。
(出典: pilot/spec/menuk1/itks01r.md:123-133、履歴コメント「10/09/28 change — 設計N未登録品番はブロック」)
ただし実際の新規立ち上げ現場では、これを1画面で同時に行う道もあります。MENUJ1(受注管理)側の ITKS16R(新規・設変構成入力、JSBS03経由)は、得意先入力 → 受注品番×2枠 → 構成行×90行 → 単品品番詳細 → 確認、という一連の流れの最後に、JHMP・KSMP・BHMP・SNMPへの書き込みを一括で行います (出典: pilot/spec/itks16r.md:50-75)。つまり:
| 窓口 | 主な使いどころ |
|---|---|
| KSBS01 / KSBS03(MENUK1、本ページの対象) | 既存品番の属性メンテナンス、または設計№だけを先に確保しておく単独登録 |
| ITKS16R(MENUJ1、受注入力の一部) | 新規受注が確定した瞬間に品番・構成・設計№をまとめて立ち上げるワンストップ画面 |
2. 品番の世界観 — なぜ複数の番号体系があるのか
板倉製作所は複数の得意先(トヨタ紡織/アイシン/デンソー機工 等)から部品を受注しており、
それぞれの得意先が自社独自の部品番号体系を持っています。そのため社内では、目的の違う複数の
「品番マスタ」を使い分けています。実データでは受注品番マスタ(jhmp)6,704件、部品品番マスタ(bhmp)10,096件が登録されています(実データスナップショット参照)。
| マスタ | テーブル | キー | 役割 |
|---|---|---|---|
| 受注品番マスタ | jhmp | jhbnhn(25桁) |
お客様に対して受注する単位の品番(顧客向け・完成品〜中間品)。得意先コード・品名・型式・号口区分などを持つ |
| 部品品番マスタ | bhmp | bhhnbb(25桁) |
社内で製造・管理する構成部品(単品)の品番。材質・板厚・在庫数・レーザー№など製造属性を持つ |
| 品番変換マスタ | cvmp | cvhnbn(25桁) |
外部から届く品番を社内の受注品番に変換するための一方向変換テーブル |
| 品番参照TB⇔AS・SK | tamp(MSBS18経由で保守) | tahntb/tahnas |
トヨタ紡織(TB)品番とアイシン精機(AS/SK)品番の相互参照(双方向) |
(出典: analysis/out/masters_registry.json jhmp/bhmp/cvmp/tamp列定義)
同じ「品番の対応表」でも、この2つは用途が根本的に異なります。混同しないでください。
cvmp(品番変換)は「外部データ取込 → 内部標準化」用、一方向。
実例: デンソー機工からのEDI受注データを取り込むITJM61Rでは、
EDIデータ中の品番セグメントを組み立てたあとcvmpをCHAINし、ヒットすればcvhn01
(変換後品番1)で上書きします。ヒットしなければそのまま使います。つまり「デンソー機工が使っている品番表記」を
「板倉製作所の受注品番」に変換する一方向のルックアップです。
(出典: pilot/spec/itjm60r-61r.md:282-308)
tamp(品番参照TB⇔AS・SK)は「顧客どうしの品番を突き合わせる」用、双方向。
KSBS20(ITKS07R)はトヨタ紡織品番かアイシン精機品番のどちらか一方を入力すると、
もう一方の品番と部品品名を返す単純な双方向ルックアップです(TB→AS: TAML1キーtahntb/
AS→TB: TAML2キーtahnas)。同一の物理部品が複数の得意先の取引経路をまたぐときに使う、
いわば「品番のロゼッタストーン」です。
(出典: pilot/spec/menuk1/itks07r.md)
jhmp)=お客様に対して見せる単位、部品品番(bhmp)=社内で作る最小単位の部品、
この2つをksmp(構成マスタ、§4)で結びつけたものがBOMです。cvmpとtampは
「同じ部品でも会社によって呼び方(番号)が違う」問題を解決するための変換・参照テーブルで、用途(取込変換 vs 相互参照)が異なります。
3. 新規品番立ち上げの標準フロー — KSBS01 受注品番データ登録
画面: ITKS01D。メニュー: MENUK1 opt 1 → CLラッパーKSBS01 →
ITKS01R(511行)。AS/400
- 品番入力(GM1画面)
WSHNBJ(受注品番、25桁)を入力。上記の#CHKSNチェックが通れば次画面へ。 - 属性入力(GM2画面)
得意先・受注品名・担当班・旧品番(設変元)・型式・号口区分・指示形態・内容区分・表面処理区分・標準在庫数などを入力。 詳細は下表参照。 - 確認 → 登録
Enterで確認画面に遷移し、再度EnterでJHMPへWRITE(新規時)またはUPDAT(既存時)。 旧品番が入力されていれば、旧品番のJHMPレコードにJHKBWK='E'(終息扱いフラグ)を立て、 削除ではなくソフト削除にします。
(出典: pilot/spec/menuk1/itks01r.md:55-73,145-163,195-199)
| 項目 | フィールド | 検証内容 |
|---|---|---|
| 得意先 | WSCDTK | TKMP(得意先マスタ)に存在するか |
| 受注品名 | WSNMHN | 空でないこと |
| 担当班 | WSCDTH | NMMPコード区分'06'に存在するか |
| 旧品番(設変元) | WSHNKY | 入力時はJHMPに存在するか(§7参照) |
| 型式 | WSTYPE | — |
| 号口区分 | WSKUGO | NMMPコード区分'18' |
| 指示形態 | WSKTSJ | NMMPコード区分'SJ' |
| 内容区分 | WSKUNY | NMMPコード区分'17' |
| 表面処理区分 | WSKUHS | NMMPコード区分'23' |
| 標準在庫数 | WSSUHZ |
検証なし(仕様上のバグ的な項目。メッセージ11は定義されているが呼ばれない) 推測含む |
(出典: pilot/spec/menuk1/itks01r.md:163,228)
画面上のショートカット
- F5=構成登録: ITKS10Rを呼び出す想定です。
ITKS10RはMENUK1の移植対象17本にも 含まれておらず、ソースも未確認(§12未解明事項1参照)。【実ソースで解明】 ITKS10R自体のソースはsource/as400-admin/transport-tooling/ITLIBS/ITKS10R.txtに実在します (見出し「ITKS10R -品番構成入力」、改修コメントは2020/05/25(新實さん本人によるもの)まで続く)。 ファイル構成(KSMPUF・JHMP/BHMP/NMMP/JUDL09IF・ 画面ITKS10D)とF6=単品登録→CALL 'ITKS02R'という内部ロジックは、現行のITKS17R (新規・設変構成修正、§7.2)とほぼ同一です。2007年のSubAssy構成機能追加作業(KSCDNGへの 区分値'8'新設)では、ITKS02R/03R/05R/06R/07R/10Rが構成マスタKSMPをNMMR-Chainで 参照する対象として並記され、2015年の構成点数上限調査でもITKS10RはITKS13R(品番構成変更)・ITKS16R・ITKS17Rと並んで「使用対象あり」(KSD101)と分類されており、 構成マスタを扱う現役プログラム群の一員として長期間扱われ続けてきたことが分かります。 【再訂正】以前の「孤立したメンバー」判定は調査手法のバグによる誤りでした——ITLIBS配下の RPG/CLソースは非UTF-8バイトを含むためfileが"data"(バイナリ)と誤判定し、grep -rを-aなしで実行すると当該ファイルが黙って除外されていました。-a付きで再検索したところ、ITKS01RのF5処理(76/100/120/142行目)にCALL 'ITKS10R'が実在し、その親 (KSBS01のCL、83行目CALL PGM(ITKS01R))、さらに親(MENUK1オプション1 「受注品番データ登録」)まで辿るとMENUK1→KSBS01→ITKS01R→(F5)→ITKS10Rという到達経路が現行ソースに 完全な形で存在します。この経路は2010年・2015年のITLIBSスナップショット2本でも一字一句同一で、ITKS10Rは 過去15年以上呼び出し元を失っていません——実務上の構成登録は今もITKS10R自身が担っており、ITKS16R/KSBS41への 一本化という仮説は不要でした。(出典: source/as400-admin/transport-tooling/ITLIBS/{ITKS10R,ITKS01R,KSBS01,MENUK1}.txt、 source/dev-archive/20070913_SubAssy構成機能追加作業/SubAssy構成機能追加作業_20070913.xls、 source/dev-archive/20150422_構成部品点数の上限変更について(変更不可)/20150422_構成部品点数の上限変更について(変更不可).xlsx、 source/dev-archive/20101020_中止・数減処理に伴う在庫戻し/ITLIBS/ITKS10R.txt、 source/dev-archive/20151016_AS400指示体制変更_中途で消滅/ITLIBS(変更前)/{ITKS10R,ITKS01R,KSBS01,MENUK1}.txt参照) 【ヒアリングで判明】ただしこの到達経路の「用途」についての結論は誤りだった。新實さんへの追加ヒアリングで 実運用の使い分けが確定した——「部品構成の新規登録はJSBS03→JSBS03C1(品番情報入力)→ITKS16Rで登録します」 「KSBS01(ITKS10R)は、入力されているデータを変更する場合に使用します。ただし構成展開が1件でも行われた 場合は変更できません。その場合はKSBS41を使用します」。つまりMENUK1→KSBS01→ITKS01R→(F5)→ITKS10Rという 経路は新規BOM登録の入口ではなく、既登録データの編集専用経路であり、しかも構成展開後はロックされて KSBS41に切り替える二段構えの運用だった。 (出典: 新實さん、2026-07-23ヒアリングシート回答C、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-C.md参照、hearing.html C7) - F6=担当班: LTNM06Rを呼び出し、担当班コード一覧から選択できます。
4. 構成(BOM)管理
4.1 データ構造
ksmp(構成マスタ)が板倉製作所のBOM本体です。1行が「この受注品番には、この部品品番がこの数量含まれる」
という関係を表す、フラット(単一階層)なBOM行です。実データでは28,783行、親品番6,695件が登録されており、1親品番あたり平均4.30・最大88件の子品番を持ちます(実データスナップショット参照)。
| 列 | 内容 |
|---|---|
kshnbj | 親品番(受注品番、顧客向け単位) |
kscdng | 内外コード |
kshnbb | 子品番(部品品番、構成部品) |
kskssu | 構成数(この親1個に対して子が何個使われるか、numeric(9,2)) |
ksymd | 登録年月日 |
ksd103 | 組付順序区分 |
(出典: masters_registry.json ksmp定義。キー: kshnbj + kscdng + kshnbb)
多段階層(部品の部品…)を1回のクエリで展開する仕組みはKSMP自体にはなく、必要な場合は
bomExplosion.tsのような別ロジックで再帰展開します。(出典: pilot/spec/menuk1/itks03r.md:183-184)
4.2 構成問合せ — 親から子/子から親(KSBS05/KSBS07)
- KSBS05(ITKS03R)親→子: 受注品番を入力すると、
ksmpからkshnbj=品番の全行を読み、 子品番の品名・材質・板厚(bhmpから結合)と構成数を一覧表示します。単一階層のみ、再帰なし。 - KSBS07(ITKS04R)子→親: 部品品番を入力すると、逆方向に
ksml1(ksmpをkshnbb,kshnbjの順でインデックスした論理ファイル)を引いて、その部品を使っている全ての受注品番(親)と、 各親の初回納入日(judpから最小の非ゼロjunohiを検索)を一覧表示します。
両画面はF5で相互に行き来できる、対になった照会画面です。 (出典: pilot/spec/menuk1/itks03r.md:1-30,190-193, itks04r.md:1-19,142-156)
4.3 構成ツリーデータのExcel往復(KSBS09/10)
生産技術担当が構成ツリーをExcelで編集できるようにする、3ステップの仕組みです。
- KSBS09 構成ツリーデータ書き出し ITKS30R
R側/L側それぞれ最大15組の品番ペアを入力すると、ktmp(構成ツリーマスタ、多階層・親子関係・R/L対応を持つ) にデータがあればそれを、なければksmp(フラットBOM)を代替ソースとして、ステージングテーブルKTMPP1へ書き出します。先頭に必ずダミー行(P1HNBR='DUMMY')を1件書き込み、 これがステップ2の「Excel処理が正常終了したかどうか」の目印になります。 - Excelマクロが整形・出力 Excel/VBA
BAT0409.XLSMがKTMPP1から読み出して整形・出力します(本移植では未着手のシーム)。 - KSBS10 構成ツリーデータ取り込み ITKS31R
編集済みExcelからBAT0410.XLSMがKTMPP1へ書き戻し、ITKS31Rが読み込んでktmpへ 反映します。取込は「同一の基準品番ペアの既存行を全削除→新規行を全書き込み」という破壊的置換です。
(出典: pilot/spec/menuk1/itks30r.md:12-26,180-185, itks31r.md:25-30,44-46,126-131)
NIINOMIを入力しないと実行できません。なお、ダミー行がそのままktmpへ書き込まれてしまう
可能性がある点が未解明です(§12未解明事項7参照)。
詳細: KSBS11 試作品製造計画表作成(なぜMENUK1にあるのか)
KSBS09と同じ入出力形式(R/L品番×15組)で、KTMP(または代替でKSMP)を読み、JHMP/BHMPから品名、
SNMPから設計№、JUDL14(受注データ論理ファイル)から納期・支給日を付加した
リッチなステージングテーブルKTMPP2を作り、Excel(BAT0411.XLSM)へ出力します。
KTMPP1と違いKTMPP2は取込専用ではなく出力専用(インポートし返す処理はありません)。
「なぜ試作品計画表がBOM系にあるのか」は§8.2で扱います。
(出典: pilot/spec/menuk1/itks32r.md:12-26)
4.5 構成がその先で何を動かすか
構成(BOM)は単なる台帳ではなく、生産指示の計算根拠です。KSBS41(ITKS13R
品番構成変更=構成展開反映)は、BOM変更をbjdp(部品手配データ、構成展開済みの実運用テーブル)に反映し、
在庫引当の戻し/再引当(PBZKUPR経由)まで連動させます。つまり技術情報側でBOMを直すと、
生産側の部品引当・出庫指示にまで波及する、というのが構成データの重みです。
(出典: pilot/spec/menuk1/itks13r.md:1-65)
5. 設計№管理
5.1 データ構造とKSBS03の登録フロー
snmp(設計№マスタ): キーsnbnhn(品番)、snnosk(設計№、8桁)、
sncdhn(品番コード、連番)、sncdtk(得意先コード)。
KSBS03(ITKS12R)は、1枚の図面に対して1つの設計№を割り当てる登録画面です。 GM9画面の固定注記に明記されています:
すなわち設計№=図面番号であり、1枚の図面に複数品番(例: 左右対称部品、共通図面上の複数バリエーション)が 載っている場合、それらをまとめて最大4品番、同一の設計№で登録します(W1HNBJ〜W4HNBJ、4スロット)。 (出典: pilot/spec/menuk1/itks12r.md)
5.2 設計№の採番ロジック(#NKMP)
設計№は8桁の文字列で、次のように機械的に組み立てられます。
| 桁位置 | 内容 | 由来 |
|---|---|---|
| 1-2 | 得意先設計コード | TKMP tkd201 |
| 3-4 | 登録月(2桁) | システム日付 |
| 5-7 | 当月連番(3桁) | NKMPカウンタ |
| 8 | 西暦年コード(1文字) | YXMP yxcdsk |
連番はNKMP(ナンバー管理マスタ)で月次に管理され(キーYYYYMM)、加えて888888という
固定キーの1行が累計件数カウンタとして使われます(初期シード必須)。年コード文字は
「O(オー)は0(ゼロ)と紛らわしいので使わない」というデータ品質上の取り決めがあります。
(出典: itks12r.md:128-170,281,289)
実データ38,206件の年コード(設計№8桁目)を集計すると、A〜Zの26文字のうちOが1件も出現しないことが確認でき、このルールが実運用でも厳密に守られていることが裏付けられました(実データスナップショット参照)。
YXMP(西暦年→年コード対応表)が
新設され、以後は年コードを追加するだけならRPGの修正は不要という設計になっています(ITKS12R・ITKS16Rが
YXMPを参照する年コード割り振り方式に変更されたのはこの時)。ラップアラウンドに伴い、
snmp(設計№マスタ)の再編成(reorg)ロジックも変更されました:
再編成実行時の西暦年から4年後までに使う予定の年コード文字を使っている古い設計№はSNMPから削除しますが、
jhmpまたはbhmpにまだ存在する品番の設計№は削除しません。また「関連性のない品番同士で
年コードが重複する可能性」は意図的に対策していません——1巡(約25年)後の重複は、対象が「26年前に受注した
品番」であることから運用上は判別が容易と判断されたためです。
(出典: source/dev-archive/20190808_設計№の年記号の振り方の変更/20190808_設計№の年記号の振り方の変更.xlsx参照)
5.3 重複防止と確認画面の特殊仕様
- 既に設計№が登録済みの品番を再入力するとエラー(SNMP CHAINヒット時)。
- 確認画面(GM2)ではF3(終了)が無効化されています(DSPFソース上コメントアウト、履歴コメント「07/10/22」)。 一度入力して確認画面まで進んだら、F12で入力に戻るかEnterで確定するかの二択のみで、途中キャンセルできない仕様です。
(出典: itks12r.md:53,279)
5.4 設計№⇔品番の照会(KSBS25/26)
KSBS25(品番→設計№)・KSBS26(設計№→品番)は独立したRPGプログラムではなく、
DFU(Data File Utility)による直接照会レーンです(SNML02論理ファイル経由)。
他のKSBSプログラムのような凝った画面ロジックはなく、単純な検索エンドポイントとして移植されています。
(出典: pilot/spec/menuk1-predig.md:25-26)
5.5 図面整理との接続
設計№=図面番号という対応関係から、KSBS03での登録は物理・電子図面ファイリング(図面整理)と直結しています。 要点は「設計№を起点に図面を検索できる」設計だということです。
6. レーザー№管理
6.1 目的(トレーサビリティ)
レーザー№は、プレス加工した部品にレーザーマーキング機で刻印する識別番号です。
bhmp(部品品番マスタ)は1品番につき最大10個のレーザー№スロット(bhln01〜bhln10、
各8桁)と10個の備考欄(bhbk01〜bhbk10)を持ちます。jhmp(受注品番マスタ)側にも
最大2個のスロット(jhlsn1/jhlsn2 + jhbik1/jhbik2)があります。
1品番に複数のレーザー№スロットがあるのは、金型やロット、支給元の違いなどで刻印内容が複数パターンありうるためと
考えられます 推測 用途の詳細な使い分けは仕様書に明記なし。
(出典: pilot/spec/menuk1/itls01r.md:116-121)
6.2 KSBS14 レーザー№入力(ITLS01R)
品番を入力すると、まずbhmp(部品品番)を、なければjhmp(受注品番)を検索し、
見つかった方のマスタに応じて10スロット版(GM3)か2スロット版(GM4)の入力画面を出し分けます。
二段階確認(入力→確認画面で全フィールド保護→Enterで確定)が唯一の誤登録防止策です。重複チェックはなく、自由入力です。
(出典: pilot/spec/menuk1/itls01r.md:123-137,160-165)
6.3 KSBS16/KSBS18 照会
- KSBS16(ITLS02R)品番→レーザー№: KSBS14と同じ検索・表示ロジックですが、全フィールドが出力専用(読み取り専用)。
- KSBS18(ITLS03R)レーザー№→品番: 逆方向。レーザー№を入力すると、
bhmpの10スロット全部とjhmpの2スロット全部を全件スキャン(インデックスなし、BHLN01=$1 OR BHLN02=$1 OR ... OR BHLN10=$1相当)して、一致する品番をサブファイル一覧で返します。 唯一この3本の中でサブファイル(複数件表示)を使う画面です。
(出典: pilot/spec/menuk1/itls02r.md, itls03r.md:98-124)
6.4 関連するExcelジョブ(C1_Laser) 【実VBAで解明】
実VBA解析の結果、source/proto-tooling/C1_Laser/C1金型一覧.xlsはレーザー№(KSBS14/16/18)とは無関係と
確定しました。中身は「C1」という設備(シート内ラベル・行識別子とも一貫してC1接頭辞、型種区分が
「レンジA 1/2"」「レンジB 1-1/4"」「レンジC 2"」というアマダVIPROS系タレットパンチ機の標準ステーションサイズ、
成形型シートには「VIPROS Mコード」列も実在)向けの、金型(穴抜き型・成形型・タッピング型)現品管理台帳です。
4本のマクロ(Data_Entry=新規型登録、Data_Display=型種で絞り込み一覧表示、
Data_Update=入力シートのD(削除)/U(更新)フラグ行を一覧へ反映、Data_Find=パンチ径部分一致検索、
Data_Print=A4印刷用シートへの転記)が、3枚の「○○入力」シートと3枚の「○○一覧」シート・「検索」シート・
「印刷」シートの間でデータを行き来させる、一台のPC内で完結するローカルツールです。
VBA全文(olevba --decode完全展開、Module1・Module2の2標準モジュール+ThisWorkbookと11シートのWorksheet_Change
イベント)を通じて、AS/400への接続を示すコード(データ転送のOpen、ODBC/ADODB接続、外部ファイルの
読み書き)は一切見つかりませんでした。フォルダ名の「Laser」は、「C1」がレーザー・パンチ複合機であることに
由来すると考えられますが推測、このExcelはあくまでその複合機のパンチ側(金型)だけを
扱う独立ツールで、AS/400側のレーザー№スロット(bhmp.bhln01〜10)にも刻印データにも一切触れていません。
(出典: source/proto-tooling/C1_Laser/C1金型一覧.xls — olevba --decode全展開、Module1/Module2/Sheet3〜11/ThisWorkbook;
シート名一覧: 穴抜き型入力・穴抜き型一覧・成形型入力・成形型一覧・タッピング型入力・タッピング型一覧・検索・印刷)
2026-07-23の新實さんへのヒアリングで、上記の推測が直接裏付けられた——「C1はレーザー加工複合機です(レーザー加工と金型の抜き工程を1台でこなす設備)」。他システムとの関連は無いとも明言されており、AS/400への接続コードが一切見つからなかったVBA解析の結果と一致する。ただしC1金型一覧.xls台帳が今も現場で使われているか(最終更新2011年のまま)は新實さんの担当範囲外で、製作部への確認が必要という回答だった。詳細はhearing.html D6参照。(出典: 新實さん、2026-07-23ヒアリングシート回答D、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-D.md参照)
7. 設変(設計変更)のフロー
「設変」とは、既存品番の仕様・図面が変わり、実質的に新しい品番として扱う必要がある場合の業務です。 ソースから確認できる設変の伝播ルートは次のとおりです。
7.1 受注品番の設変(KSBS01 / ITKS01R経由)
KSBS01の入力画面には「旧品番」(WSHNKY)という項目があります。ここに変更前の品番を入力すると:
- 新品番をJHMPへ登録
新品番としてJHMPへWRITE(新規)またはUPDAT(既存)。 - 旧品番をソフト削除
旧品番のJHMPレコードを検索し、JHKBWK='E'(終息扱い)にマークして物理削除はしない。 - 旧品番のSNMPをガード付きで削除
旧品番がSNMP(設計№マスタ)にも存在し、かつBHMP(部品品番マスタ)には存在しない 場合に限り、旧品番のSNMPレコードを削除します。BHMPに存在する(=その品番文字列が部品品番としても 使われている)場合はSNMPを残す、というガード条件があります。
(出典: pilot/spec/menuk1/itks01r.md:195-206)
7.2 新規・設変構成入力(ITKS16R、MENUJ1側)
より本格的な設変(構成ごと作り直す場合)は、MENUJ1のITKS16R(新規・設変構成入力)が
担当します。ここでも「旧品番」配列(HNOD)があり、確定時に:
- 旧品番のソフト削除
#JHMP2
旧品番ごとにJHMPをCHAINし、見つかればJHKBWK='E'でUPDAT (ITKS01Rと同じソフト削除パターン)。 - 新品番・構成・単品品番・設計№プレースホルダの新規WRITE
#JHMP1がJHMRを新規WRITEし、続けて#KSMPが構成行(最大90行)を新規WRITE、#BHMPが単品品番(存在しなければ)を新規WRITE、#SNMPが設計№マスタの空レコード (設計№未設定のプレースホルダ)をWRITE。 - 設計№設定フェーズ(任意)
GMSFL2に入り、設計№が未設定(SNNOSK=*BLANK)の行だけを集めて一括採番(§5.2と同じNKMPロジック)。
(出典: pilot/spec/itks16r.md の #JHMP2 L883-900)
jhmpの価格系フィールド)の
自動更新ロジックは見当たりませんでした。ITKS01Rの#WRITEは新規時に価格フィールドを全てゼロクリアするのみで、
#UPDATは価格フィールドに触れません。docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-C.md参照、hearing.html C7)
(出典: itks01r.md:179,193)
7.3 構成だけの修正(KSBS41 / ITKS17R)
- KSBS41(ITKS13R、品番構成変更=構成展開反映)は、既に組付指示書が発行済みの品番に限り、構成の前後比較編集画面から
KSMPを削除・再書き込みし、影響するBJDP(部品手配データ)行を再計算します(§4.5参照)。 ヘッダコメントに「現時点では、構成展開前の受注がある品番の構成データは修正できるプログラムがない」という制約が 明記されています。(出典: pilot/spec/menuk1/itks13r.md:37-40) - ITKS17R(構成修正、新規・設変の一部、MENUJ1)は
KSMPのみを対象にした軽量な構成修正画面で、 単品品番の追加はITKS02R(単品品番データ登録)を3回まで呼び出せます。 (出典: pilot/spec/itks17r.md:1-10)
8. 特殊ケース
8.1 KSBS13 保管図面データ処理 使用停止 【実VBAで解明】
MENUK1のオプション13は「保管図面データ処理」ですが、**使用停止のマークが付いています。
ソース上もITRD01Rが呼ばれる前にGOTO @FINで即座に終了する無効化コードになっています
(「DISABLED (GOTO @FIN, ACS移行); SKIP」)。
(出典: analysis/out/menu_tree.md:98, pilot/spec/menuk1-predig.md:20)
社内文書source/engineering/000_【重要】2024年1月より作業停止.txtによると:
「保管図面内に保存されているデータが図面以外のものが多くなり、整理移動することがかえってデータの検索を難しくすると 判断し、以降、最終出荷日を基準とした自動的な旧図移動は停止する。」(2024/01/26)
「CAからACSへの移行に際し、ACS対応の作業を行わなかったため、本プログラムの再開をする場合は、プログラム修正から 始めなければならい。」(2026/06/10)
つまり、AS/400端末エミュレータがCA(Client Access)からACS(Access Client Solutions)へ移行したタイミングで、
この自動旧図移動プログラムの互換対応が行われずそのまま停止した、という経緯です。移植不要
(本移植ステータス上もretired — ACS移行済; not portedと明記)。
(出典: docs/MIGRATION-MAP.md:697)
KSBS13 ↔ 図面整理Excelマクロ ↔ Ridocの連携を実際にVBA・RPG・運用手順書で確認しました。
物理ファイルHNXPP1(品番P1HNBJ+最終納期P1JNOKの2列だけの小さな索引ファイル)を軸に、
AS/400・Excel・RidocSmartNavigator(Ricoh製の文書管理システム。Webブラウザで
http://server8.itakura.co.jp:8080/rsn/にアクセスする社内サーバ運用)の三者を1年周期の棚卸し業務として
往復させる仕組みでした。運用手順はRidocSmartNavigatorの図面を整理する場合の手順.docにそのまま書かれています。
- ①Ridoc → Excel(
図面整理_Excel_To_AS400.xlsm): RidocSmartNavigatorの検索画面で 「登録日が3年前の12/31以前」の文書を抽出し、「ツール→文書情報CSV書き出し」で\\Server2\kanri\AS400設定\図面整理\Ridoc.csvに保存する(手順書手順3・4)。このCSVをmodMain_606.Mainが開き、「文書名2」「文書名3」列だけ残して 他列を削除、スペース区切りの品番・品名を分離、全角カナ→半角カナ・大文字化(StrConv)した上でridoc.xlsとして保存し、さらに全品番を1列に集約してridoc.txt(品番だけのプレーンテキスト、 実ファイルの中身は1680000-06等の実品番リストと一致)として書き出します。 (出典: 図面整理_Excel_To_AS400.xlsm modMain_606.Main、ヘッダコメント「Ridocで登録年月日の古いもののデータを CSVで書き出したものをExcelで編集し、AS400のデータ転送で送れる形にする」) - ②Excel → AS/400:
ridoc.txtを、Client Access/ACSの「データ転送」機能でRidoc.FDF(フィールド定義P1HNBJ1桁目25バイト、P1JNOK26桁目10バイト)を使い、AS/400物理ファイルHNXPP1(analysis/out/schema.sql:1251-1259で「データ・ファイル/品番/最終納期」と定義済み) へアップロードする。品番だけを送るので、この時点のP1JNOK(最終納期)は空/0のまま。 - ③AS/400内 — KSBS13(ITRD01R)が最終納期を計算: KSBS13のCLは
ITSQ01R(実行者チェック)→BAT0413A(
BATCH00経由でBAT0413A.XLSM起動)→ITRD01R→BAT0413B (同じくBAT0413B.XLSM起動)の順で呼ぶ。ITRD01R本体 (ヘッダコメント「ITRD01R - RIDOC用最終受注納期確認」)はHNXPP1をUF(更新用)で1件ずつ読み、 品番ごとに受注ファイルJUDL09を検索して最大の受注納期を求め、直接の受注が無い品番(ASSY中間品番など)は 構成ファイルKSML1(#KSMPサブルーチン)で子品番を辿って子の受注納期を採用する —— まさにパソコンでの図面保管ルールについて.txt(2004年)に書かれていた「ASSY品の中間S/A図等、 受注が発生しない品番は最終納期ではなく別基準で判断する」という運用ルールをRPGで実装したものです。求めた最大納期をP1JNOKにUPDATで書き戻します。BAT0413A.XLSM/BAT0413B.XLSM自体は 本フォルダには残っていません(CL上は参照のみ確認)。 (出典: source/as400-admin/transport-tooling/ITLIBS/KSBS13.txt、ITRD01R.txt 全89行) - ④AS/400 → Excel(
図面整理_AS400_To_Excel.xlsm):HNXPP1.FDF/.FDFX定義でCA/ACSデータ転送を使い、更新済みのHNXPP1をHNXPP1.xlsとしてダウンロードする (実ファイルの中身もP1HNBJ,P1JNOKヘッダで1680000-06,20200803のようなデータが確認できました)。modMain_606.Main(ヘッダコメント「AS400からデータ転送された最終納期の入っているデータを参照しながら、 Ridocの図面データで移動させるデータを選択する」)はこれを、①で保存済みのridoc.xls(Ridocのフォルダ一覧、1フォルダに複数品番が入り得るのでB〜S列=18列分を品番候補として持つ)と突き合わせ、 各フォルダについて一致した品番群の最大納期をA列に書き込み、「今年を含めて3年前の12/31」(Kijunbi) 以前ならセルを黄色(ColorIndex 6)にハイライトします。手順書の「オフコン 4→13.保管図面データ処理・ 基準日を過ぎたものは黄色になる」という記述は、この黄色ハイライトそのものを指しています。 - ⑤人手での移動: 手順書の最終手順は「Excelファイルと検索結果を比べて、基準日を過ぎたものを旧図内の得意先 フォルダに移動」——つまり実際のフォルダ移動はRidoc上で人間が手作業で行っており、AS/400・Excel側はあくまで 「どれを移動すべきか」を計算・可視化するだけです。
2つのExcelマクロはKSBS13の代替ではなく、KSBS13(ITRD01R)が読み書きするHNXPP1の
入力を作る側(①②、Excel→AS400)と出力を消費する側(④、AS400→Excel)を担う、KSBS13を挟んだ
往復ワークフローの前後半です。したがって2026/06/10にKSBS13へGOTO @FINが入った時点で、
③の最終納期計算が止まり、④のExcelマクロが仮に動いてもP1JNOKが更新されないため黄色ハイライトが
意味を持たなくなります(②のExcel→AS400アップロード自体はAS/400に依存しないため技術的には今も動作可能ですが、
受け皿のKSBS13が無効化されているため実質的に無意味です)。2024/01の停止は「年次棚卸しという業務そのものを
やめる」という判断、2026/06のGOTO @FINは「CA→ACS移行でこの経路の動作確認ができておらず、
再開するにはコード修正が要る」という技術的な線切りであり、業務判断が先、技術的無効化が後、という2段階の
停止だったと分かります。
8.2 KSBS11 試作品製造計画表作成 — なぜMENUK1にあるのか
KSBS11(ITKS32R)は「試作品」という生産管理寄りの名前を持ちながら、MENUK1
(技術情報管理)に置かれています。ソースを見る限り、これはBOM(構成)とその展開先(KTMP構成ツリー、KSBS09/10と共通の
データソース)を核にした帳票生成ツールであり、在庫や受注は「読むだけ」(JUDL14から納期・支給日を引くのみ、
書き込みなし)です。機能の重心が構成データの読み出し・加工にあるため、生産管理(TSBS系)ではなく技術情報管理(KSBS系)
に分類されているのだと考えられます 推測 配置理由の公式な説明は見つかっていません。
8.3 itks16r.html の D19 バグ事例 — 教訓として
これはMENUK1そのものの障害ではありませんが、隣接するMENUJ1の新規・設変構成入力(ITKS16R、§1・§7で扱った画面)の 移植版フロントエンドで実際に見つかった重大バグの事例として、新人にも共有する価値があります (出典: docs/decisions.md D19、itks16r.html)。
何が起きたか: 移植後のHTML画面で、2つの入力欄の画面表示ラベルと🔍検索ポップアップの紐付けが入れ替わって いました。
id="inp-cdth"(送信キーwscdth、本来は担当班コード)が「指示形態コード」と ラベル表示され、指示形態用のポップアップが出るよう誤配線。id="inp-ktsj"(送信キーwsktsj、本来は指示形態コード)は「構成済標準工数」という 実在しない架空の項目名でラベル表示され、ポップアップなし。
この結果、実際の担当者が画面の指示どおり「指示形態コード」欄に指示形態の値を入力すると、実際には
wscdth(担当班コード用のバリデーション)に送られてしまい、ほぼ確実にバリデーションエラーで構成登録全体が
ブロックされる、という実害のあるバグでした。バックエンド側の検証ロジック自体は最初から正しく、フロントエンドの
表示だけが壊れていました。
教訓: 移植済み画面のフィールドを疑うときは、見た目のラベルやdata-lookup属性ではなく、
id・送信キー名・数値レンジ(桁数)をDDS仕様と突き合わせるのが正しい調査手順です。同種の取り違えは
他画面にも潜んでいる可能性があるため、機械的な横断チェックが今後の課題として挙がっています。
実データスナップショット — BOM・品番・設計№を実データで検証する
ここまでの記述は主にソースコード・仕様書に基づく調査結果です。以下は、7年分のAS/400実データをインポートしたPostgreSQL(読み取り専用)に対して実際にSQLを実行し、本ページの記述と突き合わせた結果です。登録日ベースで確認できたデータの範囲はjhmpが1986-12-12〜2026-06-29、bhmpが1995-02-18〜2026-06-29(西暦2080年など明らかに壊れた日付16件は除外)、ksmpが1991-02-28〜2026-06-29で、想定より広い約35〜40年分の登録日が残っていました。
BOM(構成)の実態
| 指標 | 実測値 |
|---|---|
ksmp 総行数 | 28,783行 |
親品番(kshnbj)の異なり数 | 6,695件 |
| 1親品番あたりの子品番数(平均/最大/最小) | 4.30/88/1 |
子品番(kshnbb)の異なり数 | 9,870件 |
| 子品番のうち、他行では親品番としても登場する件数 | 4,585件(子品番の46.5%) |
ksmpは1行が単一の親子関係を表すフラットな構造ですが(§4.1参照)、実データでは子品番9,870件のうち4,585件(46.5%)が別の行では親品番としても登場していました。データそのものには多段階層のBOM(子品番がさらに構成部品を持つ関係)が実在し、1回のクエリで展開する仕組みがKSMP自体にないだけで、階層構造そのものが存在しないわけではないことが確認できます。
ある製品の構成を実データで見る
受注品番022440-1851(品名: ブラケットS/A(L)、得意先コード20)を例に、実際のksmp行を展開すると次のようになります。
子品番(kshnbb) | 品名 | 材質 | 構成数(kskssu) |
|---|---|---|---|
022413-1890 | アングルA | SECC-F2020 | 1.00 |
022442-4020 | ブラケット | SPTC-76 | 1.00 |
949050-1630 | ナット | — | 2.00 |
949050-2330 | ナット | — | 2.00 |
949350-2890 | クリップ | SPTC-76 | 2.00 |
受注品番・部品品番の登録数
実データではjhmp(受注品番マスタ)6,704件、bhmp(部品品番マスタ)10,096件が登録されており、部品品番の方が受注品番よりおよそ1.5倍多いという構成でした。1つの受注品番に対して複数の部品品番がぶら下がる、というBOMの構造(§4)と整合的な比率です。
cvmp(品番変換)・tamp(TB⇔AS・SK参照)の実サンプル
| マスタ | 件数 | 実データサンプル |
|---|---|---|
cvmp | 102件 | 116610-4100 → 116610-4100-3/246800060200000 → 246800060202000/180105-0060 → 180105-0060-2 など。サンプルの大半は同一品番に枝番(-1、-2、-3…)を付加するパターンでした。 |
tamp | 325件 | 7U145-X7513(トヨタ紡織)⇔ 435145-10290(アイシン)「ブラケット」/78157-X7V06 ⇔ 433233-10560「ボール」など。トヨタ紡織品番=英数字+ハイフン+英数字、アイシン品番=数字+ハイフン+数字、という書式の違いが実データからも確認できました。 |
設計№(snmp)の実データ
| 指標 | 実測値 |
|---|---|
snmp 総行数 | 38,206行(snbnhnは重複なし、品番ごとに一意) |
| 年コード(設計№8桁目)の異なり数 | 25種類(A〜Z、Oのみ欠番) |
受注品番マスタ(jhmp)にリンクする件数 | 6,689件(17.5%) |
部品品番マスタ(bhmp)にリンクする件数 | 7,498件(19.6%) |
| いずれかにリンクする件数 | 9,579件(25.1%) |
jhmpまたはbhmpのどちらかにリンクするのはわずか9,579件(25.1%)でした。残り74.9%は、現行の受注品番マスタ・部品品番マスタのどちらにも存在しない品番に対して発行された設計№ということになります。§7.1で述べた「旧品番のSNMPはBHMPに存在しなければ削除する」というソフト削除ルールを踏まえると、①既に物理削除されたBHMP由来の設計№が相当数残っている、②量産化されなかった試作・検討段階の品番向けに発行された設計№が多い、のいずれか(または両方)が原因と推測されますが、本調査のSQL照会だけでは確定できません。
集計に使ったSQL
-- BOM実態
SELECT count(distinct kshnbj), count(*) FROM ksmp;
SELECT round(avg(cnt),2), max(cnt), min(cnt)
FROM (SELECT kshnbj, count(*) cnt FROM ksmp GROUP BY kshnbj) t;
SELECT count(distinct kshnbb) FROM ksmp;
SELECT count(*) FROM (SELECT DISTINCT kshnbb FROM ksmp) c
JOIN (SELECT DISTINCT kshnbj FROM ksmp) p ON trim(c.kshnbb)=trim(p.kshnbj);
-- 実BOM例(022440-1851)
SELECT trim(kshnbb), kskssu, trim(bhnmbh), trim(bhzisi)
FROM ksmp k LEFT JOIN bhmp b ON trim(b.bhhnbb)=trim(k.kshnbb)
WHERE trim(k.kshnbj)='022440-1851' ORDER BY kshnbb;
-- jhmp/bhmp件数
SELECT count(*) FROM jhmp; SELECT count(*) FROM bhmp;
-- cvmp/tampサンプル
SELECT cvhnbn, cvhn01, cvhn02 FROM cvmp ORDER BY random() LIMIT 10;
SELECT tahntb, tahnas, tanmbh FROM tamp ORDER BY random() LIMIT 10;
-- snmp設計№分析
SELECT count(*), count(distinct snbnhn), min(snnosk), max(snnosk) FROM snmp;
SELECT substr(snnosk,8,1) yc, count(*) FROM snmp
WHERE length(trim(snnosk))=8 GROUP BY 1 ORDER BY 1;
SELECT count(*) FROM snmp s WHERE EXISTS
(SELECT 1 FROM jhmp j WHERE trim(j.jhbnhn)=trim(s.snbnhn));
SELECT count(*) FROM snmp s WHERE EXISTS
(SELECT 1 FROM bhmp b WHERE trim(b.bhhnbb)=trim(s.snbnhn));
-- データ登録日レンジ(jhmp/bhmp/ksmp)
SELECT min(jhsymd) FILTER (WHERE jhsymd>0), max(jhsymd) FILTER (WHERE jhsymd>0) FROM jhmp;
SELECT min(bhsymd) FILTER (WHERE bhsymd>0 AND bhsymd<=20270101),
max(bhsymd) FILTER (WHERE bhsymd>0 AND bhsymd<=20270101) FROM bhmp;
SELECT min(ksymd) FILTER (WHERE ksymd>0), max(ksymd) FILTER (WHERE ksymd>0) FROM ksmp;
9. 関連マスタ・帳票一覧
主要マスタ
| マスタ | テーブル | 用途 | 保守画面 |
|---|---|---|---|
| 受注品番マスタ | jhmp | お客様向け品番の属性 | KSBS01 / MSBS09 |
| 部品品番マスタ | bhmp | 構成部品の製造属性(材質・板厚・在庫・レーザー№) | MSBS01 |
| 構成マスタ | ksmp | フラットBOM(親品番×子品番×構成数) | MSBS17 |
| 設計№マスタ | snmp | 品番⇔設計№(図面番号) | KSBS03 / MSBS08 |
| 品番変換マスタ | cvmp | 外部EDI品番→内部受注品番の変換 | MSBS内(MNM*50) |
| 品番参照TB⇔AS・SK | tamp | トヨタ紡織品番⇔アイシン品番の相互参照 | MSBS18(DFU、deferred) |
| ナンバー管理マスタ | nkmp | 設計№の月次連番+累計カウンタ(888888固定行) | 直接保守なし(内部カウンタ) |
| 使用材料マスタ | szmp | 受注品番×材質×板厚→材料区分 | MSBS内 |
| 名称マスタ | nmmp |
コード区分別の名称テーブル(担当班='06'、内外コード='30'、指示形態='SJ'、号口区分='18'、内容区分='17'、表面処理区分='23' 等) | MSBS内 |
| 構成ツリーマスタ | ktmp | 多階層BOM(R/L対応、レベル・行番号付き) | KSBS09/10経由でのみ更新 |
| 構成ツリーP1ステージング | KTMPP1 | Excel往復用(KSBS09出力/KSBS10入力) | — |
| 構成ツリーP2ステージング | KTMPP2 | 試作品製造計画表用(出力専用) | KSBS11 |
帳票・出力
- 構成ツリーデータExcel Excel/VBA(
BAT0409.XLSM/BAT0410.XLSM、KSBS09/10) - 試作品製造計画表Excel Excel/VBA(
BAT0411.XLSM、KSBS11) - 図面整理Excel連携 Excel/VBA(
図面整理_AS400_To_Excel.xlsm/図面整理_Excel_To_AS400.xlsm、source/engineering/)— 内部ロジックは.xlsm形式のため本調査では未解析(§12未解明事項3参照)
10. 用語集
- 受注品番
- お客様に対して受注する単位の品番。
jhmpで管理。 - 部品品番
- 社内で製造・在庫管理する構成部品(単品)の品番。
bhmpで管理。 - 構成(BOM)
- 受注品番=部品品番+構成数、の親子関係データ。
ksmpで管理。 - 設計№
- 図面1枚に対して1つ割り当てる社内管理番号(8桁)。得意先コード+登録月+連番+年コードで構成。
- レーザー№
- プレス部品にレーザーマーキング機で刻印する識別番号(1品番につき最大10個)。
- 旧品番
- 設変(設計変更)で置き換えられる、変更前の品番。JHMPは物理削除せず
JHKBWK='E'でソフト削除。 - 設変
- 設計変更。既存品番の仕様・図面変更にともなう新品番への切り替え業務。
- 号口区分
- 生産のロット/号機区分を表すコード。NMMPコード区分'18'。
- 内容区分
- 品番の用途分類コード。NMMPコード区分'17'。
- 指示形態
- 生産指示の形態(組付指示のタイプ等)を表すコード。NMMPコード区分'SJ'。
- 担当班
- 製造を担当する班(チーム)を表すコード。NMMPコード区分'06'。
- 内外コード
- 品番が内製か外注か等を表す分類コード。NMMPコード区分'30'。
- R/L
- Right/Left(左右対称部品)。KTMP・KTMPP1/2の品番R・品番Lはこの対を指す。
- DFU
- Data File Utility。AS/400標準の簡易データ入力ツール。KSBS25/26やMSBS18の照会・保守で使われる、専用画面を持たない汎用CRUDレーン。
- KTMP
- 構成ツリーマスタ。多階層BOM(親子関係・レベル・R/L対応)をKSMPより詳細に保持するテーブル。
- NKMP
- ナンバー管理マスタ。設計№の月次連番と累計件数(固定キー888888の1行)を管理するカウンタテーブル。
- 図面整理
- 得意先支給図面・受注票・完成指示書等を電子化・保管ルールに沿ってキャビネット分類する業務(RidocDesk 2000使用)。
- 品番変換マスタ(CVMP)
- 外部(得意先)から届く品番表記を社内の受注品番へ変換する一方向テーブル。
- 品番参照TB⇔AS・SK(TAMP)
- トヨタ紡織品番とアイシン精機品番を相互参照する双方向テーブル。
11. 他業務との接続点
- 受注(前提): 新規受注が来ても、対応する受注品番・構成・設計№がMENUK1側で整っていなければ、
受注入力(MENUJ1)自体が完結しません。ITKS01Rの
#CHKSNブロック(§1)はこの依存関係の直接的な証拠です。 また新規・設変構成入力(ITKS16R)はMENUJ1側にありながらMENUK1のマスタ(JHMP/KSMP/BHMP/SNMP)を主に書き込む、 境界をまたぐプログラムです。 - 生産(構成が指示数計算の基礎): KSBS41(ITKS13R)が示すとおり、
ksmpの変更はbjdp(部品手配データ、構成展開済みの実運用データ)に反映され、在庫引当・出庫指示の再計算にまで波及します。 KSBS27(ITKS61R、担当班変更データ適用)も、品番の担当班を変えるとjudp/kmdp/bjdp/sjdpという4つの生産系テーブルを横断的に更新するバッチです。 つまり技術情報側の変更は生産管理側の実データに直接波及する設計です。 (出典: pilot/spec/menuk1/itks61r.md:1-20) - 材料(使用材料マスタ szmp との関係):
bhmp(部品品番)はbhzisi(材質)・bhitat(板厚)・bhkuzi(材料区分)を自身の属性として持ち、szmp(使用材料マスタ、キー「受注品番+材質+板厚」)はこれとは別に「この受注品番はこの材質・板厚の組み合わせで、 この材料区分になる」という対応を保持します。両者の使い分け(bhmpの属性が一次情報でszmpが 集計/参照用なのか、逆なのか)は本調査のソース範囲では確定できませんでした(§12未解明事項参照)。
1=材料支給、2=材料支給、3=本体支給、4/0=
(表示なし)。これはpilot/spec/itks02r.md(KSBS02 単品登録)のバリデーション仕様
「WSKUZI≤2なら材質・板厚の入力が必須、WSKUZI≥3なら入力不要」と整合します——
1・2(材料支給)は板倉側で材質・板厚を記録する必要がある「材料だけ支給される」ケース、3(本体支給)は
完成品や半製品そのものが支給されるため材質・板厚の入力自体が不要になるケース、という業務的な筋が通ります。
(出典: source/work-procedures/作業手順書/TROUBLE/PAGE15.htm参照、pilot/spec/itks02r.md L166-171,221,253,291,341-344)
12. 未解明事項 — 現場担当者への質問リスト
本調査(ソースコード・仕様書ベース)だけでは解決できなかった疑問点です。実務担当者に確認できると精度が上がります。
F5「構成登録」の実体(ITKS10R): KSBS01(ITKS01R)画面のF5キーはITKS10Rを呼び出す想定ですが、 ITKS10RはMENUK1の移植対象17本にも、他のどのメニューにもソースが見当たりません。実行を発行する呼び出し元が 1件も見つからず、現行メニューからITKS10Rへ到達する経路は存在しないと判定していました。
【完全解決】 §3で詳述したとおり、以前の「呼び出し元なし」判定は調査手法のバグでした——ITLIBS配下のRPG/CLソースが非UTF-8バイトを含むためfileが"data"と誤判定し、grep -rを-aなしで実行すると当該ファイルが検索対象から黙って除外されていました。-a付きで再検索するとMENUK1→KSBS01→ITKS01R→(F5)→ITKS10Rという到達経路が現行ソースに 完全な形で存在し、2010年・2015年のITLIBSスナップショットとも一字一句同一——ITKS10Rは過去15年以上、 呼び出し元を失っていません。実務上の構成登録は今もITKS10R自身が担っています。(出典: source/as400-admin/transport-tooling/ITLIBS/{ITKS10R,ITKS01R,KSBS01,MENUK1}.txt、 source/dev-archive/20101020_中止・数減処理に伴う在庫戻し/ITLIBS/ITKS10R.txt、 source/dev-archive/20151016_AS400指示体制変更_中途で消滅/ITLIBS(変更前)/{ITKS10R,ITKS01R,KSBS01,MENUK1}.txt参照) 【ヒアリングで判明】ただし到達経路の「用途」は誤りだった——新實さんへの追加ヒアリングで、実際の新規BOM登録は JSBS03→JSBS03C1→ITKS16Rという別経路で行われ、 KSBS01→ITKS01R→(F5)→ITKS10Rは既登録データの編集専用 (構成展開後はロックされKSBS41に切替)と確定した。詳細は§3参照。 (出典: 新實さん、2026-07-23ヒアリングシート回答C、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-C.md参照、hearing.html C7)KSBS02/04/06/08/12/15/17/19/21〜24の内容:analysis/out/menu_tree.md上で⚠missing-sourceとマークされた偶数番オプション群は、本調査の対象ファイル一式にはソースが 見つかりませんでした。空きメニュー番号か、単に未回収資料かは不明です。 【ヒアリングで判明・部分的】項目別の個別事情は依然未解明だが、一般原則は確定した——新實さん曰く 「KSBSに限らず、一度オプション指定したものを使わなくなったために削除したことは多々ある。その際、ソースは 残して参考にしたい場合、メニューから削除するだけにして本体は残している場合がある。ただしメニューに表示 されないものは現在使用していないものなので、対象から外して問題ない」。つまりメニュー非表示=現在は 非稼働で移行対象から除外して問題ないという実務上の判断基準は確定したが、なぜKSBS02/04/06/08/12/15/17/19/ 21〜24という個々の番号が欠番なのかという項目別の理由自体は今回も未回答のまま。 (出典: 新實さん、2026-07-23ヒアリングシート回答C、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-C.md参照、hearing.html C10)
【2026-07-29ヒアリングで完全解決】 2点が確定した。(1) 移行対象からの除外が新實さんにより 明示的に承認された(従来は当方の一般原則からの推論に過ぎなかった): 「KSBS偶数番メニューは、現在は 非稼働で移行対象から除外して問題ない」。(2) 欠番の理由も判明——個別の廃止事情があるからではなく、 メニュー画面の可読性を上げるために意図的に空白行を作っている(可能な範囲で)ため: 「単に可視性を上げるために、空白行を作るようにしている。(可能な場合)」。つまり偶数番が欠番なのは 偶然でも個別の廃止履歴でもなく、レイアウト都合であることが確定した。 (出典: 新實さん、2026-07-29ヒアリングシート回答、docs/feedback/hearing/2026-07-29-niimi-hearing-sheet.md参照、hearing.html C10)図面整理Excelマクロの内部ロジック:図面整理_AS400_To_Excel.xlsm/図面整理_Excel_To_AS400.xlsmはバイナリ形式のExcelマクロブックであり、本調査ではVBAコードの 中身までは解析していません。KSBS13(保管図面データ処理、使用停止)との具体的な連携方法は未確認です。
【実VBAで解明】 2本ともVBA全文を確認済み(§8.1参照)。HNXPP1(品番+最終納期の索引ファイル) を軸に、Excel→AS400(ridoc.txtをRidoc.FDFでアップロード)→KSBS13/ITRD01R (受注・構成から最終納期を計算)→AS400→Excel(HNXPP1.FDFでダウンロードし黄色ハイライト)という 往復で、KSBS13の入力を作り出力を消費する関係でした。RidocSmartNavigatorの図面を整理する場合の手順.docという運用手順書もそのまま残っており、業務手順とVBA・RPGの対応が完全に裏付けられています。C1_Laser フォルダとレーザー№業務の関係:source/proto-tooling/C1_Laser/C1金型一覧.xlsは金型 (プレス型)の一覧表であり、KSBS14/16/18(レーザー№関連)との直接的な連携ロジックは本調査では確認できませんでした。 フォルダ名からの類推にとどまります。
【実VBAで解明】 VBA全文を確認済み(§6.4参照)。中身は「C1」というアマダVIPROS系タレットパンチ機 (型種区分「レンジA 1/2"/B 1-1/4"/C 2"」、成形型シートに「VIPROS Mコード」列)の金型 (穴抜き型・成形型・タッピング型)現品管理台帳で、AS/400への接続コードは一切なし。KSBS14/16/18のレーザー№ (bhmp.bhln01〜10)とは無関係と確定しました。フォルダ名の「Laser」は「C1」がレーザー・ パンチ複合機であることに由来すると推測されますが、この点自体は新たな未解明事項です(本リスト末尾参照)。
【ヒアリングで解決】「C1」の正体が確定した——レーザー加工と金型の抜き工程を1台でこなすレーザー加工複合機であることが 新實さんにより直接確認された(§6.4参照)。(出典: 新實さん、2026-07-23ヒアリングシート回答D、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-D.md参照)単価改定と設変の関係: §7.2で触れたとおり、設変時の単価自動更新ロジックがITKS01R/ITKS10R/ITKS12R/ITKS16Rの いずれにも見当たりません。単価改定がどのプログラムで行われるか(別サブシステムか手作業か)は未確認です。【ヒアリングで判明】(解決済み)新實さんへの追加ヒアリングで、単価自動更新ロジックが見当たらないこと自体が 正しい仕様だと確定した——「設計変更であっても、異なる品番で受注し直します(客先での変更を前提)。処理としては 新規受注と同じです。単価入力は手動です」。設変は「別品番での新規受注」として扱われ、単価はその新規受注の一部として 手入力されるため、既存品番の単価を書き換えるロジックはどのプログラム・どのサブシステムにも存在しない。 (ITKS10Rの単価フィールド不在はhearing.html C7で追加確認済み) (出典: 新實さん、2026-07-23ヒアリングシート回答C、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-C.md参照)- MSBS18(品番参照データTB⇔AS・SK)とTAMPの対応関係:
masters_registry.json上MSBS18はscope: deferred(transaction-editor扱い)でテーブル名・列定義が出力されておらず、KSBS20 (ITKS07R)が読むtampと完全に同一のテーブルかどうかは、本調査で参照した資料内では厳密に 確認できていません(menuk1-predig.mdの記述「TAMP/TAML1/TAML2 have DDS」から推測すると 同一である可能性が高いですが、MSBS18側の一次ソースには未到達)。 - KTMPP1へのDUMMY行の扱い: ITKS31R(構成ツリーデータ取り込み)は、Excelが正常終了したかの判定にDUMMY行を
使いますが、判定後の主読み込みループはDUMMY行をスキップせず、そのまま
ktmpへ書き込んでしまう 可能性がある、と仕様書自体が「潜在バグかもしれない」と指摘しています。本ブリーフでは実害の有無までは 検証していません。 - KSBS25/26のDFUレーンの詳細画面仕様: DFU(汎用データ入力ツール)経由と記載されているのみで、
実際の画面遷移・エラーメッセージ等の詳細仕様は
pilot/spec/menuk1-predig.mdに記載がありません。 【証拠】C1金型一覧.xlsの行識別子は「C1_AN」接頭辞で統一され、型種区分「レンジA 1/2"/B 1-1/4"/ C 2"」と「VIPROS Mコード」列はアマダVIPROS系タレットパンチ機の標準呼称と一致するが、フォルダ名の 「C1_Laser」との対応(「C1」がレーザー・パンチ複合機の型式/号機名なのか、単なる社内呼称なのか)は本調査の ソース範囲(このExcel1本のみ、FDF等の関連ファイルはフォルダ内に存在せず)では確認できませんでした。
【質問】「C1」は具体的にどの設備を指しますか? レーザー加工とパンチ加工を1台で行う複合機ですか、それとも 別々の設備でたまたま同じ略称を使っているのですか? また、このExcel台帳は今も現場で使われていますか (最終更新は2011年のまま)?
【解決・一部】「C1はレーザー加工複合機です(レーザー加工と金型の抜き工程を1台でこなす設備)」と 新實さんにより直接確認された——レーザー加工とパンチ(金型)加工を1台で行う複合機で、別々の設備の略称の 偶然一致ではないと確定した。他システムとの関連も無いと明言された。ただしExcel台帳が今も現場で使われて いるかどうかは新實さんの担当範囲外で、製作部への確認が必要という回答に留まり、この点は未解決のまま 残る。(出典: 新實さん、2026-07-23ヒアリングシート回答D、docs/feedback/hearing/2026-07-23-niimi-hearing-sheet-D.md参照)