プロジェクト

全般

プロフィール

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

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

 

プログラム仕様書 BU20600P(配車入力(傭、増)更新)

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

1. 概要

項目 内容
プログラムID BU20600P(手続き名:BU20600)
プログラム名称 配車入力(傭、増)更新
言語 PL/I(CICS コマンドレベル)
処理形態 オンライン(APPC 会話の相手側。画面なし)
動作環境 CIC1(センター側)
トランザクションID B06U(DDP の BU10600P から CONNECT PROCESS で起動される)
パターンID PPOC050P(1987/05/06、KSDS・UPDATE)、業務 BUSHRE30
呼出し元 BU10600P(配車入力 確認・更新)
呼出しモジュール LSS0030A(応答コードの16進文字変換)

使用ファイル:

ファイル 内容 用途
VKLNFRY ライナー料金マスター(NEW)(LINFERRC)/フェリー料金マスター(LINFERRB) 参照(ライナー・フェリーの料金の有無)
VKUNKSH 運行指令マスター(UNKOSHIR) 定便:更新(READ UPDATE・REWRITE)、増便:追加(WRITE)
VKTENMS 店所マスター(DDPTENMS) 参照(設定粁のキーにする所在地コード)
VKHCBKM 発着地粁程マスター(DDPHCBKM) 参照(設定粁)
VKKDMST 日付稼働テーブルマスター(DAYTBMST) 参照(曜日・休日区分)
VKCUSTM 顧客マスター 参照(トン単価)
VKCUYOS 顧客マスター(傭車料計算契約情報)(VCUYOSRY) 参照(トン単価)
VKYSRBS 傭車料基準マスター(YSRYBASE) 参照(トン単価)

1.1 機能概要

DDP から検証済みの配車データ(CEDPBU04)を受け取り、運行指令マスターを更新して、結果(CEDPBU06)を返す。

データ区分 内容 運行指令マスター
'D' 定便(傭車のみ)。既存の指令書に配車内容を書き込む 書き換え(REWRITE)
'N' 増便(自社・傭車)。BU20400P で採番した指令書を新しく作る。自社は 2~4枚目(枝番)も作る 追加(WRITE)
flowchart LR
    DDP[DDP BU10600P<br/>BU06] -- 検証済みデータ 419バイト --> B06U[B06U<br/>本プログラム]
    B06U -- 更新結果 54バイト --> DDP
    B06U --> UNKSH[(VKUNKSH<br/>運行指令マスター)]
    B06U -.参照.-> M[(料金・店所・粁程・日付稼働<br/>顧客・傭車料基準)]

2. インターフェース

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

トランザクションID(4)+エラーフラグ(1)+エラーコード(4)+ CEDPBU04(配車入力照会後、検証後データ(増、傭)、410バイト)。項目は BU20400P_仕様書.md の 2.2、BU10500P_仕様書.md の 3.3 を参照。

本プログラムで判定に使う主な項目:データ区分(UNKDTKB)、入力結果(UNKNYUK:'1' 入力、'9' 減便)、運行車区分(UNKKUBN)、指令書NO(UNKSHNO)、指令書発行枚数(UNKSHCN)。

2.2 送信データ(54バイト)

項目ID 項目名 内容
SESS_ERR_FLG エラーフラグ '0' 固定
SESS_ERR_CODE エラーコード マスターI/Oエラーのときの応答コード(16進文字)
SESS_TONTAN トン単価 傭車の使用形態が 2(トン当たり)のとき、取得した単価×100-300
DNKTERM・DNKIYMD・DNKSHNO DDP端末ID・入力年月日・指令書NO 受信データの値
DNKNYUK 入力結果 2.3
UNQSZTC 所属店 更新できたときの所属店の店所コード
UNQDTIM・UNQDONO・UNQDIN1~3 道路情報 0(道路情報マスターを読む処理は 2014/11/25 にコメントアウト)

2.3 入力結果(DNKNYUK)

値 意味 設定する条件
'1' 更新OK 入力結果 '1' のデータを更新できた
'9' 減便 入力結果 '9' のデータを更新できた
'4' 料金マスターに無し ライナー・フェリーの料金マスターがない(3.2)
'6' 指令書マスターに無し 定便で指令書がない
'7' すでに入力済 定便で指令書の入力区分が 0 以外
'8' マスターI/Oエラー 運行指令マスターの読込み・書込みエラー
空白 ― 受信データの入力結果が '1'・'9' 以外

3. 処理仕様

3.1 処理の流れ

flowchart TD
    S([開始]) --> RCV[検証済みデータを受信]
    RCV --> LF{運行車区分 03・04・05}
    LF -- はい --> LFC[料金マスターのチェック 3.2]
    LFC -- なし --> SND
    LF -- いいえ --> DK{データ区分}
    LFC -- あり --> DK
    DK -- D 定便 --> RD[指令書を更新モードで読む 3.3]
    RD -- エラー --> SND
    DK -- N 増便 --> KM[設定粁を求める 3.4]
    RD --> SET[1枚目の項目編集 3.5]
    KM --> SET
    SET --> UPD[定便:書換え 3.6<br/>増便:追加 3.7]
    UPD --> EDA[自社増便:2~4枚目を追加 3.8]
    EDA --> SND[結果を送信<br/>終了データを受信して終了]

3.2 ライナー・フェリー料金マスターのチェック

運行車区分が 03・04・05 の場合、キー「発店(4)+最終卸店(4)+運行車区分(1)」で VKLNFRY を読む。

結果 処理
ない 入力結果 '4' にして送信へ
運行車区分 05(フェリー)で、フェリー会社コード(1件目)が 0 入力結果 '4' にして送信へ
運行車区分 03・04(ライナー)で、ライナー会社コードが 0 入力結果 '4' にして送信へ

(傭車の携帯番号のチェックはコメントアウトされている。)

3.3 定便(データ区分 'D')の読込み

指令書NO で運行指令マスターを更新モードで読む。

結果 処理
正常で入力区分(VBKBNURK)が 0 3.5 へ
正常で入力区分が 0 以外 入力結果 '7'、ロックを解除して送信へ
レコードなし 入力結果 '6' にして送信へ
その他 入力結果 '8'、エラーコードに応答コードをセットして送信へ

3.4 増便(データ区分 'N')の設定粁

運行指令マスターの領域を空にしてから、次のように設定粁を求める。

  1. 発店の店所マスターの店所所在地コード(先頭5桁)を起点にする(ない場合は 00000)。
  2. 終点は、直配区分が 1 なら直配着地コード、それ以外は最終卸店の店所所在地コード(先頭5桁)。
  3. 発着地粁程マスターを「起点+終点」で読み、標準粁程(1件目)を設定粁(UNKSEKM)にする(ない場合は 0)。
  4. 2~発行枚数枚目も、次の指令書の発店・最終卸店で同様に求める(UNKNEKM)。

3.5 1枚目の項目編集

入力年月日(VBKINYYY~DDD)に受信データの入力年月日をセットする。

入力結果が '1'(入力)の場合

運行指令マスターの項目 セットする値
指令年月日(VBKBSRDD) 出発 年月日
特定便区分・特定便NO 特定便区分・特定便NO
運行区間 実績の発店(支社区分・発店コード)・着店(最終卸店) 発支社区分・発店、最終卸支社区分・最終卸店
実績 能屯 積載車標屯+トレーラ頭・コンテナ車 標屯
実績運行OW区分 乗務員A・Bがともにあれば '2'、どちらかだけなら '1'、ともになければ変更しない
乗務員コード(始発 A・B) 乗務員 A・B
車番(始発の積載、セミ頭・フル子・回送) 通常は積載に積載車番・標屯・車種、セミ頭・フル子・回送にトレーラーの車番・標屯・車種。積載車種が 'F' なら入れ替える(傭車の場合、標屯は入れ替えない)
予定年月日時分(始発) 出発 年月日時分
予定年月日時分(最終卸店) 最終卸店到着 年月日時分
最終着予定の予定年月日時分 最終卸店到着 年月日(時分 0)
連絡事項(漢字) 連絡事項
出発月日(2か所)・発支社(2か所)・発店所コード(3か所) 出発月日・発支社区分・発店
着支社(最終卸)(2か所)・到着月日(2か所) 最終卸支社区分・最終卸店到着月日
直配区分・直配着地コード・直配着地標準最終扱店所 直配区分・直配着地コード・直配着地最寄りの店所
入力区分 1

入力結果が '9'(減便)の場合:増定減便区分 3、入力区分 9 にする(入力結果 '9')。

それ以外:更新せずに送信へ(入力結果は空白)。

3.6 定便('D')の書換え

項目 セットする値
増定減便区分 減便なら 3、それ以外は 1
フェリー会社・傭車コード 傭車会社コード
使用形態・自動車利用運送区分 傭車使用形態が 4(差額的傭車)なら 3・'1'、それ以外は傭車使用形態・空白(1992/03/03 変更)
定額傭車料・一車保険料(傭車) 定額傭車料・一車保険料(傭車の場合)
最終着実績の店所コード・到着店コード(次運行発店) 最終卸店

運行指令マスターを書き換える。正常で減便でなければ、使用形態が 2 ならトン単価(3.9)を求め、所属店に所属店の店所コードをセットする。書換えエラーは入力結果 '8'。

3.7 増便('N')の追加(1枚目)

項目 セットする値
増定減便区分・入力区分・便数カウント区分 2・1・1
指令書NO・計画便コード 指令書NO・計画便コード
便名(漢字)・便名(カナ) 便名(漢字)(前後にシフトコードを付ける)・便名(カナ)
運行車区分・運行形態・指令書発行枚数 運行車区分・運行形態区分・指令書発行枚数
所属店(支社区分・店所コード)、計画の発店 発支社区分・発店
計画の着店(最終卸店) 最終卸支社区分・最終卸店
継続入力区分 指令書NO の8桁目(枝番)が発行枚数と同じなら 0、違えば 1
運行日の曜日・休日区分 日付稼働テーブルマスターを出発年月日で読み、曜日(日:0~金:5、土:6)、休日区分(平日 0、それ以外 1)
計画設定粁 設定粁(3.4)
計画所属始発年月日・計画出発年月日 出発年月日
計画便コード枝番(4か所)・計画便コード上位5桁(4か所) 計画便コードの6桁目・頭5桁

運行車区分ごとの項目:

運行車区分 項目
02(傭車) 3.6 と同じ傭車の項目。最終着予定の店所コード・最終着実績の店所コード・到着店コードは最終卸店。2枚目以降は作らない
02 以外(自社) 一車保険料(自社鮮魚)・フェリー会社コード。1枚だけの場合、最終着予定・実績の店所コードは最終着店(0 なら最終卸店)。2枚以上の場合は最終着店とし、予定店の支社区分・店所コード(実績も)に次運行発支社・次運行発店をセット。到着店コードは「予定店コード → 最終着予定の店所コード → 計画の着店」の順で 0 でないもの

運行形態が 1~3(乗継・ドッキング・マルニ運行)なら、2枚目以降に乗務員を引き継がない(3.8)。

運行指令マスターを追加する。正常なら、使用形態が 2 ならトン単価(3.9)を求め、所属店に所属店の店所コードをセットする。追加エラーは入力結果 '8'。

3.8 自社増便の 2~4枚目の追加

自社増便(運行車区分 02 以外)で正常に 1枚目を追加した場合、「発行枚数-1」枚分を追加する(追加エラーでも続ける)。1枚目の内容をもとに、次の項目をクリア・セットする。

項目 内容
クリアする項目 特定便、一車保険料(自社鮮魚)、実績の発店・着店、実績運行OW区分、乗務員A・B、最終着予定の年月日時分、最終着実績の店所コード、フェリー会社・傭車コード・定額傭車料・一車保険料(傭車)・使用形態、支社区分・実績店所コード、連絡事項、計画出発年月日、乗継店の到着年月日時分、直配
入力区分 0
指令書NO 次の運行の指令書NO
計画便コード 1枚目の頭5桁+指令書NO の8桁目(枝番)
便名(漢字)・(カナ)・運行形態 次の指令書の便名・運行形態区分
計画の発店・着店 次の指令書の発支社区分・発店、最終卸支社区分・最終卸店
予定年月日時分(始発)・指令年月日 次の指令書の出発年月日(時分 0)
予定年月日時分(最終卸店) 次の指令書の最終卸店到着年月日(時分 0)
最終着予定の店所コード・継続入力区分 最後の枚(枝番 = 発行枚数):次運行発店(0 なら最終卸店)、継続 0、予定店はクリア。それ以外:次運行発店、継続 1、予定店に次運行発支社・次運行発店
曜日・休日区分 次の指令書の出発年月日で日付稼働テーブルマスターを読む
計画設定粁・計画出発年月日 次の指令書の設定粁・1枚目の出発年月日
計画便コード枝番・上位5桁、出発月日、到着月日、発店所コード、発支社、着支社 次の指令書の値
到着店コード 1枚目と同じ決め方
実績運行OW区分・乗務員A・B それまでの枚に運行形態 1~3 がなければ 1枚目の値を引き継ぐ

3.9 トン単価の取得(TONTANKA_RTN)

  1. 顧客マスター(VKCUSTM)を傭車会社コードで読む。ある場合は、傭車料計算契約情報(VKCUYOS)を「傭車会社コード+連番(01~)」で順に読み、発店・着店・レートの一覧を作る。
  2. 発店(実績の発店、0 なら計画の発店)と着店(実績の着店、0 なら計画の着店)が一致するレートを単価とする。
  3. 顧客マスター・契約情報がない、または一致しない場合は、傭車料基準マスター(VKYSRBS)を発店で読み、着店所コードが一致する屯単価を単価とする。
  4. 単価が 0 でなければ、トン単価を「単価×100-300」にする。

3.10 集信ログ

一車保険料(鮮魚・傭車)があり入力結果 '1' の場合、集信R4(傭車、鮮魚保険データ:SSS435)のログを編集するが、TD キュー 'SYUD' への書込みはコメントアウトされており、出力されない。

3.11 送受信

結果(54バイト)を送信して応答を待ち(SEND INVITE WAIT)、DDP からの終了データを受信して終了する。


4. 補足・留意事項

  1. 入力結果 '5'・'A' は返さない:BU10600P には「更新済、次の枝番無し」('5')・「携帯番号無し?」('A')のメッセージがあるが、本プログラムは '5' を設定せず、'A' を設定する携帯番号のチェックはコメントアウトされている。
  2. エラーフラグは常に '0':マスターのエラーでもエラーフラグは '0' のまま('2' をセットする処理はコメントアウト)。
  3. 傭車の車番の入替え:積載車種が 'F' の場合、車番・車種は入れ替えるが、傭車(運行車区分 02)は標屯を入れ替えないため、車番と標屯の組合せがずれる。
  4. トン単価の発店・着店:顧客マスターがない場合、発店・着店をセットしないまま傭車料基準マスターを読む(前回の値または初期値のキーになる)。
  5. 増便で入力結果 '9':データ区分 'N' の場合、減便でも増定減便区分 2・入力区分 1 で上書きされる(自社増便は画面から減便を入力できないため、実際には発生しない)。
  6. 枝番の追加エラー:2~4枚目の追加でエラーになっても処理を続け、追加できた枚は残る。入力結果は '8' になる。
  7. 道路情報・集信ログ:道路情報マスターの読込み(2014/11/25)と集信ログの書込みはコメントアウトされている。
  8. 送信データのトランザクションID:送信データのトランザクションID はセットしていない(空白)。
(4-4/7)