レビュー指摘 #12417 » BU20600P_仕様書.md
プログラム仕様書 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')の設定粁
運行指令マスターの領域を空にしてから、次のように設定粁を求める。
- 発店の店所マスターの店所所在地コード(先頭5桁)を起点にする(ない場合は 00000)。
- 終点は、直配区分が 1 なら直配着地コード、それ以外は最終卸店の店所所在地コード(先頭5桁)。
- 発着地粁程マスターを「起点+終点」で読み、標準粁程(1件目)を設定粁(UNKSEKM)にする(ない場合は 0)。
- 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)
- 顧客マスター(VKCUSTM)を傭車会社コードで読む。ある場合は、傭車料計算契約情報(VKCUYOS)を「傭車会社コード+連番(01~)」で順に読み、発店・着店・レートの一覧を作る。
- 発店(実績の発店、0 なら計画の発店)と着店(実績の着店、0 なら計画の着店)が一致するレートを単価とする。
- 顧客マスター・契約情報がない、または一致しない場合は、傭車料基準マスター(VKYSRBS)を発店で読み、着店所コードが一致する屯単価を単価とする。
- 単価が 0 でなければ、トン単価を「単価×100-300」にする。
3.10 集信ログ
一車保険料(鮮魚・傭車)があり入力結果 '1' の場合、集信R4(傭車、鮮魚保険データ:SSS435)のログを編集するが、TD キュー 'SYUD' への書込みはコメントアウトされており、出力されない。
3.11 送受信
結果(54バイト)を送信して応答を待ち(SEND INVITE WAIT)、DDP からの終了データを受信して終了する。
4. 補足・留意事項
- 入力結果 '5'・'A' は返さない:BU10600P には「更新済、次の枝番無し」('5')・「携帯番号無し?」('A')のメッセージがあるが、本プログラムは '5' を設定せず、'A' を設定する携帯番号のチェックはコメントアウトされている。
- エラーフラグは常に '0':マスターのエラーでもエラーフラグは '0' のまま('2' をセットする処理はコメントアウト)。
- 傭車の車番の入替え:積載車種が 'F' の場合、車番・車種は入れ替えるが、傭車(運行車区分 02)は標屯を入れ替えないため、車番と標屯の組合せがずれる。
- トン単価の発店・着店:顧客マスターがない場合、発店・着店をセットしないまま傭車料基準マスターを読む(前回の値または初期値のキーになる)。
- 増便で入力結果 '9':データ区分 'N' の場合、減便でも増定減便区分 2・入力区分 1 で上書きされる(自社増便は画面から減便を入力できないため、実際には発生しない)。
- 枝番の追加エラー:2~4枚目の追加でエラーになっても処理を続け、追加できた枚は残る。入力結果は '8' になる。
- 道路情報・集信ログ:道路情報マスターの読込み(2014/11/25)と集信ログの書込みはコメントアウトされている。
- 送信データのトランザクションID:送信データのトランザクションID はセットしていない(空白)。