プロジェクト

全般

プロフィール

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

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

 

プログラム仕様書 BV10500P(配車入力(傭車 増・定便)検証)

項目 内容
システムID BV
参考資料 ・現行の解析資料 BU0040_配車入力(自社増).xlsx のシート「SRC_BV10500P」(ソース)、「BV10500P_参考」「MPBU040」「資産一覧」「レコードフォーマット」
・画面イメージ MPBU040.jpg(配車入力(増便・傭車))
項目名の出典 画面項目は解析資料のシート「MPBU040」、TS・マスターの項目はシート「レコードフォーマット」の日本語名称
ソースについての注意 BV10500P の .pl1 ファイルは提供がないため、解析資料のシートに貼られたソースから作成した。このシートのソースでは否定記号「¬」が欠落しており、「¬=」が「=」と表示されている(同じ資料の BU10500P のシートと BU10500P.pl1 を比べて確認)。条件の向きは、処理の流れ・コメント・BU10500P の同じ処理から判断した。判断できなかった箇所は 7章に「要確認」として挙げる

1. 概要

項目 内容
プログラムID BV10500P(手続き名:BV10500)
プログラム名称 配車入力(傭車 増、定便)検証
言語 PL/I(CICS コマンドレベル)
処理形態 オンライン(CICS 疑似会話型)
動作環境 SV(DDP 側)
トランザクションID BV05
パターンID PPOD252P(1987/05/01)、業務 BUSHRE30。冒頭コメントに「2000年対応済み」「23/11/07 定額傭車料 上限変更 300000→500000」とある
使用画面(マップ) MPBU040(配車入力(増便・傭車))、MPDM010(共通ヘッダ画面)、ELEPHAN(終了画面)
前の処理 BU04(BU10400P)。傭車の照会(定便・増便)がOKになると BV05 で待機している。BU06 の PF5(修正)からも戻ってくる
次の処理 チェックOK → BU06(BU10600P:確認・更新)。エラー → BV05(本プログラム)
センター照会 なし
参照ファイル VPUNKEI(DDP 運賃計算荷主マスター(1))、VPTENMS(DDP 店所マスター)、VPCHINM(DDP 地名マスター)。いずれも参照のみ
呼出しモジュール LSO0130(日数計算)
起動する印刷 BV13(BV11300P)、BV14(BV11400P)。テスト印刷・印刷装置の解放で START する
一時記憶 TSキュー(通信領域の TSQ_ID・TSQ_LENGTH。BU10400P が書いた「端末ID+'BU04'」、724バイト)

1.1 機能概要

傭車の配車内容(傭車会社、標屯、傭車形態、傭車料、車番、日時、最終卸店など)を入力・チェックする。自社増便の BU10500P に当たる傭車用のプログラムで、2~4枚目(次の指令書)はない。

  1. BU10400P が保存した照会結果(TSキュー)を読み、画面の入力内容を項目ごとにチェックする。
  2. 標屯から車種を決め、傭車形態と定額傭車料の組合せ、車番・乗務員、日付の範囲をチェックする。
  3. 増便(データ区分 'N')の場合は、計画便コード・便名を組み立てる。
  4. エラーがあればエラー項目を強調して BV05 で待機し、OKなら確認メッセージを表示して BU06 で待機する。
flowchart LR
    BU04[BU04<br/>BU10400P 照会] -- 傭車 照会OK --> BV05[BV05<br/>本プログラム<br/>MPBU040]
    BV05 -- エラー --> BV05
    BV05 -- OK(確認表示) --> BU06[BU06<br/>BU10600P 確認・更新]
    BU06 -- PF5 修正 --> BV05
    BV05 -- PF2 --> BU04

2. 画面仕様(MPBU040)

画面レイアウトは BU10400P_仕様書.md の 2.1 と同じ。

2.1 入力項目とチェック結果の番号

FLG は TSキューのチェック結果('0':未入力、'1':エラー、'2':OK、'3':関連エラー)。

FLG 項目ID 項目名 属性・桁 必須
1 BU04031・BU04032 指令書№(頭4桁・後5桁) 数字 4+5 ―(照会結果のまま)
2 BU04051 傭車会社コード 数字 7 必須
3 BU04053・BU04054 標屯(整数・少数) 数字 2+1 必須
4 BU04061 傭車形態 数字 1 必須
5 BU04063 一車保険料 数字 4 任意(未入力は 0)
6 BU04064 定額傭車料 数字 6 任意(未入力は 0。4.3 の組合せ)
7 BU04071 積載車番 数字 5 任意(4.3 の組合せ)
8 BU04072 トレーラー 数字 5 任意(4.3 の組合せ)
9 BU04081 乗務員Aコード 数字 6 任意(999999 のみ可)
10 BU04083 乗務員Bコード 数字 6 任意(999999 のみ可)
11 BU04091 発店コード 数字 4 必須(照会時の値。入力不可)
12 BU04093・BU04094 発送日 月・日 数字 2+2 必須
13 BU04095・BU04096 発送日 時・分 数字 2+2 必須
14 BU04101 最終卸店コード 数字 4 必須
15 BU04103・BU04104 最終卸店着日 月・日 数字 2+2 必須
16 BU04105・BU04106 最終卸店着日 時・分 数字 2+2 必須
17 BU04121 直配区分 文字 1 任意(未入力は 0)
18 BU04122 直配着地コード 数字 5 直配区分が 1 なら必須
19 BU04131 連絡事項 文字 20 任意
20 BU04132 携帯管理№(特定便区分+特定便NO) 文字 4 任意(2008/10/30 追加)

表示だけの項目:発行枚数、運行形態、運行車区分・運行車区分名・運行車形態名、計画便コード、便名、傭車会社名、傭車形態名、乗務員A名・B名、発店名、最終卸店名。最終着店名は空欄にする。最終着店コード・フェリー会社・鮮魚保険・次の指令書(2~4-)は扱わない。

2.2 コードと表示名

項目 コード:表示名
傭車形態 2:トン アタリ、3:テイガク、4:* リヨウ(1992/03/03 追加)、0・1:表示なし、その他:????
運行車区分 01:ジシヤ、02:ヨウシヤ、03:10Tコン、04:5Tコン、05:フエリー、その他:???
運行形態 0:フツウ、1:ノリツギ、2:ドツキング、3:マルニウンコウ、4:テアテ フエリ、5:カイソウ、6:オウエン カラ、7:オウエン ツミ、8:クウシヤ、その他:?????

2.3 ファンクションキー

キー 機能 処理概要
実行(Enter) 継続 入力内容をチェックする
PF2 取消 TSキューを削除し、BU10400P と同じ初期画面を表示して BU04(照会)に戻る
PF3 終了 印刷装置を解放し(COMM_PRI_FLG = '2' のとき)、一つ前の画面に戻る
PF4 戻り 印刷装置を解放し、メインメニューに戻る
PF9 テスト印刷 印刷装置がOK(COMM_PRI_FLG = '2')ならテスト印刷を出す(自社は BV13、傭車は BV14。BU10500P と同じ)。BV05 で待機
PF11 印刷装置リセット BU10400P と同じ。BV05 で待機
CLEAR 強制終了 印刷装置を解放し、TSキューを削除して終了画面を表示
上記以外 再表示 画面のデータ部分を再送信し、BV05 で待機

3. インターフェース

3.1 通信領域(COMMAREA:256バイト)

項目ID 本プログラムでの用途
TSQ_ID・TSQ_LENGTH 読み書きする TSキューの名前・長さ(BU10400P がセット)
COMM_TRM_CODE DDP端末ID(DNKTERM)にセット
COMM_RPOC_YMD 処理日付。入力年月日(DNKIYMD)にセットし、増便の発送日チェックの基準にする
COMM_START_YMD・COMM_END_YY/MM/DD 定便(データ区分 'D')の計画の出発年月日・最終卸年月日。日付チェックの基準
COMM_YOSRY 定額傭車料の前回値(経費削減チェック用、4.4)
COMM_PF5 BU06 の PF5(修正)から戻ったとき '1'(経費削減チェック用、4.4)
COMM_INQ_KBN・COMM_PRI_FLG・COMM_PRINTER_ID・COMM_EDA PF2・PF9・PF11・印刷装置の解放
CRT_BACK_KOSU/CRT_BACK_DATA(5) 戻り先画面のスタック(PF3・PF4)

3.2 TSキュー(CHK_DSP_WORK:724バイト)

BU10500P と同じ形式(FLG は 20 項目を使う)。後半の REVE_DATA(DEFPBU04:配車 照会、検証後(増、傭)DEFIN)にチェック結果を書き込み、BU06 に渡す。

3.3 チェック結果としてセットする主な項目(DEFPBU04)

項目ID 項目名 セットする値
DNKTERM・DNKIYMD DDP端末ID・入力年月日 端末ID・処理日付
DNKYOSC 傭車会社コード 入力値
DNKTONS・DNKSYAS・DNKSYAT 積載車標屯・積載車種・トレーラ頭・コンテナ車 車種 標屯の入力値と、標屯から決めた車種(4.2 No.3)
DNKYOSK 傭車使用形態 入力値
DNKYOSH・DNKYSRY 一車保険料(傭車の場合)・定額傭車料 入力値
DNKCARS・DNKCART 積載車番・トレーラ頭・コンテナ車 入力値(未入力は 00000)
DNKDRIA・DNKDRIB 乗務員 A・B 入力値(未入力は 000000)
DNKSTTC・DNKSTID 発店・発支社区分 発店コードと店所の支社区分
DNKSTYY~DNKSTMI 出発 年・月・日・時・分 発送日。年は 4.3 で決める
DNKENTC・DNKENID 最終卸店・最終卸支社区分 最終卸店コードと支社区分
DNKENYY~DNKENMI 最終卸店到着 年・月・日・時・分 最終卸店着日。年は 4.3 で決める
DNKGHKB・DNKGHCD・DNKGHTC 直配区分・直配着地コード・直配着地最寄りの店所 入力値と地名マスターの扱店コード
DNKINFO 連絡事項 入力値
DNKKBID・DNKTKCD 特定便区分・特定便NO 携帯管理№の1桁目・2~4桁目
DNKBNCD・DNKBNNM・DNKNAMC 計画便コード・便名(漢字)・便名(カナ) 増便('N')のとき組み立てる(4.5)
DNKNYUK・DNKINKB 入力結果・入力区分 通常は '1'・1、減便は '9'・9

4. 処理仕様

4.1 処理の流れ

flowchart TD
    S([開始]) --> AID{押されたキー}
    AID -- CLEAR --> CLR[印刷装置解放・TSキュー削除<br/>終了画面]
    AID -- PFキー --> PF[ファンクションキー処理 2.3]
    AID -- 実行 --> RCV[MPBU040 を受信<br/>TSキューを読んで削除]
    RCV -- TSキューなし --> CLR
    RCV --> CHK[項目チェック 4.2<br/>関連チェック 4.3<br/>便コード 4.5]
    CHK --> DSP[表示の編集 4.6]
    DSP -- エラー --> ERR[TSキュー保存<br/>エラー表示] --> W05([BV05 で待機])
    DSP -- OK --> OK[TSキュー保存<br/>確認メッセージ表示] --> W06([BU06 で待機])

4.2 開始時の処理と項目チェック(CHECK_SUB_RTN_LVL1)

  1. 例外条件(画面データなし・レコードなし・ファイルの終わり)と CLEAR は終了処理へ。それ以外のPFキーは 2.3。
  2. 画面を受信し、TSキューを読んで削除する。読めなければ終了処理へ。
  3. TSキューの全体チェック結果が OK(BU04 または BU06 の PF5 から来たとき)なら、FLG(1~20) をすべて '1' にして全項目をチェックし直す。
  4. DDP端末ID・入力年月日をセットし、次の順にチェックする。FLG が '2' の項目はチェックしない。
No 項目 未入力 チェック内容(満たさなければエラー)
1 指令書№ 未入力('0') 数字で、照会結果の指令書NO と同じ。'999999999' のときは減便とし、全項目のチェック結果をOKにして入力結果を '9' にする
2 傭車会社コード エラー 数字で 9950000~9989999。運賃計算荷主マスター(1)(キー:コード+'00000001')にあり(顧客略名(漢字)を傭車会社名に表示)、フェリー会社区分(KDEXKBNN)が 0。エラーなら傭車会社名に「???????」
3 標屯 エラー 整数2桁・小数1桁とも数字。0.0 はエラー、20.0 を超えるとエラー。車種は下表で決める
4 傭車形態 エラー 2・3・4 のいずれか
5 一車保険料 0(OK) 数字(9999 を超えると関連エラー '3'。画面は4桁のため実際には発生しない)
6 定額傭車料 0(OK) 数字。経費削減チェック用の値をセット(4.4)
7 積載車番 00000(OK) 数字で 00001~09999
8 トレーラー 00000(OK) 数字で 09999 以下
9 乗務員Aコード 000000(OK) 999999 だけ可(乗務員A名に「ダミーコード」)。それ以外はエラー
10 乗務員Bコード 000000(OK) 乗務員Aと同じ
11 発店コード エラー 数字で店所マスターにあり、店所区分が 1、または 4 で店所 0641。定便('D')は照会結果の発支社区分と店所の支社区分が同じ(大阪第一 'B' と大阪第二 'C' は同一管内として可)。増便('N')は店所の支社区分をセット
12 発送日 月・日 エラー 数字。月 01~12、日 01~31
13 発送日 時・分 エラー 数字。時 00 なら分 01~59、時 01~23 なら分 00~59
14 最終卸店コード エラー 数字で店所マスターにあり、店所区分が 1 または 8。支社区分は発店と同じ
15 最終卸店着日 月・日 エラー 12 と同じ
16 最終卸店着日 時・分 エラー 13 と同じ
17 直配区分 0(未入力) 0 または 1
18 直配着地コード 直配区分が 1 ならエラー(直配区分もエラー)、それ以外は 0 数字で地名マスターにあり入力区分(VCHIIKUB)が 1。直配区分が 1 なら扱店コードを直配着地最寄りの店所にセット、1 以外ならエラー(直配区分もエラー)
19 連絡事項 未入力('0') チェックなし
20 携帯管理№ 未入力('0') チェックなし(1桁目を特定便区分、2~4桁目を特定便NO にセット)

標屯と車種(No.3):

標屯 積載車種 トレーラー車種
0.1~1.9 '0' ―
2.0 '2' ―
2.1~4.0 '4' ―
4.1~11.0 'T' ―
11.1~13.5 'S' 'R'
13.6~20.0(1996/11/08 に 18.5 から変更) 'G' 'F'
0.0、20.1 以上 エラー ―

4.3 関連チェック

減便(入力結果 '9')のときは行わない。

No 条件 チェック内容(満たさなければ関連エラー '3')
1 傭車形態・定額傭車料がOK 次のどれかであること(上限は 2023/11/07 に 300000 から 500000 に変更)
・傭車形態 3(定額)で定額傭車料 1~500000
・傭車形態 4(*料)で定額傭車料 1~500000
・傭車形態 2(トン当たり)で定額傭車料 0、最低保障(DNKSAIT)0
・傭車形態 2 で定額傭車料 1~500000、最低保障 1
エラーは傭車形態・定額傭車料
2 標屯・積載車番・トレーラーがOK 車種が 'S'・'G'(トレーラー付き)なら、積載車番・トレーラーとも入力し、同じ番号でないこと。それ以外の車種の条件は 7章 要確認1。エラーは積載車番・トレーラー
3 乗務員A・BがOK 乗務員Aの条件(7章 要確認2)。エラーは乗務員A・B
4 発送日・時分、最終卸店着日・時分がすべてOK 日付の範囲(下表)。発送日・最終卸店着日をエラー('1')にする。同じ日の場合は発送時分 < 最終卸店着時分でなければ、4項目すべてエラー。OKなら出発年・最終卸店到着年をセット

日付の範囲(No.4、解析資料のシート「BV10500P_参考」と同じ):

データ区分 発送日の範囲 発送日~最終卸店着日の日数
'D'(定便) 計画の出発年月日(COMM_START_YMD)の 1日前~2日後 計画の所要日数(計画の出発~最終卸)が 0 なら -1~2日、それ以外は「計画の所要日数-1」~計画の所要日数。計画の所要日数が取れなければエラー
'N'(増便) 処理日付の ±10日以内(以前は ±7日) 0~3日

年は基準日の年とし、基準日が12月で入力が1月なら翌年、基準日が1月で入力が12月なら前年とする(最終卸店着日は、発送日が12月で着日が1月なら翌年)。

4.4 経費削減チェック(期間限定)

ソースには 1992/10/01~1995/09/30 の期間だけ働く処理が残っている(解析資料の備考では「期間限定ロジックのため不要」)。

処理 内容
定額傭車料の入力時 BU06 の PF5 から戻ったとき(COMM_PF5 = '1')は、前回の定額傭車料×0.97 と入力値が違えば、COMM_PF5 を '0' にして入力値を保存する。それ以外は COMM_PF5 を '0' にして入力値を保存する
関連チェックの後 特定の傭車会社(9958655・9952045・9964636・9964173・9956435・9957128・9961418・9962599・9961939・9957186・9956196(同和通運))以外で、出発年月日が 1992/10/01~1995/09/30、最低保障 0、定額傭車料あり、COMM_PF5 = '0' なら、定額傭車料を 0.97 倍にして COMM_PF5 を '1' にする

現在の日付では期間外のため、定額傭車料は変わらない。

4.5 入力結果・便コードの設定

  1. 減便なら入力結果 '9'・入力区分 9、それ以外は入力結果 '1'・入力区分 1 にする。
  2. 増便(データ区分 'N')で発店・最終卸店がOKなら、計画便コードを「'9'+発店の頭2桁+最終卸店の頭2桁+'1'」にする。
  3. 増便の場合、便名(漢字)を「*」+発店の店所略名(先頭6バイト)+「~」+最終卸店の店所略名(先頭6バイト)、便名(カナ)を発店の店所名(カナ)先頭7桁+'-'+最終卸店の店所名(カナ)先頭7桁で組み立てる(店所 2303・2304 の店所略名は「名古南 支店」「名古西 支店」に置き換える)。

4.6 表示の編集(DISPLAY_SUB_RTN_LVL1)と終了処理

  1. 各項目:OK・未入力は入力不可、エラー(関連エラーを含む)は入力可・高輝度でカーソルを置く。0 の項目(傭車会社コード・標屯・傭車料・車番・乗務員・直配着地など)は空欄にする。一車保険料・定額傭車料は前ゼロを除いて左詰めで表示する。
  2. 最終着店名を空欄にし、計画便コード・便名を表示し(入力不可)、傭車形態名・運行車区分名・運行車形態名を 2.2 のとおり表示する。発行枚数・運行形態・運行車区分は照会結果のまま表示する。
  3. 全体のチェック結果(FLG(1~20) に '1' または '3' があればエラー)で、メッセージをセットする。
状態 エラーコード メッセージ 次の処理
エラー ERR 1 エラー項目あり,再入力して下さい。 TSキューを書き、画面のデータ部分を送信して BV05 で待機
OK(入力結果 '1') OK 2 確認OKなら実行キーを押して下さい。修正なら、PF5 TSキューを書き(失敗したら終了処理)、画面のデータ部分を送信して BU06 で待機
OK(入力結果 '9') OK 2 減便になります。 修正なら、PF5 同上

5. メッセージ一覧

No エラーコード メッセージ 表示するとき
1 ERR 1 エラー項目あり,再入力して下さい。 項目エラー・関連エラーがある
2 OK 2 確認OKなら実行キーを押して下さい。修正なら、PF5 チェックOK
3 OK 2 減便になります。 修正なら、PF5 指令書№に 999999999 を入力
4 ― 定便=>便コード・出発月日、又は指令NO  増便=>PF10 PF2(初期画面に戻る)

6. 画面遷移

flowchart LR
    BU04[BU04 照会] --> BV05[BV05<br/>本プログラム]
    BU06[BU06 確認・更新] -- PF5 --> BV05
    BV05 -- 実行(エラー) --> BV05
    BV05 -- 実行(OK) --> BU06
    BV05 -- PF2 --> BU04
    BV05 -- PF9/PF11/その他 --> BV05
    BV05 -- PF3 --> PREV[一つ前の画面]
    BV05 -- PF4 --> MAIN[メインメニュー]
    BV05 -- CLEAR --> END[ELEPHAN 終了]

7. 補足・留意事項

7.1 要確認(ソースの否定記号が欠落しているため判断できない箇所)

解析資料のソースでは条件式の「¬」が欠落している。次の箇所は、どちらの意味か資料からは決められないため、現行の .pl1 で確認が必要。

No 箇所(シートの行) 資料上の式 考えられる意味
1 車番の関連チェック(車種が 'S'・'G' 以外)、シート R1477 「積載車番 = 00000 かつ トレーラー = 00000 ならOK」 ①そのまま:トレーラーなしの車種は車番を入力しない
②「積載車番 ¬= 00000 かつ トレーラー = 00000」:積載車番だけを入力する(BU10500P の自社の考え方に近い)
2 乗務員の関連チェック、シート R1561 「乗務員A = 000000 ならOK」 ①そのまま:傭車では乗務員Aを入力しない(Bだけダミー可)
②「乗務員A ¬= 000000」:乗務員A(ダミー 999999)を必須にする

次の箇所は、処理の流れ・コメントから「¬=」と判断して記載した:TSキューの読込み結果(読めなければ終了)、全体チェック結果の判定(OK以外ならエラー表示)、関連チェックの「減便でない」条件、PF9 の「自社(照会区分 '10' 以外)」の判定。

7.2 その他

  1. 乗務員はダミーだけ:乗務員A・Bは 999999(ダミーコード)以外を入力するとエラーになり、従業員マスターは読まない。
  2. 携帯管理№のチェックなし:2008/10/30 に追加された携帯管理№は、チェックせずにそのまま特定便区分・特定便NO にセットする(自社の BU10500P は区分 S・F・R などをチェックする)。
  3. 一車保険料の上限:9999 を超えると関連エラーになる処理があるが、画面の桁が4桁のため実際には発生しない。
  4. 運行車区分 03 の表示名:本プログラムは「10Tコン」と表示する(BU10500P は「31FT」)。
  5. 経費削減チェック:1992/10/01~1995/09/30 の期間限定の処理がそのまま残っている(4.4)。
  6. 減便の入力:指令書№に 999999999 を入れると減便になるが、指令書№が入力できるのは定便(既存の指令書)の照会がOKになった後(BU10400P が入力可にする)と、BU06 の PF5 で定便を修正する場合(BU10600P が入力可にする)。増便では入力不可。
(1-1/7)