レビュー指摘 #12452 » BU20900P_仕様書.md
プログラム仕様書 BU20900P(配車修正入力 更新)
| 項目 | 内容 |
|---|---|
| システムID | BU |
| 参考資料 | ・現行ソース BU20900P.pl1 ・現行の解析資料 BU0070_配車修正入力.xlsx(シート「資産一覧」「Link XCTL 一覧」「レコードフォーマット」「SRC_BU20900P」「BU20900P_参考」) ・呼出し元の仕様書 BU10900P_仕様書.md |
| 項目名の出典 | 受渡し項目(CEDPBU07・CEDPBU09)・運行指令マスター(UNKOSHIR)の項目は解析資料のシート「レコードフォーマット」の日本語名称 |
1. 概要
| 項目 | 内容 |
|---|---|
| プログラムID | BU20900P(手続き名:BU20900) |
| プログラム名称 | 配車修正入力 更新(2000年対応済み) |
| 言語 | PL/I(CICS コマンドレベル) |
| 処理形態 | オンライン(APPC 会話の相手側。画面なし) |
| 動作環境 | CIC1(センター側) |
| プロセス名(トランザクションID) | B09U |
| パターンID | PPOC050P(1987/05/06。KSDS・UPDATE)、業務 BUSHRE30 |
| 呼出し元 | BU10900P(DDP の BU09)。SYSID 'CIC1'、プロセス 'B09U' で接続 |
| 更新ファイル | VKUNKSH(運行指令マスター):読込み・書換え・削除 |
| 参照ファイル | VKLNFRY(ライナー料金マスター・フェリー料金マスター)、VKKDMST(日付稼働テーブルマスター)、VKTENMS(店所マスター)、VKHCBKM(発着地粁程マスター)、VKFIXNW(計画便マスター(NEW))、VKHGINT(高速インターマスター) |
| 呼出しモジュール | LSO0020(指令書NO のチェックデジット生成)、LSO0130(日付の経過日数の計算)、LSS0030A(応答コードの16進表示への変換) |
| 次の処理 | 車両・乗務員の稼働の更新が必要なら、TSキューを書いて BZ20200P に XCTL |
1.1 機能概要
DDP(BU10900P)から検証済みの修正データを受け取り、運行指令マスターを更新して結果を返す。1つの便は指令書の枚数(発行枚数)だけレコードがあり(指令書NO の8桁目が枝番、9桁目がチェックデジット)、修正した枝番とそれ以降の枝番をまとめて更新する。
| 入力結果(受信) | 処理 |
|---|---|
| 1・2・5(入力区分そのまま) | 修正。修正した枝番を更新し、後の枝番(未配車のもの)に乗務員・車両・日付のずれを反映する |
| 9 | 減便。修正した枝番から最終枝番までを減便にする |
| D | 削除。増便の指令書を削除する |
| R | 減便からの復活 |
flowchart LR
DDP[BU10900P<br/>DDP BU09] -- 修正データ 250バイト --> C[BU20900P<br/>CIC1 B09U]
C <--> UNK[(VKUNKSH<br/>運行指令マスター)]
C --> REF[(VKLNFRY・VKKDMST<br/>VKTENMS・VKHCBKM<br/>VKFIXNW・VKHGINT)]
C -- 結果 169バイト --> DDP
C -- 稼働データ TS --> BZ[BZ20200P<br/>XCTL]
2. インターフェース
2.1 受信データ(250バイト)
トランザクションID(4)+エラーフラグ(1)+エラーコード(4)+配車修正照会後、検証後データ(CEDPBU07、241バイト)。主な項目は BU10800P_仕様書.md の 3.2 の表と同じ。入力結果(UNKNYUK)には BU10900P が画面の入力区分をセットしている。
2.2 送信データ(169バイト)
| 項目ID | 項目名 | 内容 |
|---|---|---|
| SESS_ERR_FLG・SESS_ERR_CODE | エラーフラグ・エラーコード | フラグは '0'。マスターの読込みエラー時は応答コード(16進表示)をエラーコードにセット |
| DNKTERM・DNKSHNO | 端末ID・指令書NO | 受信した値 |
| DNKNYUK | 入力結果 | 処理結果(下表) |
| UNQENTC ほか(UNQPDAT) | 印刷用データ | 修正が成功した場合だけ(3.4) |
| 入力結果 | 意味 | DDP のメッセージ |
|---|---|---|
| 1 | 修正した | 修正OK!! |
| 2 | 復活した | 復活しました。 |
| 3 | 削除した | 削除しました。 |
| 9 | 減便にした | 減便になりました。 |
| 0 | 修正した枝番が配車未入力 | 配車未入力です。!! |
| 4 | 枝番のレコードがない | 枝番前後の指令書無し |
| 7 | 送付書がある、または入力区分が対象外 | 入力済で修正不可能! |
| 8 | マスターの I/O エラー、ライナー・フェリー料金マスターがない | マスターI/Oエラー |
| ? | 枝番のチェックデジットを作れない | ?????? |
(入力結果 5「修正済、次の枝番無し」は本プログラムでは返さない。)
3. 処理仕様
3.1 処理の流れ
flowchart TD
S([受信]) --> PRE{入力結果 9・D}
PRE -- はい --> CHK[後の枝番の事前確認 3.2]
PRE -- いいえ --> LF
CHK --> LF{運行車区分 03・04・05}
LF -- はい --> LFR[料金マスター確認 3.2]
LF -- いいえ --> LOOP
LFR -- なし --> SEND
LFR -- あり --> LOOP[枝番ごとに読込み・更新 3.3]
LOOP --> SEND[結果を送信<br/>終了データを受信]
SEND --> BZ{稼働データあり}
BZ -- はい --> XCTL[TSキューを書いて<br/>BZ20200P に XCTL]
BZ -- いいえ --> END([終了])
3.2 更新前の確認
- 送信域をクリアし、端末ID・指令書NO をセットする。処理する枝番の範囲を「受信した指令書NO の枝番 ~ 発行枚数」(1ずつ増やす)にする。
- 入力結果が 9(減便)か D(削除)なら、後の枝番(枝番+1 ~ 発行枚数)を順に読んで確認する。枝番のキーは LSO0020(区分 '07'、タイプ 'G')でチェックデジットを作る。
- 送付書がある(取消送付書枚数 ≠ 送付書枚数 で、送付書枚数 ≠ 0、入力区分 ≠ 0)→ 入力結果 7、更新しない。
- レコードがない → 入力結果 4、更新しない。その他の読込みエラー → 入力結果 8(エラーコードに応答コード)、更新しない。
- チェックデジットを作れない → 入力結果 '?'、更新しない。
- D の場合は、処理の範囲を「発行枚数 ~ 修正した枝番」(1ずつ減らす)に変える。
- 運行車区分が 03・04・05 なら、ライナー・フェリー料金マスター(VKLNFRY)を「発店+最終卸店+運行車区分」で読む。ない、または料金コード(区分 05 はフェリー会社コード(1)、それ以外はライナー料金コード)が 0 なら入力結果 8 にして、更新せずに結果を送信する。
3.3 枝番ごとの更新(入力結果 1・2・5 など、数字の 1~8)
範囲の枝番ごとに、運行指令マスターを更新目的で読む(ない → 4、読込みエラー → 8 で中断)。
(1) 修正した枝番(入力区分が 1~5 の場合だけ。0 なら入力結果 0、それ以外は 7 で中断)
| 更新する項目 | 値 |
|---|---|
| 指令年月日(=出発年月日)(VBKBSRDD) | 出発年月日 |
| 特定便区分・特定便NO | 受信値 |
| 実績の発店(支社区分・発店コード)、実績の着店(最終卸店) | 受信値 |
| 能屯(VBKGNUTN) | 積載車標屯+トレーラの標屯 |
| 実績運行OW区分(VBKGOWKB) | 乗務員A・Bとも入力 '2'、両方 0 なら空白、片方なら '1' |
| 乗務員コード(A・B) | 受信値 |
| 車番・標屯・車種(1・2台目、枝番2以降は3・4台目) | 積載とトレーラー。積載の車種が 'F' なら入れ替える(傭車の標屯は入れ替えない) |
| 運行車区分 | 受信値 |
| 予定年月日時分(出発・到着)、予定年月日時分(最終卸し) | 受信した出発・到着の年月日時分 |
| 連絡事項(漢字) | 受信値 |
| 増便(増定減便区分 2)の場合 | 便名(漢字・カナ)、運行形態、計画の発店・着店、乗り継ぎ店コード1・2、計画設定粁(発店・着店(直配なら着地)の所在地で発着地粁程マスターを読む)、計画出発年月日、出発日が変わったら運行日の曜日・休日区分(日付稼働テーブルマスター)、枝番1なら所属の支社区分・店所コード |
| 次運行発店(到着店コード) | 自社便の最終枝番は次運行発店(0 なら最終卸店)、それ以外の枝番は次運行発店と支社区分。予定店コードと違えば、後の枝番の発店に引き継ぐ(4) |
| 傭車便の場合 | フェリー会社・傭車コード=傭車会社、使用形態(差額的傭車 4 は使用形態 3+自動車利用運送区分 '1')、定額傭車料、一車保険料(傭車)、到着店コード=最終卸店 |
| 自社便の場合 | 一車保険料(自社鮮魚)、フェリー会社・傭車コード=フェリー会社、到着店コード |
| 着支社・到着月日・直配区分・直配着地コード・直配着地標準最終扱店所 | 受信値 |
| 入力区分 1 の場合 | 出発月日、発支社、発店所コード |
| 到着年月日時分(乗継店・手当付フェリー) | 出発年月日(時分 0)。形態 4 は乗船・引取時刻の両方、それ以外は乗継店がある方 |
書き換えが成功したら入力結果を 1 にして印刷用データ(3.4)を作る。失敗したら 8 で中断。
(2) 後の枝番(入力区分が 0(未配車)の場合だけ更新し、それ以外は読み飛ばす)
- 乗務員:修正した枝番の形態が乗継(1~3)でなければ、乗務員A・B・OW区分を引き継ぐ。
- 車番・標屯・車種、能屯を引き継ぐ。
- 次運行発店が予定店と違っていた場合、この枝番の発店(支社区分・店所コード)を次運行発店にする。
- 入力区分 1 の便で、計画最終卸日と修正後の到着日のずれ(±1日を超える分)が変わった場合、出発・到着の予定日をその日数ずらす(増便は曜日・休日区分も再設定)。
(3) 稼働データ:入力区分が 2 以上(出発点呼済以降)の便で、自社便(運行車区分 01)または手当付フェリー(形態 4)なら変更前の乗務員を削除('D')・変更後を登録('R')、運行車区分 01・03・05 なら変更前の車番を削除・変更後を登録するデータを作る(3.5)。
3.4 印刷用データ(修正が成功した場合)
| 項目 | 値 |
|---|---|
| 最終到着店(UNQENTC) | 実績店所コード。0 なら予定店コード、それも 0 なら配車で予定の店所コード(0 なら計画便マスターよりの店所コード) |
| 積載社番(1)(2)・トレーラ頭等(1)(2) | 車番1・3、車番2・4 |
| 所属店・乗継店1・2 | 所属の店所コード・乗り継ぎ店コード1・2 |
| 出社・退社・到着時分、休憩場所・時間(4件)、標準拘束時間・運転時間・有余時間 | 計画便マスター(VKFIXNW)を計画便コードで読む。休憩場所は店所マスターの店所略名、または高速インターマスターの名称。ない場合は 0・空白 |
3.5 減便・削除・復活(入力結果 9・D・R)
| 入力結果 | 条件 | 処理 | 結果 |
|---|---|---|---|
| 9(減便) | 送付書がない(取消送付書枚数 = 送付書枚数、または 0)で、入力区分 < 5 | 増定減便区分を 3、入力区分を 9 にし、予定の時刻・指令年月日・保険料・実績の項目・送付書枚数などをクリアして書き換える(範囲の全枝番) | 9 |
| D(削除) | 同上 | 最終枝番から順にレコードを削除する(修正した枝番が 1 なら全枝番を削除)。途中の枝番から削除する場合は、発行枚数を1減らし継続入力区分を更新して書き換える | 3 |
| R(復活) | 入力区分が 9 | 増定減便区分・入力区分を 0 にして書き換える(範囲の全枝番) | 2 |
| 上記以外 | 書き換えずに中断。入力区分 0 なら入力結果 0、それ以外は 7 |
減便・削除では、入力区分が 2 以上の便の乗務員・車番を稼働データの削除('D')として作る。
3.6 結果の送信と後処理
- 結果(169バイト)を送信して応答を待ち(INVITE WAIT)、DDP からの終了データを受信する。
- 稼働データが1件以上あれば、TSキュー(端末ID+現在の分秒)に稼働データ(件数×50+5バイト。計画所属始発年月日・計画便コード・発店・実績年月日時分・到着店・時刻(入力区分 5 以上)・指令書NO・形態区分と、社番・乗務員コードごとの区分(1:車両、2:乗務員)・削除/登録)を書き、BZ20200P に XCTL する(車両稼働・乗務員稼働の更新)。
- 稼働データがなければ終了する。
4. 補足・留意事項
- 集信ログは出力しない:保険料(自社鮮魚・傭車)がある便の修正・減便・削除では、センター集信ログ(BATCH4、レコードID 430)のデータを作るが、TD キュー(SYUD)への書込みがコメントになっており出力していない。
- 傭車の携帯番号チェックは無効:傭車の携帯番号(VKKTAIN)を確認して入力結果 A を返す処理はコメントになっている(GPS 対応 2008.11 の記述あり)。BU10900P の「携帯№無し F5修正」は表示されない。
- 入力結果 5 は返さない:BU10900P は 5 を「修正済、次の枝番無し」とするが、本プログラムには 5 を返す処理がない。
- 途中の枝番からの削除:削除を途中の枝番から行う場合(発行枚数を減らして書き換える処理)は、BU10800P・BV10800P が削除を「最終枝番または1枚目」に限っているため、通常は通らない。最終枝番を削除した場合、前の枝番の発行枚数は更新しない。
- 修正した枝番より前の枝番は更新しない:範囲は修正した枝番から最終枝番まで。
- ライナー・フェリー料金マスターがないときのメッセージ:料金マスターがない場合も入力結果 8 のため、DDP には「マスターI/Oエラー」と表示される。
- 応答コードの表示:読込みエラー時はエラーコードに応答コードをセットするが、BU10900P はこの値を表示しない。