1. マスタとコード体系
受注・生産・出荷・請求・支払——どの業務フローも、その裏では「得意先」「品番」「工程」「単価」といった変わらない基礎データ(=マスタ)を参照して動いている。本ページでは、板倉製作所のシステムに登場する番号(コード)体系と、それを管理する29種類のマスタ、そしてマスタ保守の共通操作パターンを扱う。会社全体像や業務フローの全体地図は「0. 板倉製作所の業務全体像」を参照。
テーブル同士のつながりを図で見たいときは、16. データモデル(ER図)へ。このページが「どんなマスタがあるか」を扱うのに対し、あちらは「どのマスタがどうつながるか」を扱います。
1. コード体系(新人が最初に覚えるべき識別子)
1.1 品番系 / 1.2 設計・図面系 / 1.3 受注・生産管理系の番号 / 1.4 マスタ系コード / 1.5「区分」コード群(NMMP)
2. 主要マスタ一覧(29テーブル)
3. 新しい品番が立ち上がるときのマスタ整備チェーン
4. マスタ保守の共通操作パターン
5. 実データスナップショット
6. 特殊ケース
- 受注・生産・出荷・請求はすべて29種類のマスタ(得意先・品番・工程・単価等)を共通の土台に参照する。
- コード体系は品番だけで複数系統あり、受注品番と部品品番の混同が新人の最初のつまずき。
- 得意先コード20の実データ名は「デンソープレステック」であり「デンソー機工」ではない(要確認)。
1. コード体系 — 新人が最初に覚えるべき識別子
板倉製作所のシステムには多数の「番号」が存在し、それぞれ意味も発行元も異なる。以下は
pilot/app/public/data/screen-help.jsonのフィールド解説(実データの入力ガイド)と
各種spec、masters_registry.jsonの列定義から収集した主要コード体系。
1.1 品番系(もっとも重要、かつ最も混乱しやすい)
| コード | 何を識別するか | 形式 | 発行・維持元 | 出典 |
|---|---|---|---|---|
受注品番JHBNHN等 |
得意先に納める完成品の品番。得意先が指定した品番そのもの、または板倉が採番した品番。 | 可変長(最大25桁) | jhmp受注品番マスタ。新規登録はKSBS01(技術情報管理サブシステムMENUK1)。 |
itks01r.md |
部品品番BHHNBB等 |
受注品番を構成する個々の部品(プレス部品・材料単位)の品番。 | 可変長(最大25桁) | bhmp部品品番マスタ。 |
masters_map.md |
| 品番変換 (品番参照 TB⇔AS・SK) |
得意先ごとに異なる品番体系を相互変換するための対応表。例:デンソー(TB=トヨタ紡織/AS=アイシン/SK=?)側の品番と板倉社内品番の対応。デンソー機工からのEDIデータの品番をCVMP経由で社内品番へ変換する実例がある。 |
cvhnbn(変換前)→cvhn01/cvhn02(変換後、最大2件) |
cvmp品番変換マスタ(MENUM1 MSBS18/MSBS26相当)。新規受注時に得意先品番と社内品番の対応が取れていないと、EDI取込や照合処理が失敗する。 |
itjm63r.md / itjm64r.md |
旧品番WSHNKY |
品番改番(設計変更等)が起きたとき、旧品番のレコードを削除済(E)にする仕組み。 | 可変長 | KSBS01の登録処理内。 | itks01r.md |
注文品番WSHNBC |
外注先に発注するときに使う品番(社内品番と異なる場合がある)。 | 可変長 | MENUG1外製管理の発注入力。 | masters_map.md |
1.2 設計・図面系
| コード | 何を識別するか | 形式 | 発行元 | 出典 |
|---|---|---|---|---|
設計№SNBNHN→SNNOSK |
図面番号。品番1件につき1設計№が対応(snmp設計№マスタ、key=snbnhn品番)。西暦変換マスタyxmpのyxcdsk列を使って生成される西暦ベースの番号らしい推測。 |
8桁 | KSBS03「設計№登録」(MENUK1)。 | masters_map.md |
| レーザー№ ( WSLN01〜10、最大10件/品番) |
プレス部品のレーザー加工用管理番号。 | 最大8桁×最大10件 | bhmp部品品番マスタ内、またはKSBS14「レーザー№入力」。品番⇔レーザー№の相互照会がKSBS16/18にある。 |
masters_map.md |
1.3 受注・生産管理系の番号
| コード | 何を識別するか | 形式 | 備考 | 出典 |
|---|---|---|---|---|
受注№WSNOJU |
個々の受注(注文)を識別する番号。 | 数値 | 受注票(伝票)に印字される。 | masters_map.md |
| 伝票№ (発注伝票№ WSNOHA/客先伝票№WSNOTD、8桁・16桁) |
発注や得意先とのやりとりに紐づく伝票の番号。8桁版・16桁版の2種類のデータ形式が別テーブルとして存在する。 | 数値 | nkmpナンバー管理マスタ・jkmp受注管理マスタが年月+連番で伝票番号を発番する仕組みを持つ(jkyymm+jkrnbn→jknode)。 |
masters_map.md |
号口区分WSKUGO |
この品番が「号口」=量産品であることを示す区分コード。NMMPコード区分18で名称照会。 | コード | 号口とは「型式が確定し、継続的に生産される製品」のこと。試作と対をなす概念。 | screen-help.json |
試作№WHNOSS |
「試作」=量産開始前のお試し生産を識別する番号。 | 半角数字、最大8桁 | 号口と異なり、試作は一時的な生産(MENUT1試作管理サブシステム)。 | masters_map.md |
ロット№WSNORT/rnnort |
作業指示単位の製造ロットを識別する番号。 | 6桁 | rnmpロット№マスタが受注品番と紐づけて管理。材料管理№(W1NORT等)とは別物。 |
masters_map.md |
QRコードデータWSDATA |
現場の現物管理で読み取るQRコード。品番種別+単品品番+試作№+支給数を1本の文字列にエンコードしている。 | 49桁固定長文字列 | 支給品(アイシン)受入等で使用。 | pilot/spec (SMMP関連) |
1.4 マスタ系コード(得意先・仕入先・工程・材質等)
| コード | 何を識別するか | 形式 | 備考 | 出典 |
|---|---|---|---|---|
得意先コードTKCDTK |
販売先企業を識別する社内コード。 | 数値(6,0) | アイシン=3〜17の範囲、デンソー機工=20、等。tkmp得意先マスタが正本。 |
itc010r.md / itjm03r.md |
仕入先コードSICDSI |
仕入先・外注先を識別する社内コード。 | コード | simp仕入先マスタが正本。 |
masters_map.md |
工程コードKOCDKO |
生産工程(例:プレス、溶接、表面処理等)を識別するコード。 | コード | komp工程マスタが正本。工程係数(KOKEKO)という重み付け値も持つ。 |
masters_map.md |
材質コードZSZISI |
材料の材質を識別するコード。 | コード | zsmp材質マスタが正本(比重・単価も保持=材料費計算に直結)。 |
masters_map.md |
内外コードWSCDNG |
部品が「内製(自社製造)」か「外注(外製)」かを示す区分。NMMPコード区分30で照会。 | コード | 受注品番マスタjhmp・構成マスタksmp双方で使う横断的な区分。 |
screen-help.json |
担当班コードWSCDTH |
生産現場の担当班を識別。NMMPコード区分06で照会。 | 数値(3,0) | 得意先マスタtkmpのTKD101(営業担当区分)とは別物なので注意(似た名前で紛らわしい)。 |
screen-help.json |
1.5「区分」コード群 — NMMP(名称マスタ)に集約される汎用コード表
上記の「◯◯区分」(内容区分・表面処理区分・材料区分・板取区分・依頼区分・受注区分等)は、
個別のマスタテーブルを持たず、すべてnmmp名称マスタという1つの汎用コード表に
コード区分(NMKBNM)ごとにまとめて格納されている。これはAS/400のオフコンでよく
使われる「名称マスタパターン」であり、新しい区分値を増やすたびにテーブルを新設しなくてよい
代わりに、このシステム全体でnmmpの中身を見ないとコードの意味が分からない、という
属人化ポイントになっている。詳しくは§5 特殊ケースを参照。
2. 主要マスタ一覧(MENUM1が管理する29テーブル)
analysis/out/masters_map.mdによれば、AS/400上の29種類の名寄せされたマスタファイルが
CRUD(追加・変更・削除・照会)の対象になっている(26種は「トランザクション系」として意図的に
マスタ保守の対象外=D9 defer-loud)。移行後のシステムでは、1つの汎用エンジン+JSONレジストリ
(masters/engine.ts、analysis/out/masters_registry.json)がこの29テーブル
すべてを同じ操作パターンで処理する(docs/MIGRATION-MAP.md L1023-1024)。
| テーブル | 和名 | キー | 何を管理するか | 主な参照元業務 | 件数実データ | 出典 |
|---|---|---|---|---|---|---|
tkmp | 得意先マスタ | 得意先コード | 得意先の名称・住所・営業担当区分・請求関連の並び順 | 受注(MENUJ1)、出荷/請求(MENUS1)、経理(MENUR1) | 142 | masters_map.md |
tk1p | 得意先マスター従属1 | 得意先コード | 得意先ごとの請求締日・請求書発行区分(tkmpの拡張レコード) | 出荷/請求(MENUS1) | 140 | masters_map.md |
simp | 仕入先マスタ | 仕入先コード | 仕入先の名称・住所・支払条件・振込銀行口座・会計科目 | 外製管理(MENUG1)、経理(MENUR1) | 497 | masters_map.md |
bhmp | 部品品番マスタ | 部品品番 | プレス部品の材質・板厚・レーザー№(最大10)・単価・展開周長・在庫数 | 技術情報(MENUK1)、号口(MENUW1)、経理(MENUR1) | 10,096 | masters_map.md |
jhmp | 受注品番マスタ | 受注品番 | 完成品の得意先・型式・各種単価(決定/見積/号試)・受注残数・現在庫数 | 受注(MENUJ1)、技術情報(MENUK1) | 6,704 | masters_map.md |
jkmp | 受注管理マスタ | 年月 | 年月ごとの伝票番号発番カウンタ(連番・件数・消費税率) | 受注(MENUJ1) | 374 | masters_map.md |
ksmp | 構成マスタ | 受注品番+内外コード+部品品番 | 受注品番を構成する部品(BOM=部品表)の展開関係、構成数 | 技術情報(MENUK1)、号口/組付/試作 | 28,783 | masters_map.md |
snmp | 設計№マスタ | 品番 | 品番と設計№(図面番号)の対応 | 技術情報(MENUK1) | 38,206 | masters_map.md |
komp | 工程マスタ | 工程コード | 工程名・工程係数(工数見積等に使う重み) | 生産全般 | 38 | masters_map.md |
nmmp | 名称マスタ | 名称区分+コード1+コード2 | あらゆる「区分」コードの名称対応表(汎用コードブック、§1.5参照) | 全サブシステム横断 | 188 | masters_map.md |
cvmp | 品番変換マスタ | 変換前品番 | 得意先品番⇔社内品番の相互変換(TB⇔AS・SK) | 技術情報(MENUK1)、デンソーEDI取込 | 102 | masters_map.md |
tymp | 型種マスタ | 型種コード | 金型の型種の名称 | 金型管理(MENUZ1) | 121 | masters_map.md |
mdmp | 金型管理マスタ | 年度連番 | 金型の品番・得意先・保管場所・棚番・移動/廃棄日・最終納期 | 金型管理(MENUZ1) | 9,527 | masters_map.md |
tbmp | 棚番管理マスタ | 保管場所+棚番 | 倉庫の棚の位置・高さ・積載可能箱数・最終入庫日 | 金型管理(MENUZ1)、自動倉庫 | 250 | masters_map.md |
zsmp | 材質マスタ | 材質コード | 材質の比重・単価(材料費計算の元データ) | 技術情報(MENUK1)、材料管理(MENUZ1) | 419 | masters_map.md |
szmp | 使用材料マスタ | 受注品番+材質+板厚 | 受注品番ごとの使用材料・板厚・材料区分 | 材料管理(MENUZ1) | 7,732 | masters_map.md |
hzmp | 標準在庫マスタ | 単品品番 | 標準在庫数・現在庫・引当済数・得意先別の内示数(当月/翌月/翌々月) | 号口(MENUW1) | 352 | masters_map.md |
kbmp | 社内かんばんマスタ | 部品品番 | かんばん方式の入り数・許容端数などの設定 | 号口(MENUW1) | 126 | masters_map.md |
prmp | 製品単価マスタ | 得意先+品番+仕様+単価区分+適用日 | 得意先向け販売単価の履歴(適用日で切替)、外注費・材料費・加工費・表面処理費の内訳、寸法・重量・取り数などコスト積算根拠 | 出荷/請求(MENUS1)、経理(MENUR1) | 12,100 | masters_map.md |
sgmp | 作業者マスタ | 作業者コード | 作業者名・等級・所属班 | 号口/組付/試作の実績入力 | 184 | masters_map.md |
smmp | 支給品マスタ(アイシン) | 受注品番+単品品番 | アイシンからの支給部品の対応関係と終了区分 | 組付管理(MENUA1) | 24,092 | masters_map.md |
clmp | カレンダーマスタ | 年月日 | 稼働日/休日区分、曜日、番号 | 生産全般の納期計算 | 14,692 | masters_map.md |
dcmp | DNPTカレンダーマスタ | 年月日 | clmpと同様の日付マスタだが「オリジナル日程」「進捗度」列を追加で持つ | デンソー関連の号口処理(MENUD1/MENUW1、§5参照) | 11,688 | masters_map.md |
nkmp | ナンバー管理マスタ | 年月 | 年月ごとの連番・件数・伝票番号・消費税率の発番カウンタ | 経理(MENUR1)、各種伝票発行 | 197 | masters_map.md |
rnmp | ロット№マスタ | ロット№ | ロット№と受注品番の対応 | 号口/試作の作業指示 | 17,745 | masters_map.md |
yxmp | 西暦変換マスタ | 西暦年 | 和暦↔西暦変換に加え、設計№生成用のカウンタ列(yxcdsk)を保持 | 技術情報(MENUK1)の設計№発番 | 56 | masters_map.md |
bkmp | 金融機関マスタ | 金融機関コード+支店コード | 銀行名・支店名・手数料区分(振込手数料計算用) | 経理(MENUR1) | 162 | masters_map.md |
sqdp | CL実行許可設定DSP | CL名+DSP名 | 端末(DSP)単位でどのCLプログラムの実行を許可するかの設定 | システム管理(MENUX1)、全プログラムの入口ゲート | 65 | itks01r.md |
squp | CL実行許可設定USER | CL名+USER名 | ユーザー単位の同様の実行許可設定 | システム管理(MENUX1) | 182 | itks01r.md |
件数列は2026年7月時点でDBに投入済みの実データ(7年分のAS/400ダンプ、51テーブル/587,000行)に対するSELECT count(*)の結果。集計方法の詳細は§6 実データスナップショットを参照。
sqdp/squpは業務データではなくアクセス制御マスタ。全プログラムの入口で
ITSQ01Rという共通の認可ゲートプログラムが呼ばれ、端末(DSP)またはユーザーがこの2マスタに
登録されていないと「このPCからは実行できません」「現在のユーザーでは実行できません」というエラーで
弾かれる。板倉製作所のオフコンには、Webシステムのログイン画面のような仕組みはなく、端末そのものと
利用者IDの組み合わせで実行可否を制御している推測。
3. 新しい品番が立ち上がるときのマスタ整備チェーン
新しい得意先品番(新規または設計変更=設変品)を受注したとき、以下の順でマスタが整備される (KSBS01フローが起点。技術情報管理MENUK1が中心)。
- 受注品番データ登録 KSBS01(MENUK1)
jhmp受注品番マスタに新規行を作成。得意先コード・受注品名・担当班・型式・号口区分・ 指示形態・内容区分・表面処理区分・標準在庫数を入力。旧品番があれば削除済(E)マークを付ける。 同じ画面からF5キーで「構成登録」(ITKS10R)、F6キーで「担当班」 (LTNM06R)のサブ画面に飛べる=品番登録と構成登録が一体の作業として設計されている。担当: 技術情報管理(MENUK1) - 設計№登録 KSBS03(MENUK1)
図面番号(設計№)をsnmpに登録。西暦変換マスタyxmpのカウンタを使って 発番される推測。担当: 技術情報管理(MENUK1) - 構成(BOM)登録 KSBS01のF5、または独立のKSBS09/KSBS10
ksmp構成マスタに親品番(受注品番)→子品番(部品品番)の展開関係を登録。内外コード (内製/外注)も同時に確定する。担当: 技術情報管理(MENUK1) - 単価設定 SSBS04「製品単価入力」(MENUS1)
prmp製品単価マスタに得意先向け販売単価とコスト内訳(外注費・材料費・加工費・ 表面処理費)を登録。担当: 出荷管理(MENUS1) - 受注データ累積処理 ITKS06R(JSBS08から自動呼び出し)
実際に受注が確定するとjhmpの受注残数(JHJZSU)が加算される、という 後続の自動処理も存在する。担当: システム自動処理
jhmpが無ければ受注入力自体ができない、ksmpが
無ければ部品展開ができない)。itks01r.md
4. マスタ保守の共通操作パターン
MENUM1配下のマスタ保守画面は、全マスタで同じ4パターンの操作フローに統一されている
(AS/400のMNM{W,U,D,Q}nnという命名規則がこの4操作を表す。W=追加、U=変更、D=削除、Q=照会)。
pilot/spec/masters/convention.md
| 操作 | キー | 主な流れ |
|---|---|---|
| 追加 (W) | — | キー入力→重複チェック(「既に登録済みです」)→全項目入力(5ページ構成、新UIでは1フォームに統合)→バリデーション→確認メッセージ→書き込み |
| 変更 (U) | F7=前データ/F8=次データ | キー入力(F7/F8で前後のレコードへ移動可能)→既存データ読み込み(キー項目自体は編集不可)→編集→同じバリデーション→更新 |
| 削除 (D) | F23を2回 | キー入力→読み取り専用で内容表示→F23キーを2回押す二段階確認(「削除する場合はF23を押して下さい」→「確認した上で本当に削除する場合はF23を押して下さい」)→物理削除 |
| 照会 (Q) | — | 位置指定(先頭文字フィルタ等)→一覧表示→行クリックで詳細表示 |
この統一パターンのおかげで、新しいマスタ画面の使い方に迷ったときは「他のマスタと同じ 操作方法のはず」と考えてよい。
ksmp構成
データが残っている部品品番)を先に削除すると、他の画面が壊れる可能性がある(レガシーの仕様をそのまま
踏襲=D9 replicate)。「安全策が入っていないのは移行時のバグではなく、元からそういう仕様」という点を
新人は理解しておく必要がある。pilot/spec/masters/convention.md — no referential checks, D9 replicate
5. 実データスナップショット
本ページの記述の裏取りとして、実際に運用されていたAS/400の7年分のデータダンプ (51テーブル・約587,000行、PostgreSQLに投入済み)に対して直接クエリを実行し、 上の§2の表に件数列として反映した。ここではその中でも新人が最初に押さえておくと 役立つ実データの中身——得意先コードの実際の割り当て、工程コード全件、NMMPの区分一覧、 カレンダーの実カバー期間、yxmpの中身——を抜粋する。
5.1 得意先マスタ 実データ(コード順・上位15件)
| 得意先コード | 得意先名(漢字) | 得意先名(カナ) |
|---|---|---|
| 1 | 板倉製作所 社内用 | イタクラセイサクショ |
| 2 | サイセイサク | サイセイサク |
| 8 | 株式会社アイシン 安城 | カ)アイシン アンジョウ |
| 9 | 株式会社アイシン 車体生技部 | (カブ)アイシン セイギセンター |
| 10 | 株式会社 アイシン | (カブ)アイシン |
| 11 | アイシン機工 株式会社 | アイシンキコウ (カブ) |
| 12 | 株式会社 アイシン 新豊工場 | (カブ)アイシン シントヨ |
| 13 | 株式会社 アイシン 西尾工場 | (カブ)アイシン ニシオ |
| 14 | 株式会社 アイシン 新川工場 | (カブ)アイシン シンカワ |
| 15 | 株式会社 アイシン 藤岡工場 | アイシン フジオカ |
| 16 | 株式会社 アイシン 試作工場 | (カブ)アイシン カリヤシサク |
| 17 | 株式会社 アイシン 衣浦工場 | (カブ)アイシン キヌウラコウジョウ |
| 18 | AKKーM株式会社 | エイ・ケイ・ケイ・エム(カブ) |
| 19 | アイシン機工 株式会社 | アイシンキコウ (カブ) |
| 20 | 株式会社 デンソープレステック | (カブ)デンソープレステック |
- アイシン系コード範囲 — §1.4は「アイシン=3〜17(一部除外あり)」としているが、実データでは コード3〜7に該当する得意先マスタ行は1件も存在しない。実際にアイシン系企業が登録されているのは 8〜17の10コードのみで、「一部除外」というより「3〜7は最初から未使用」という状態に近い。
- 「アイシン機工」の重複登録 — コード11とコード19の両方に、まったく同じ名称「アイシン機工 株式会社」 が登録されている(住所等の追加項目は今回未確認)。名寄せされていない重複マスタ行の実例。
- デンソー機工 = コード20? — 0. 全体像ページは得意先コード20を「デンソー(デンソー機工/ デンソープレステック)」としているが、tkmpをテキスト検索した限り、コード20の実データは 「株式会社 デンソープレステック」のみで、「デンソー機工」という名称の得意先マスタ行は 存在しない("機工"で検索してヒットするのはコード11/19のアイシン機工とコード110の 外山精機工業のみ)。デンソー機工とのEDIデータ処理(ITJM63R/ITJM64R)はtkmpのマスタ行を経由せず 別の識別子で処理されている可能性がある推測。
- トヨタ紡織の得意先コード — 0. 全体像ページのトヨタ紡織の得意先コード欄は「—」(未記載)だが、 実データでは4000(トヨタ紡織精工)・5000(トヨタ紡織)・5001(トヨタ紡織広瀬)の3コードが 存在する。アイシン・デンソー系が2桁の若いコードなのに対し、トヨタ紡織系だけ4桁の飛び番号になっている のも実データで初めて分かる特徴。
5.2 工程コード全38件(komp)
§1.4で「工程マスタが正本」とだけ紹介したkompは、実データではわずか38行しかなく、
新人が現場の工程名を一通り覚えるのに十分小さい。全件を掲載する。
| 工程コード | 工程名 | 工程略名 |
|---|---|---|
| 0 | ブランクアナヌキテーキン | — |
| 1 | (名称未設定) | — |
| 10 | 板取り | 板取り |
| 20 | ブランク | ブランク |
| 30 | 絞り | 絞り |
| 40 | 成形 | 成形 |
| 41 | 面押し | 面押し |
| 42 | 直角出し | 直角出し |
| 50 | 曲げ | 曲げ |
| 60 | 切り起こし | 切起 |
| 70 | 打ち出し | 打出 |
| 80 | ヘミング曲げ | ヘミング |
| 90 | バーリング | バーリング |
| 100 | 孔打ち抜き | 孔抜き |
| 110 | トリム | トリム |
| 120 | 切り離し | 切離 |
| 130 | 歪み取り | 歪み取り |
| 140 | 切削 | 切削 |
| 150 | ネジ切り | ネジ切り |
| 152 | (名称未設定) | — |
| 152重複 | AESTH6524-BC | — |
| 160 | テーキン | テーキン |
| 170 | 穴あけ | 穴あけ |
| 180 | 巾出し | 巾出し |
| 190 | 面取り | 面取り |
| 200 | 角孔あけ | 角孔あけ |
| 202 | カチオン(20UMイジョウ) | — |
| 205 | (名称未設定) | — |
| 210 | 平面出し | 平面出し |
| 220 | 溶接 | 溶接 |
| 230 | リーマ加工 | リーマ加工 |
| 240 | 研磨 | 研磨 |
| 700 | 仕上げ | 仕上 |
| 701 | 外形切り | 外形切り |
| 800 | 組付 | 組付 |
| 810 | 表面処理 | 表面処理 |
| 900 | 検査 | 検査 |
| 910 | 出荷 | 出荷 |
- 工程係数(kokeko)が全38行とも0.00 — §1.4は工程マスタについて「工程係数(KOKEKO)という
重み付け値も持つ」と紹介しているが、実データでは
kokeko列の値は例外なくすべて0.00 だった。工数見積に使われる重みという触れ込みだが、少なくとも現行データでは実質未使用(あるいは 工数見積は別の場所・別の方法で行われている)と考えられる推測。 - 工程コード152が2行重複 — 同じキー「152」で「(名称未設定)」の行と「AESTH6524-BC」という 名称の行が両方存在する。後者は工程名というより品番のような文字列で、レガシーデータのゴミ行の可能性が 高い。
5.3 nmmp「区分」コード群の内訳
nmmpには空白区分を含め36種類の名称区分(nmkbnm)が実在した。
§1.5で例示した「区分13=支払種別」を実データで確認すると、以下の5件が登録されている。
| 区分 | コード2 | 名称 |
|---|---|---|
| 13 | 1 | 外注 |
| 13 | 2 | 材料 |
| 13 | 3 | 工具 |
| 13 | 4 | 設備 |
| 13 | 9 | その他 |
ほかにも§1.4で言及した区分が実データで確認できる。区分06(担当班コード)には斉藤工機・ 製作部組・品質課・営業課のほか、大連本精機械有限公司・大連佐久機械貿易有限公司という 海外の協力会社まで含まれていた(15件)。区分18(号口区分)は「試作=1」「号口=9」の 2件のみ。区分30(内外コード)は「社内=1」「外製品=2」「S/A架空構成=8」「支給品=9」 「SUBASSY=10」の5件で、§1.4の内外コードの説明と一致する。
5.4 カレンダーマスタのカバー期間
| テーブル | 件数 | 最古の日付 | 最新の日付 |
|---|---|---|---|
clmp(カレンダーマスタ) | 14,692日 | 1988-01-03 | 2028-03-31 |
dcmp(DNPTカレンダーマスタ) | 11,688日 | 1996-04-01 | 2028-03-31 |
clmpは1988年(昭和63年)分から先々2028年3月末まで、約40年分の稼働日/休日区分を
あらかじめ持っている。dcmpは1996年4月開始で、デンソー案件(DNPT)が始まった時期の
推測とおおむね符合する。どちらも2028年3月末で終わっており、カレンダーの補充運用が今後必要になる
ことが実データからも分かる。
5.5 yxmp(西暦変換マスタ)の中身
yxmpは2018年〜2073年の56行を持ち、yxcdsk(設計№用)列には
25種類の1文字コード(W, X, Y, Z, A, B, …)が年ごとに1つずつ、循環する形で割り当てられている
(2018年=W、2019年=X、2020年=Y、2021年=Z、2022年=A、…)。これは§1.2および§6「特殊ケース」で
「推測」としていた「yxcdskは設計№生成用の採番カウンタとして使われている」という仮説と
整合する実データ——1年に1文字を割り当てるローテーション方式は、設計№の中に西暦の代わりに
埋め込む1桁コードとして自然な設計だからである。
5.6 正体が判明した補助テーブル13本 — データ考古学ブリーフより
§2の29マスタとは別に、以前は用途不明のまま存在していた中規模テーブルが13本あった。今回の調査(schema.sql列コメント→edges.csv読み書きプログラム→specs→実データ)でそれぞれの正体を特定した。各テーブルの詳細は所属ページを参照。
| テーブル | 和名 | 正体 | 行数 | 現役 / 停止時期 |
|---|---|---|---|---|
sjlp | 製造指示データ指示書発行ログ | 試作作業指示書の発行監査ログ(試作) | 37,290 | 現役(〜2026-06) |
zkdp | 試作品在庫データ | 試作品専用在庫マスタ(試作) | 567 | 現役(〜2026-06) |
kmdp | 組付品まとめ指示データ | トヨタ紡織専用「まとめ指示」のJUDP双子(試作/組付境界) | 378 | データ停止 2022-08 |
gddp | 号口組付品出来高データ | 号口ロットの完成実績ログ(号口生産) | 2,571 | 現役(〜2026-06) |
sddp | S/A品出来高データ | S/A品版gddp(号口生産) | 426 | 現役(〜2026-06) |
gkdp | 号口組付品使用部品データ | 号口ロットの部品消費トレース(号口生産) | 19 | データ停止 2021-04 |
njdp | かんばん品内示データ | かんばん品月次内示(号口生産) | 1,191 | データ停止 2020-03 |
juxp1 | 号口組付用一時データ | 工程内計画表バッチの使い捨てスクラッチ(号口生産) | 191 | 使い捨て(直近実行は2026-06〜09予定分) |
ktmp | 構成ツリーマスタ | 担当班変更Excel往復専用のBOM木構造(号口生産) | 942 | データ停止 2014-10 |
judps8 | 受注データTO PC FOR紡織資料作成用 | トヨタ紡織向け管理表Excel連携ステージング(ITJM40R、受注管理) | 520 | 現役ステージング(直近実行分のみ保持、〜2026-08予定分) |
judpr8 | 受注データTO PC FOR JZBS14-ITJM02R | 受注残一覧表Excel連携ステージング(受注管理) | 246 | 現役ステージング(直近実行分のみ保持、〜2026-09予定分) |
judpr9 | 受注データTO PC FOR SSBS62-ITS001R | 範囲指定請求書Excel連携ステージング(請求) | 165 | 現役ステージング(実機は使用日数363日で日常稼働中。この165行は当方のテスト実行による副産物で実機データではない、詳細は本節末尾) |
bjdpq3 | 部品状況ファイル | 引継ぎ処理(ITSS06R)専用のワークキュー。1行は最大10回の発行サイクルで自動的に刈り取られる使い捨て設計(受注管理・組付指示引継ぎ) | 17 | AS/400ダンプにBJDPQ3は含まれていない。現在の17行は全て当方のpilotテスト実行が書いたもの——実機の状況を示す資料として使ってはならない(訂正参照) |
(出典: データ考古学ブリーフ§1-2)
judp*系テーブルの行数・日付だけで実機の稼働状況を語ってはならないjudp*(受注データTO PC)は約30本のファミリー(judpp1..9, judpq5, judpr1/5/7/8/9, judps1..9, judpt2, judpdk 等)があり、各テーブルが1つの下流Excelマクロに1対1で紐づくステージング群。共通パターンとして、呼び出し元CLが実行前にCLRPFMで全消去し、対象プログラムが最初に品番'EXCEPT'のセンチネル行を無条件で1行書いてから本データを書く(Excel側が空ファイルで失敗しないためのガード)。ここまでは以前から分かっていた話——「行数と鮮度は直近何回目の実行結果かを表すだけで、蓄積ログではない」。
ただし2026-07-29のヒアリングで、もう1段深い問題が判明した。本リポジトリのjudp*系テーブルの中身は、そもそもAS/400のダンプデータではない。顧客から受領した7年分ダンプ(bin/AS_DATA-*.zip、63ファイル)にはjudp*ステージング系は1本も含まれておらず、これらのテーブルに書き込むコードは各テーブルにつき移植版バッチ/帳票エンジン1箇所のみ(TRUNCATE→再構築)。つまり行に入っている内容は、当方が移植版エンジンを実DBに対して走らせたテストの副産物であり、AS/400実機のデータを反映したものではない(具体例はjudpr9、下記参照)。
したがって、これらのテーブルの行数・更新日付からAS/400実機の稼働状況(現役/停止の別)を推測することはできない。0件は「顧客が使っていない」ではなく「当方がまだそのエンジンを実DBに対して走らせていない」ことを示すにすぎず、日付が古いことも「AS/400での最終利用日」ではなく「当方が最後にテストを走らせた日」を示すにすぎない。同ファミリーのjudpr1/judpr5/judpr7/judps2/judps9が0件だったことも、AS/400側で使われていない証拠にはならない——単に当方がまだそのエンジンを実DBに対して走らせていないだけであり、DEAD-EMPTYという評価自体が誤りだった。
judpr9(下記)は、この原則を破って「データが古く固定されて見える=AS/400側が止まった」と誤読した実例。(出典: 新實さん、2026-07-29ヒアリングシート回答、docs/feedback/hearing/2026-07-29-niimi-hearing-sheet.md参照 / データ考古学ブリーフ§1補足, §2.12〜2.14)
judpr9(請求書・範囲指定Excel連携)— 実データはEXCEPTセンチネルを除き全て2019年3月・得意先20のみに固定されている。ITS001R/SSBS62(請求書・範囲指定 FOR EXCEL)による請求書発行は、①2019年3月を最後に使われなくなった(別の請求フロー、例えばセッション34で発見したMENUR1経理管理サブシステムに統合された可能性)②今も定期的に使われているが、このDBスナップショットの取得タイミングがたまたま2019年3月時点の残骸を拾っただけ、のどちらか?
【ヒアリングで判明】 ②側が確定した——新實さん: 「ITS001R(範囲指定 FOR EXCEL)の請求書は現在使用中です。2026年 6月分の請求書もそれを使用しました。」ITS001R自体は今も定期的に現役稼働している。一方でjudpr9のデータが2019年3月・得意先20時点で固定して見える理由自体は依然不明で、新たな謎として残る——プログラムが現役なのに、なぜこのステージング テーブルだけ2019年3月以降更新されていないように見えるのか、追加調査が必要。(出典: 新實さん、2026-07-22ヒアリング シート回答、hearing.html F4、docs/feedback/hearing/2026-07-22-niimi-hearing-sheet-F.md参照 / データ考古学ブリーフ§3-5)
【2026-07-29ヒアリングで完全解決】 「謎」自体が存在しなかった。新實さんの添付(AS/400実機でのDSPFD FILE(JUDPR9) LIBRARY(ITLIBD)スクリーンショット)により、実機のJUDPR9は 最終変更日26/07/21・最終使用日26/07/23・使用日数カウント363と、日常的に稼働していることが確認できた (現在の19レコードはITS001Rが実行のたびにCLRPFM→再書き込みする典型的なステージングファイルの姿)。 一方、本リポジトリのjudpr9はそもそもAS/400のダンプ由来ですらなかった——顧客受領の7年分ダンプ (bin/AS_DATA-20260630T064204Z-3-001.zip、63ファイル)にJUDPR9は含まれておらず、 本リポジトリでこのテーブルに書き込むコードは移植版ITS001RのinvoiceRange()(pilot/app/src/menus1/invoices.ts:209-244、TRUNCATE→再構築)だけ。中身はinvoiceRange()を実DBに対して走らせたテスト実行の副産物で、回帰specpilot/app/test/e2e/specs/shukka/its001-null-char-crash.e2e.ts:33-41がORDER BY無しのLIMIT 1で拾った得意先・年月がたまたま20・2019年3月だった (推測実行回の特定まではできない——記録に残るのは commit154dd804(ITS001RのNULL CHAR(2)クラッシュ修正)のライブ検証だが、 同specは実データが同じなら常に同じ組を返す決定的なクエリなので、以降の再実行でも 全く同じ結果になる。確実なのは「当方のテスト実行が書いた」ところまで) (行数165も、invoiceRange()の出力形状='EXCEPT'センチネル1行+明細164行と一致)。 「2019年3月で止まっている」ように見えたのは実機の稼働状況ではなく、当方が自分で作ったテスト出力を 実機データと取り違えていただけであり、謎は最初から存在しなかった。 (出典: 新實さん、2026-07-29ヒアリングシート回答、docs/feedback/hearing/2026-07-29-niimi-hearing-sheet.md参照)- bjdpq3(引継ぎ専用ワークキュー)— 【訂正】この項目は、そもそも顧客に尋ねるべき質問ではなかった。
当初は「17行中16行が無条件センチネル'EXCEPT'、残り1行がCATEST-*というテスト文字列」と記述し、CATEST-*の行だけをテスト汚染の候補として扱っていた。これは当方の誤りである。17行すべてが当方のpilotテスト実行の出力であり、AS/400由来のデータは1行も含まれていない。根拠は3点:- AS/400ダンプ(
bin/AS_DATA、63ファイル)にBJDPQ3が存在しない(BJDPQ2・BJDPQ4も同様)。移行元データが最初から無い。 - 17行すべてが端末名
Q3NMDP='TESTJ'・日付20260630・時刻150700で完全に同一。pilot/app/test/menuj1/carryoverAlloc.test.ts:35のconst DSP = "TESTJOB "が、char(5)のq3nmdpに切り詰められてTESTJになったもの。 CATEST-SUCC/CATEST-NOSTOCKは同テストのフィクスチャ文字列。書き込み元はpilot/app/src/menuj1/carryoverAlloc.ts:73,392のINSERT INTO bjdpq3。
bjdpq3・bjdpq2・bjdpq4の内容から実機の運用実態を推論してはならない。
なおhearing.html G5で得た「bjdpq3は組付部品の引継ぎ&引当処理に使う中継ファイルで、処理完了後に内容を保持する必要はない」という用途・ライフサイクルの説明そのものは有効(設変で一部部品だけ新部品に変わる際、設変前の注文に引き当たっている部品を設変後の注文へスライドさせる処理に使う)。無効になったのは「現在の17行の中身」に関する当方の解釈だけである。(出典: 用途は新實さん 2026-07-22ヒアリング / 訂正はダンプ内容・テストコード・実データの突合による) - AS/400ダンプ(
集計に使ったSQL
-- §2 表の件数列(29マスタ全件、抜粋)
SELECT count(*) FROM tkmp; SELECT count(*) FROM tk1p; SELECT count(*) FROM simp;
SELECT count(*) FROM bhmp; SELECT count(*) FROM jhmp; SELECT count(*) FROM jkmp;
SELECT count(*) FROM ksmp; SELECT count(*) FROM snmp; SELECT count(*) FROM komp;
SELECT count(*) FROM nmmp; SELECT count(*) FROM cvmp; SELECT count(*) FROM tymp;
SELECT count(*) FROM mdmp; SELECT count(*) FROM tbmp; SELECT count(*) FROM zsmp;
SELECT count(*) FROM szmp; SELECT count(*) FROM hzmp; SELECT count(*) FROM kbmp;
SELECT count(*) FROM prmp; SELECT count(*) FROM sgmp; SELECT count(*) FROM smmp;
SELECT count(*) FROM clmp; SELECT count(*) FROM dcmp; SELECT count(*) FROM nkmp;
SELECT count(*) FROM rnmp; SELECT count(*) FROM yxmp; SELECT count(*) FROM bkmp;
SELECT count(*) FROM sqdp; SELECT count(*) FROM squp;
-- §5.1 得意先 上位15件
SELECT tkcdtk, tknmkn, tknmkj FROM tkmp ORDER BY tkcdtk ASC LIMIT 15;
-- アイシン範囲の裏取り
SELECT tkcdtk FROM tkmp WHERE tkcdtk BETWEEN 3 AND 17 ORDER BY tkcdtk;
-- デンソー・機工系の名称検索
SELECT tkcdtk, tknmkn, tknmkj FROM tkmp WHERE tknmkj LIKE '%デンソー%' OR tknmkn LIKE '%デンソー%';
SELECT tkcdtk, tknmkn, tknmkj FROM tkmp WHERE tknmkj LIKE '%機工%';
-- トヨタ紡織系の名称検索
SELECT tkcdtk, tknmkn, tknmkj FROM tkmp WHERE tknmkj LIKE '%トヨタ紡織%' OR tknmkn LIKE '%ホウショク%';
-- §5.2 工程コード全件
SELECT kocdko, konmko, kormko, kokeko FROM komp ORDER BY kocdko;
SELECT DISTINCT kokeko FROM komp;
-- §5.3 nmmp 区分一覧・区分13/06/18/30の中身
SELECT nmkbnm, count(*) FROM nmmp GROUP BY nmkbnm ORDER BY nmkbnm;
SELECT nmkbnm, nmcdnx, nmcdnd, nm06nm, nm42nm FROM nmmp WHERE nmkbnm = '13' ORDER BY nmcdnx, nmcdnd;
SELECT nmkbnm, nmcdnx, nmcdnd, nm42nm FROM nmmp WHERE nmkbnm IN ('06','18','30') ORDER BY nmkbnm, nmcdnx, nmcdnd;
-- §5.4 カレンダーカバー期間
SELECT MIN(clymd), MAX(clymd), count(*) FROM clmp;
SELECT MIN(dcymd), MAX(dcymd), count(*) FROM dcmp;
-- §5.5 yxmpの中身
SELECT * FROM yxmp ORDER BY yxyyyy LIMIT 5;
SELECT MIN(yxyyyy), MAX(yxyyyy), count(*), count(DISTINCT yxcdsk) FROM yxmp;
-- §5.6 正体判明13テーブル(行数・鮮度)
SELECT count(*) FROM sjlp; SELECT count(*) FROM zkdp; SELECT count(*) FROM kmdp;
SELECT count(*) FROM gddp; SELECT count(*) FROM sddp; SELECT count(*) FROM gkdp;
SELECT count(*) FROM njdp; SELECT count(*) FROM juxp1; SELECT count(*) FROM ktmp;
SELECT count(*) FROM judps8; SELECT count(*) FROM judpr8; SELECT count(*) FROM judpr9;
SELECT count(*) FROM bjdpq3;
-- bjdpq3の17行は当方のテスト出力(端末TESTJ・同一時刻)。実機の状況は示さない:
SELECT q3nmdp, q3date, q3time, count(*) FROM bjdpq3 GROUP BY 1,2,3;
SELECT count(*) FROM judpr1; SELECT count(*) FROM judpr5; SELECT count(*) FROM judpr7;
SELECT count(*) FROM judps2; SELECT count(*) FROM judps9; -- 0件(実機の稼働状況は示さない、鉄則参照)
6. 特殊ケース
nmmpという
1つの名称マスタにまとめて格納されている(キーは名称区分+コード1+コード2の複合キー)。これはAS/400
開発でよく見られる「コードブックパターン」だが、副作用として「区分の値が何を意味するか」を知るには
NMMPの中身を見に行くしかないという属人化リスクを生んでいる。実際、WSKUDE(伝票区分)
フィールドについては「コード体系(特に3桁目)が未確定のため一覧はありません。値の意味は担当者に確認
してください。」という注記が入力ガイドに残っているほど、一部のコードの意味は現時点でも解明されていない。
pilot/app/public/data/screen-help.json例外: 材料区分(NMMP区分10、
BHKUZI)だけは古い作業手順書アーカイブで値の意味が解明できました
—— 詳細は engineering.html §11 参照。
yxmp西暦変換マスタは名前の通り和暦↔西暦の変換テーブルだが、yxcdsk(「設計№用」と
ラベル付けされた列)を持つことから、単なる暦変換だけでなく設計№の採番カウンタとしても使われている
と推測される推測(列名とsnmp設計№マスタとの関連から)。
1つのマスタが表向きの用途(暦変換)と裏の用途(採番)を両方持っている例。
masters_map.md
clmp(カレンダーマスタ)とdcmp(DNPTカレンダーマスタ)はほぼ同じ列構成
(年月日・曜日・番号)を持つが、dcmpだけが追加で「オリジナル日程」「進捗度」という列を持つ。
カレンダー名に含まれる「DNPT」は、デンソー関連の号口処理サブシステムMENUD1(=「DNPT
号口処理」サブシステム、到達不能メニュー)と綴りが一致することから、デンソー案件専用の生産進捗管理
カレンダーである可能性が高い推測(dcmpという別テーブル
が独立して存在する理由は、通常のカレンダーclmpに「進捗度」のような案件固有の状態を混ぜたく
なかったためと推測される)。
masters_map.md
sqdp(CL実行許可設定DSP=端末
単位)とsqup(CL実行許可設定USER=ユーザー単位)という2種類の許可マスタが両方存在し、
全プログラムの入口ITSQ01Rが両方をチェックする。「このPCからは実行できません」という
メッセージは、使っている端末(PC/オフコン端末)そのものが許可されていない場合に出る(ユーザーが正しくても
弾かれる)。この二重チェックの仕組みは、特定の重要な処理(マスタ保守や経理系)を特定の物理端末からしか
実行できないようにするという運用上の安全策と考えられる推測。
itks01r.md「Auth gate」