プロジェクト

全般

プロフィール

レビュー指摘 #12452 » BU20900P_仕様書.md

幸塚 和久, 2026-10-29 04:59 午後

 

プログラム仕様書 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 更新前の確認

  1. 送信域をクリアし、端末ID・指令書NO をセットする。処理する枝番の範囲を「受信した指令書NO の枝番 ~ 発行枚数」(1ずつ増やす)にする。
  2. 入力結果が 9(減便)か D(削除)なら、後の枝番(枝番+1 ~ 発行枚数)を順に読んで確認する。枝番のキーは LSO0020(区分 '07'、タイプ 'G')でチェックデジットを作る。
    • 送付書がある(取消送付書枚数 ≠ 送付書枚数 で、送付書枚数 ≠ 0、入力区分 ≠ 0)→ 入力結果 7、更新しない。
    • レコードがない → 入力結果 4、更新しない。その他の読込みエラー → 入力結果 8(エラーコードに応答コード)、更新しない。
    • チェックデジットを作れない → 入力結果 '?'、更新しない。
    • D の場合は、処理の範囲を「発行枚数 ~ 修正した枝番」(1ずつ減らす)に変える。
  3. 運行車区分が 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 結果の送信と後処理

  1. 結果(169バイト)を送信して応答を待ち(INVITE WAIT)、DDP からの終了データを受信する。
  2. 稼働データが1件以上あれば、TSキュー(端末ID+現在の分秒)に稼働データ(件数×50+5バイト。計画所属始発年月日・計画便コード・発店・実績年月日時分・到着店・時刻(入力区分 5 以上)・指令書NO・形態区分と、社番・乗務員コードごとの区分(1:車両、2:乗務員)・削除/登録)を書き、BZ20200P に XCTL する(車両稼働・乗務員稼働の更新)。
  3. 稼働データがなければ終了する。

4. 補足・留意事項

  1. 集信ログは出力しない:保険料(自社鮮魚・傭車)がある便の修正・減便・削除では、センター集信ログ(BATCH4、レコードID 430)のデータを作るが、TD キュー(SYUD)への書込みがコメントになっており出力していない。
  2. 傭車の携帯番号チェックは無効:傭車の携帯番号(VKKTAIN)を確認して入力結果 A を返す処理はコメントになっている(GPS 対応 2008.11 の記述あり)。BU10900P の「携帯№無し F5修正」は表示されない。
  3. 入力結果 5 は返さない:BU10900P は 5 を「修正済、次の枝番無し」とするが、本プログラムには 5 を返す処理がない。
  4. 途中の枝番からの削除:削除を途中の枝番から行う場合(発行枚数を減らして書き換える処理)は、BU10800P・BV10800P が削除を「最終枝番または1枚目」に限っているため、通常は通らない。最終枝番を削除した場合、前の枝番の発行枚数は更新しない。
  5. 修正した枝番より前の枝番は更新しない:範囲は修正した枝番から最終枝番まで。
  6. ライナー・フェリー料金マスターがないときのメッセージ:料金マスターがない場合も入力結果 8 のため、DDP には「マスターI/Oエラー」と表示される。
  7. 応答コードの表示:読込みエラー時はエラーコードに応答コードをセットするが、BU10900P はこの値を表示しない。
(2-2/6)