プロジェクト

全般

プロフィール

レビュー指摘 #12417 » BU20400P_仕様書.md

幸塚 和久, 2026-10-28 03:01 午後

 

プログラム仕様書 BU20400P(配車入力(増、傭)センター照会)

項目 内容
システムID BU
参考資料 ・現行ソース BU20400P.pl1
・現行の解析資料 BU0040_配車入力(自社増).xlsx(シート「資産一覧」「レコードフォーマット」「SRC_BU20400P」)
項目名の出典 送受信データ・マスターの項目は解析資料のシート「レコードフォーマット」の日本語名称

1. 概要

項目 内容
プログラムID BU20400P(手続き名:BU20400)
プログラム名称 配車入力(増、傭)センター照会
言語 PL/I(CICS コマンドレベル)
処理形態 オンライン(APPC 会話の相手側。画面なし)
動作環境 CIC1(センター側)
トランザクションID B04U(DDP の BU10400P から CONNECT PROCESS で起動される)
パターンID PPOC030P(1987/04/30)、業務 BUSHRE30
呼出し元 BU10400P(配車入力(自社増便、傭車増・定便)照会)
参照・更新ファイル VKUNKSH(運行指令マスター、指令書NO キー)参照
VHSHIRA(運行指令マスター、出発月日・発店・計画便コードの代替索引)参照
VKUNNOK(運行指令書NO管理マスター)参照・更新
呼出しモジュール LSO0020(チェックデジット生成、区分 '07'、タイプ 'G')、LSS0030A(応答コードの16進文字変換)

1.1 機能概要

DDP から受け取った照会データ(DPCEB04U)の内容で、次のどれかを行い、結果(CEDPBU04)を DDP に返す。

受信データ 処理
指令書NO あり 指令書NO で運行指令マスターを読み、指令書の内容を返す
指令書NO なし、計画便コード あり 出発月日・発店・計画便コードで運行指令マスター(代替索引)を読み、指令書の内容を返す
指令書NO・計画便コード とも なし(増便) 運行指令書NO管理マスターで新しい指令書NO を採番して返す
flowchart LR
    DDP[DDP BU10400P<br/>BU04] -- 照会データ 35バイト --> B04U[B04U<br/>本プログラム]
    B04U -- 照会結果 233/61バイト --> DDP
    B04U --> UNKSH[(VKUNKSH/VHSHIRA<br/>運行指令マスター)]
    B04U <--> UNNOK[(VKUNNOK<br/>運行指令書NO管理マスター)]

2. インターフェース

2.1 受信データ(35バイト)

トランザクションID(4)+予備(1)+ DPCEB04U(配車入力照会データ(増、傭)DDP=>、30バイト)。

項目ID 項目名 桁 本プログラムでの用途
UNQTERM 端末ID 4 使用しない
UNQDTID データ区分 1 使用しない
UNQSTYM 出発月日(MMDD) 4 代替索引のキー
UNQSTTC 出発店所 4 代替索引のキー
UNQSHIN 指令書NO 9 0 以外なら指令書NO で読む
UNQBINC 計画便コード 6 0 以外なら代替索引のキー

2.2 送信データ

トランザクションID('BU04')+エラーフラグ('0' 固定)+エラーコード(4)+ CEDPBU04(配車入力照会後、検証後データ(増、傭))。送信長は、指令書の照会が 233バイト、新規採番が 61バイト。送信前に全体を空にし、エラーコードは 'B000' を初期値とする。

本プログラムでセットする項目:

項目ID 項目名 編集元(運行指令マスター)
UNKDTKB データ区分 指令書の照会は 'D'、新規採番は 'N'
UNKNYUK 入力結果 '0'(指令書の照会のとき)
UNKSHNO 指令書NO 指令書NO(VBKBSRSH)。新規採番では採番した番号
UNKSHCN 指令書発行枚数 指令書発行枚数(VBKBSHIC)
UNKSHYM 指令月日(=出発年月日) 指令年月日(VBKBSRDD)の月日
UNKBNCD 計画便コード 計画便コード(VBKBKEIK)
UNKBNNM 便名(漢字) 便名(漢字)(VBKBKANG)のシフトコードを除いた16バイト
UNKKUBN 運行車区分 運行車区分(VBKBYKKN)
UNKKEIT 運行形態区分 運行形態(VBKBUKTI)
UNKINKB 入力区分 3.4
UNKSTID・UNKSTTC 発支社区分・発店 運行区間の実績の発店(VBKGJHSK・VBKGJHCD)。実績の発店コードが 0 なら計画の発店(VBKKKHSK・VBKKKHCD)
UNKSTYY~UNKSTMI 出発 年・月・日・時・分 始発の予定年月日時分(VBKYATIM)
UNKENID・UNKENTC 最終卸支社区分・最終卸店 運行区間の実績の着店(最終卸店)(VBKGJCSK・VBKGJCCD)。実績が 0 なら計画の着店(VBKKKCSK・VBKKKCCD)
UNKENYY~UNKENMI 最終卸店到着 年・月・日・時・分 最終卸店の予定年月日時分(VBKYBTIM)
UNKFUID・UNKFUTC 次運行発支社・次運行発店 支社区分(VBKYSSCD)・予定店コード(VBKYYTCD)
UNKCARS・UNKTONS・UNKSYAS 積載車番・積載車標屯・積載車種 始発の積載(VBKGSBN1・VBKGFYT1・VBKGSAS1)。車種が 'F' の場合はセミ頭・フル子・回送(VBKGSBN2・VBKGFYT2・VBKGSAS2)
UNKCART・UNKTONT・UNKSYAT トレーラ頭・コンテナ車 車番・標屯・車種 上の逆(通常はセミ頭・フル子・回送、車種が 'F' の場合は積載)
UNKDRIA・UNKDRIB 乗務員 A・B 始発の乗務員コード(A:VBKGJMIN、B:VBKGBJMI)
UNKNAMC 便名(カナ) 便名(カナ)(VBKBKANA)
UNKGHKB・UNKGHCD・UNKGHTC 直配区分・直配着地コード・直配着地最寄りの店所 直配区分(VBKBHIKB)・直配着地コード(VBKBHICD)・直配着地標準最終扱店所(VBKBHITC)
UNKINFO 連絡事項 連絡事項(漢字)(VBKBRENR)
UNKKBID・UNKTKCD 特定便区分・特定便NO 特定便区分(VBKBKBID)・特定便NO(VBKBTKCD)
UNKFISH 一車保険料(自社、鮮魚の場合) 一車保険料(自社鮮魚)(VBKBHOKN)
UNKSAIT 最低保障 使用形態(VBKGKITI)が 2 で定額傭車料(VBKGTGKU)が 0 以外なら 1、それ以外は 0(1990/03/07 追加)
UNKYOSK 傭車使用形態 自動車利用運送区分(VBKKSAGK)が '1' なら 4(差額的傭車)、それ以外は使用形態(VBKGKITI)(1992/03/03 変更)
UNKYSRY 定額傭車料 定額傭車料(VBKGTGKU)
UNKYOSH 一車保険料(傭車の場合) 一車保険料(傭車)(VBKGYOHO)
UNKYOSC 傭車会社コード 運行車区分が 2 のとき、フェリー会社・傭車コード(VBKGFYCD)
UNKFRCD フェリー、ライナーコード 運行車区分が 2 以外のとき、フェリー会社・傭車コード(VBKGFYCD)

2.3 ファイル

ファイル 内容 キー 読み方
VKUNKSH 運行指令マスター(UNKOSHIR) 指令書NO(9) 参照
VHSHIRA 運行指令マスター(UNKOSHIR)の代替索引 出発月日(4)+発店(4)+計画便コードの6桁目(1)+計画便コードの頭5桁(5)=14バイト 参照(EQUAL)
VKUNNOK 運行指令書NO管理マスター(UNKSNOKN) ID 'CD' + ファイルNO '0000001' 更新(READ UPDATE・REWRITE)

3. 処理仕様

3.1 処理の流れ

flowchart TD
    S([開始]) --> RCV[照会データを受信]
    RCV --> SEL{指令書NO・計画便コード}
    SEL -- 指令書NO あり --> R1[VKUNKSH を指令書NOで読む]
    SEL -- 計画便コード あり --> R2[VHSHIRA を代替キーで読む]
    SEL -- どちらもなし --> NEW[新しい指令書NOを採番 3.3]
    R1 --> RES{読込結果}
    R2 --> RES
    RES -- 正常 --> EDT[照会結果の編集 2.2・3.4]
    RES -- エラー --> ERR[入力区分にエラーをセット 3.2]
    EDT --> SND
    ERR --> SND
    NEW --> SND[照会結果を送信 INVITE]
    SND --> FIN[DDP の終了データを受信して終了]

3.2 指令書の照会

  1. 指令書NO(UNQSHIN)が 0 以外なら、運行指令マスター(VKUNKSH)を指令書NO で読む。
  2. 指令書NO が 0 で計画便コード(UNQBINC)が 0 以外なら、代替索引(VHSHIRA)を「出発月日+発店+計画便コードの6桁目+頭5桁」で読む。
  3. 読めた場合は、2.2 のとおり照会結果を編集する。
  4. 読めなかった場合は、指令書NO で読んだときは指令書NO を、計画便コードで読んだときは計画便コードを返し、入力区分を次のようにする。
読込結果 入力区分 エラーコード
レコードなし(NOTFND) 6 'B000'
重複キー(DUPKEY) 5 応答コード(EIBRCODE の先頭2バイト)を16進文字に変換した値
その他 7 同上

3.3 新しい指令書NO の採番(増便)

  1. 運行指令書NO管理マスター(VKUNNOK)のキー「'CD'+'0000001'」のレコードを更新モードで読む。
  2. 9番代(自社・傭車増便)の最終NO(VBUNLNO9)に 1 を足す。結果が 9000000 以下なら 9000000 にする。
  3. マスターを書き換える。
  4. 書き換えが正常なら、データ区分を 'N' にし、「最終NO(7桁)+'1'」にチェックデジットを付けて(LSO0020、区分 '07'、タイプ 'G')指令書NO(9桁)とする。チェックデジットの生成に失敗したら入力区分を 9 にする。
  5. 読込み・書換えに失敗したら入力区分を 7 にする。

3.4 入力区分の判定

運行指令マスターの入力区分(VBKBNURK)と運行車区分(VBKBYKKN)で決める。

運行車区分 マスターの入力区分 返す入力区分 DDP での意味
2(傭車) 0 0 入力可
2(傭車) 9 9 減便入力済み
2(傭車) 上記以外 1 入力済み
2 以外(自社) 0 3 自社定便の画面で入力
2 以外(自社) 9 9 減便入力済み
2 以外(自社) 上記以外 1 入力済み

3.5 送受信

  1. 照会結果のトランザクションID を 'BU04' にして、照会結果を送信し応答を待つ(SEND INVITE WAIT)。
  2. DDP からの終了データを受信して終了する。

4. 補足・留意事項

  1. エラーフラグは常に '0':読込みエラーやマスターの更新エラーでも、エラーフラグは '0' のまま返す(エラーフラグ '2' をセットする処理はコメントアウトされている)。エラーは入力区分で DDP に伝える。
  2. 新規採番のエラーコード:新規採番で失敗した場合(入力区分 7・9)、エラーコードは 'B000' のまま。
  3. 最終NOの上限:9番代の最終NO は 1 ずつ増えるだけで、9999999 を超えた場合の扱いはない。
  4. 代替索引の年:代替索引のキーは出発月日(年なし)のため、同じ月日・発店・計画便コードの指令書が複数年分あると重複キー(入力区分 5)になる。
  5. 入力年月日:入力年月日(UNKIYMD)は本プログラムではセットしない(DDP の BU10400P がセットする)。
  6. 送信長:新規採番の送信長は 61バイトで、照会結果の前半(指令書NO・入力区分など)だけを返す。
  7. 受信データの未使用項目:端末ID(UNQTERM)・データ区分(UNQDTID)は使わない。
(6-6/7)