レビュー指摘 #12417 » BU20400P_仕様書.md
プログラム仕様書 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 指令書の照会
- 指令書NO(UNQSHIN)が 0 以外なら、運行指令マスター(VKUNKSH)を指令書NO で読む。
- 指令書NO が 0 で計画便コード(UNQBINC)が 0 以外なら、代替索引(VHSHIRA)を「出発月日+発店+計画便コードの6桁目+頭5桁」で読む。
- 読めた場合は、2.2 のとおり照会結果を編集する。
- 読めなかった場合は、指令書NO で読んだときは指令書NO を、計画便コードで読んだときは計画便コードを返し、入力区分を次のようにする。
| 読込結果 | 入力区分 | エラーコード |
|---|---|---|
| レコードなし(NOTFND) | 6 | 'B000' |
| 重複キー(DUPKEY) | 5 | 応答コード(EIBRCODE の先頭2バイト)を16進文字に変換した値 |
| その他 | 7 | 同上 |
3.3 新しい指令書NO の採番(増便)
- 運行指令書NO管理マスター(VKUNNOK)のキー「'CD'+'0000001'」のレコードを更新モードで読む。
- 9番代(自社・傭車増便)の最終NO(VBUNLNO9)に 1 を足す。結果が 9000000 以下なら 9000000 にする。
- マスターを書き換える。
- 書き換えが正常なら、データ区分を 'N' にし、「最終NO(7桁)+'1'」にチェックデジットを付けて(LSO0020、区分 '07'、タイプ 'G')指令書NO(9桁)とする。チェックデジットの生成に失敗したら入力区分を 9 にする。
- 読込み・書換えに失敗したら入力区分を 7 にする。
3.4 入力区分の判定
運行指令マスターの入力区分(VBKBNURK)と運行車区分(VBKBYKKN)で決める。
| 運行車区分 | マスターの入力区分 | 返す入力区分 | DDP での意味 |
|---|---|---|---|
| 2(傭車) | 0 | 0 | 入力可 |
| 2(傭車) | 9 | 9 | 減便入力済み |
| 2(傭車) | 上記以外 | 1 | 入力済み |
| 2 以外(自社) | 0 | 3 | 自社定便の画面で入力 |
| 2 以外(自社) | 9 | 9 | 減便入力済み |
| 2 以外(自社) | 上記以外 | 1 | 入力済み |
3.5 送受信
- 照会結果のトランザクションID を 'BU04' にして、照会結果を送信し応答を待つ(SEND INVITE WAIT)。
- DDP からの終了データを受信して終了する。
4. 補足・留意事項
- エラーフラグは常に '0':読込みエラーやマスターの更新エラーでも、エラーフラグは '0' のまま返す(エラーフラグ '2' をセットする処理はコメントアウトされている)。エラーは入力区分で DDP に伝える。
- 新規採番のエラーコード:新規採番で失敗した場合(入力区分 7・9)、エラーコードは 'B000' のまま。
- 最終NOの上限:9番代の最終NO は 1 ずつ増えるだけで、9999999 を超えた場合の扱いはない。
- 代替索引の年:代替索引のキーは出発月日(年なし)のため、同じ月日・発店・計画便コードの指令書が複数年分あると重複キー(入力区分 5)になる。
- 入力年月日:入力年月日(UNKIYMD)は本プログラムではセットしない(DDP の BU10400P がセットする)。
- 送信長:新規採番の送信長は 61バイトで、照会結果の前半(指令書NO・入力区分など)だけを返す。
- 受信データの未使用項目:端末ID(UNQTERM)・データ区分(UNQDTID)は使わない。