レビュー指摘 #12417 » BV10500P_仕様書.md
プログラム仕様書 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枚目(次の指令書)はない。
- BU10400P が保存した照会結果(TSキュー)を読み、画面の入力内容を項目ごとにチェックする。
- 標屯から車種を決め、傭車形態と定額傭車料の組合せ、車番・乗務員、日付の範囲をチェックする。
- 増便(データ区分 'N')の場合は、計画便コード・便名を組み立てる。
- エラーがあればエラー項目を強調して 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)
- 例外条件(画面データなし・レコードなし・ファイルの終わり)と CLEAR は終了処理へ。それ以外のPFキーは 2.3。
- 画面を受信し、TSキューを読んで削除する。読めなければ終了処理へ。
- TSキューの全体チェック結果が OK(BU04 または BU06 の PF5 から来たとき)なら、FLG(1~20) をすべて '1' にして全項目をチェックし直す。
- 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 入力結果・便コードの設定
- 減便なら入力結果 '9'・入力区分 9、それ以外は入力結果 '1'・入力区分 1 にする。
- 増便(データ区分 'N')で発店・最終卸店がOKなら、計画便コードを「'9'+発店の頭2桁+最終卸店の頭2桁+'1'」にする。
- 増便の場合、便名(漢字)を「*」+発店の店所略名(先頭6バイト)+「~」+最終卸店の店所略名(先頭6バイト)、便名(カナ)を発店の店所名(カナ)先頭7桁+'-'+最終卸店の店所名(カナ)先頭7桁で組み立てる(店所 2303・2304 の店所略名は「名古南 支店」「名古西 支店」に置き換える)。
4.6 表示の編集(DISPLAY_SUB_RTN_LVL1)と終了処理
- 各項目:OK・未入力は入力不可、エラー(関連エラーを含む)は入力可・高輝度でカーソルを置く。0 の項目(傭車会社コード・標屯・傭車料・車番・乗務員・直配着地など)は空欄にする。一車保険料・定額傭車料は前ゼロを除いて左詰めで表示する。
- 最終着店名を空欄にし、計画便コード・便名を表示し(入力不可)、傭車形態名・運行車区分名・運行車形態名を 2.2 のとおり表示する。発行枚数・運行形態・運行車区分は照会結果のまま表示する。
- 全体のチェック結果(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 その他
- 乗務員はダミーだけ:乗務員A・Bは 999999(ダミーコード)以外を入力するとエラーになり、従業員マスターは読まない。
- 携帯管理№のチェックなし:2008/10/30 に追加された携帯管理№は、チェックせずにそのまま特定便区分・特定便NO にセットする(自社の BU10500P は区分 S・F・R などをチェックする)。
- 一車保険料の上限:9999 を超えると関連エラーになる処理があるが、画面の桁が4桁のため実際には発生しない。
- 運行車区分 03 の表示名:本プログラムは「10Tコン」と表示する(BU10500P は「31FT」)。
- 経費削減チェック:1992/10/01~1995/09/30 の期間限定の処理がそのまま残っている(4.4)。
- 減便の入力:指令書№に 999999999 を入れると減便になるが、指令書№が入力できるのは定便(既存の指令書)の照会がOKになった後(BU10400P が入力可にする)と、BU06 の PF5 で定便を修正する場合(BU10600P が入力可にする)。増便では入力不可。