# プログラム仕様書　BV10800P（配車修正入力（傭車便）　検証）

| 項目 | 内容 |
|---|---|
| システムID | BU |
| 参考資料 | ・現行ソース BV10800P.pl1<br/>・画面イメージ MPBU070.jpg（配車修正入力）<br/>・現行の解析資料 BU0070_配車修正入力.xlsx（シート「資産一覧」「MPBU070」「レコードフォーマット」「SRC_BV10800P」）<br/>・自社便の検証の仕様書 [BU10800P_仕様書.md](BU10800P_仕様書.md)（本プログラムと構造が同じ。共通の部分はそちらを参照） |
| 項目名の出典 | 画面項目は解析資料のシート「MPBU070」の日本語名、TSキューの項目（DEFPBU07）・マスターの項目はシート「レコードフォーマット」の日本語名称 |

---

## 1. 概要

| 項目 | 内容 |
|---|---|
| プログラムID | BV10800P（手続き名：BV10800） |
| プログラム名称 | 配車修正入力（傭車便）　検証 |
| 言語 | PL/I（CICS コマンドレベル） |
| 処理形態 | オンライン（CICS 疑似会話型） |
| 動作環境 | SV（DDP 側） |
| トランザクションID | BV08 |
| パターンID | PPOD252P（1987/05/01）、業務 BUSHRE30。2000年対応済み。2023/11/07 定額傭車料の上限を 300000 → 500000 に変更 |
| 使用画面（マップ） | MPBU070（配車修正入力）、MPDM010（共通ヘッダ画面）、ELEPHAN（終了画面） |
| 前の処理 | BU07（BU10700P：照会）。運行車区分が 02（傭車）の指令書を照会した後 |
| 次の処理 | チェックOK → BU09（BU10900P：センターへの更新依頼） |
| 参照ファイル | VPTENMS（ＤＤＰ 店所マスター）、VPCHINM（ＤＤＰ 地名マスター）、VPUNKEI（ＤＤＰ 運賃計算荷主マスター（１））、VPHCBKM（ＤＤＰ 発着地粁程マスター） |
| 呼出しモジュール | LSO0130（日付の経過日数の計算） |
| 起動するトランザクション | BV13・BV14（テストプリント・印刷終了のときだけ） |
| 一時記憶 | TSキュー（通信領域のキュー名。BU10700P が書いた「端末ID＋'BU07'」、長さ 520） |

### 1.1 機能概要

傭車便の指令書の修正内容をチェックする画面。処理の流れ、TSキュー、ファンクションキー、メッセージは BU10800P と同じで、チェックする項目と内容が違う（傭車会社・傭車標屯・傭車形態・一車保険料・定額傭車料をチェックし、運行車区分・形態・乗継店・次運行発店・フェリー会社・鮮魚保険料はチェックしない）。

```mermaid
flowchart LR
    BU07[BU07<br/>BU10700P 照会] -- 傭車便 --> BV08[BV08<br/>本プログラム<br/>MPBU070]
    BV08 -- エラー --> BV08
    BV08 <--> TS[(TSキュー<br/>照会結果 520バイト)]
    BV08 -- チェックOK --> BU09[BU09<br/>BU10900P 更新依頼]
    BV08 -- PF2 --> BU07
```

---

## 2. 画面仕様

画面レイアウトは BU10700P と同じ。ファンクションキーは BU10800P と同じ（待機するトランザクションが BU08 ではなく BV08）。

### 2.1 画面項目とチェック結果の番号

「FLG」は TSキューのチェック結果の番号。BU10800P と番号が同じ項目は同じ位置を使う。

| FLG | 項目ID | 項目名 | 本プログラムでの扱い |
|---|---|---|---|
| 1 | BU07051・BU07052 | 指令書NO | チェックしない（常に OK） |
| 2 | BU07053 | 入力区分 | BU10800P と同じ |
| 3・4 | BU07071・BU07073 | 運行車区分・運行車形態区分 | チェックしない（常に OK）。表示だけ |
| 5 | BU07081 | 積載社番 | 4.2 |
| 6 | BU07082 | トレーラー | 4.2 |
| 7 | BU07091 | 発店コード | BU10800P と同じ |
| 8・9 | BU07093～BU07096 | 出発予定日　月・日・時・分 | 項目チェックは BU10800P と同じ。日付の関連チェックの範囲が違う（4.3） |
| 10・11 | BU07101・BU07111 | 乗継店１・２ | チェックしない（常に OK） |
| 12 | BU07121 | 最終卸店コード | BU10800P と同じ |
| 13・14 | BU07123～BU07126 | 到着予定日　月・日・時・分 | 出発と同じ |
| 15 | BU07131 | 次運行便発店コード | チェックしない（常に OK） |
| 16・17 | BU07151・BU07153 | 乗務員Ａ・Ｂ | 4.2 |
| 18～21 | BU07161～BU07174 | 乗継員１Ａ～２Ｂ | チェックしない（常に OK） |
| 22・23 | BU07191・BU07192 | 直配区分・直配着地コード | BU10800P と同じ |
| 24 | BU07193 | フェリー会社コード | チェックしない（常に OK） |
| 25 | BU07201 | 連絡事項 | チェックなし（BU10800P と同じ） |
| 26 | BU07202 | 特定便コード | 4.2 |
| 27 | BU07203 | 鮮魚保険料 | チェックしない（常に OK） |
| 28 | BU07211・BU07212 | 傭車会社コード・傭車会社名 | 4.2 |
| 29 | BU07213・BU07214 | 傭車標屯（整数・小数点） | 4.2 |
| 30 | BU07221・BU07222 | 傭車形態区分・傭車形態区分名 | 4.2 |
| 31 | BU07223 | 一車保険料 | 4.2 |
| 32 | BU07224 | 定額傭車料 | 4.2 |

---

## 3. インターフェース

通信領域・TSキュー・PFキーの処理は BU10800P と同じ（[BU10800P_仕様書.md](BU10800P_仕様書.md) の 3章・4.7）。本プログラムが TSキューの検証後データ（DEFPBU07）に書き換える項目は、BU10800P の表のうち次のものと、傭車の項目。

| 項目ID | 項目名 | セットする値 |
|---|---|---|
| DNKTERM・DNKIYMD・DNKNYUK | 端末ＩＤ・入力年月日・入力結果 | BU10800P と同じ |
| DNKCARS・DNKCART | 積載社番・トレーラ頭・コンテナ車 | 入力値（未入力は 0） |
| DNKTONS・DNKSYAS・DNKSYAT | 積載車標屯・積載車種・トレーラ車種 | 傭車標屯の入力値と、標屯から決めた車種（4.2） |
| DNKSTID・DNKSTTC、DNKENID・DNKENTC | 発店・最終卸店（支社区分・コード） | BU10800P と同じ |
| DNKSTYY～DNKSTMI、DNKENYY～DNKENMI | 出発・最終卸店到着の年月日時分 | BU10800P と同じ（年は日付の関連チェックで決める） |
| DNKDRIA・DNKDRIB | 乗務員　Ａ・Ｂ | 入力値（999999 のみ。未入力は 0） |
| DNKGHKB・DNKGHCD・DNKGHTC | 直配区分・直配着地コード・直配着地最寄りの店所 | BU10800P と同じ |
| DNKINFO | 連絡事項 | 入力値 |
| DNKKBID・DNKTKNO | 特定便区分・特定便ＮＯ | 入力値 |
| DNKYOSC | 傭車会社コード | 入力値 |
| DNKYOSK | 傭車使用形態 | 入力値 |
| DNKYOSH | 一車保険料（傭車の場合） | 入力値 |
| DNKYSRY | 定額傭車料 | 入力値 |
| DNKBNCD・DNKBNNM・DNKNAMC・DNKSEKM | 便コード・便名・便名（カナ）・設定粁 | 増便の場合に編集（BU10800P と同じ） |

---

## 4. 処理仕様

### 4.1 処理の流れ

BU10800P の 4.1・4.2 と同じ。ただし初期化では、増便かどうかに関係なく乗継店１・２（FLG(10)・FLG(11)）を OK にする。エラーなら BV08、チェックOK なら BU09 で待機する。

### 4.2 項目チェック（BU10800P と違う項目）

| FLG | 項目 | 未入力のとき | チェック内容（満たさなければエラー） |
|---|---|---|---|
| 5 | 積載社番 | OK（0） | 数字で 00001～09999 |
| 6 | トレーラー | OK（0） | 数字で 10000 未満 |
| 16・17 | 乗務員Ａ・Ｂ | OK（0） | 999999（ダミーコード）であること。それ以外のコードはエラー（名前を「？？？？？？」） |
| 26 | 特定便コード | OK（区分空白・ＮＯ 000） | 1桁目が 'Y' で2～4桁目が数字で 000 より大きい。満たさなくても運行車区分が 02 なら OK（4.5 の 3） |
| 28 | 傭車会社コード | エラー（会社名を空白） | 数字で 9950000～9989999、運賃計算荷主マスター（１）（キー：傭車会社コード＋'00000001'）にあり、フェリー会社区分が 0。会社名に顧客略名（漢字）を表示。エラーなら「？？？？？？？」 |
| 29 | 傭車標屯 | 整数・小数とも未入力ならエラー | 整数（2桁）＋小数（1桁）が数字で、下表で車種を決める |
| 30 | 傭車形態区分 | エラー | '2'（ﾄﾝｱﾀﾘ）・'3'（ﾃｲｶﾞｸ）・'4'（差額的傭車）のどれか。変更前（照会時）か変更後が '4' で、値を変える場合は、送付書枚数が 0 であること |
| 31 | 一車保険料 | OK（0） | 数字（4桁） |
| 32 | 定額傭車料 | OK（0） | 数字（6桁） |

傭車標屯から決める車種。

| 傭車標屯 | 積載車種 | トレーラ車種 |
|---|---|---|
| 0.0 | エラー | |
| 2.0 未満 | '0' | （変えない） |
| 2.0 | '2' | （変えない） |
| 2.1～4.0 | '4' | （変えない） |
| 4.1～11.0 | 'T' | （変えない） |
| 11.1～13.5 | 'S' | 'R' |
| 13.6～18.5 | 'G' | 'F' |
| 18.6 以上 | エラー | |

### 4.3 関連チェック

入力区分を変えていない（入力結果が '9' でない）場合に行う。

1. **出発・到着の日付**（BU10800P の 4.4 の 4 と同じ方法。基準日からの日数の範囲が違う）

| 項目 | 増便（1桁目が 9） | 定便 |
|---|---|---|
| 基準日 | 処理日付 | 計画出発年月日 |
| 基準日から出発日までの日数 | －30～＋7 日 | －1～＋2 日 |
| 出発日から到着日までの日数 | 0～3 日 | 計画最終卸経過日数が 0 なら －1～2 日、それ以外は（経過日数－1）～経過日数 |

2. **乗務員**（乗務員Ａ・Ｂが OK の場合）：乗務員Ａが未入力なら、乗務員Ａ・Ｂを関連エラーにする。
3. **傭車形態と定額傭車料**（傭車形態・定額傭車料が OK の場合）。次のどれかを満たさなければ、傭車形態・定額傭車料を関連エラーにする。

| 傭車形態 | 定額傭車料 | 最低保障区分 |
|---|---|---|
| 3（ﾃｲｶﾞｸ） | 1～500000 | |
| 4（差額的傭車） | 1～500000 | |
| 2（ﾄﾝｱﾀﾘ） | 0 | 0 |
| 2（ﾄﾝｱﾀﾘ） | 1～500000 | 1 |

最低保障区分は、照会時の運行指令の使用形態が 2 で定額傭車料が 0 でなければ 1（BU20700P が編集）。

4. **車番**（傭車標屯・積載社番・トレーラーが OK の場合）
   - 積載車種が 'S'・'G'（標屯 11.1～18.5）：積載社番とトレーラーの両方が必要で、同じ番号でないこと。
   - それ以外：積載社番が必要で、トレーラーは入れないこと。
   - 満たさなければ積載社番・トレーラーを関連エラーにする。
5. **増便の便コード・便名・設定粁**：BU10800P の 4.4 の 8 と同じ。
6. FLG(1)～FLG(32) に '1'（エラー）か '3'（関連エラー）があれば全体エラー。

### 4.4 表示の編集

BU10800P の 4.5 と同じ方法で表示・属性を決める。違う点は次のとおり。

- 傭車会社・傭車標屯・一車保険料・定額傭車料は、OK・関連エラーならチェック後の値（0 は空欄。保険料・傭車料は左詰め）を表示する。傭車形態区分名は 2：ﾄﾝｱﾀﾘ、3：ﾃｲｶﾞｸ、4：* ﾘﾖｳ、0・1：表示しない、それ以外：???? 。
- 乗継店１・２、次運行便発店、フェリー会社、鮮魚保険料は表示を編集しない（画面の値・属性のまま）。
- 運行車区分名の 03 は「10Tｺﾝ」（BU10800P・BU10700P は「31FT」）。
- 入力区分の強調は、入力区分が '0'～'9' なら反転、それ以外（R・D）は通常表示（BU10800P と逆）。

メッセージ・エラーコードは BU10800P と同じ（エラー：ERR 1「エラー項目あり，再入力して下さい。」、OK：OK  2 と入力区分ごとの確認メッセージ）。

---

## 5. メッセージ一覧

BU10800P の 5章と同じ。

---

## 6. 画面遷移

```mermaid
flowchart LR
    BU07[BU07<br/>BU10700P] -- 照会OK 傭車便 --> BV08[BV08<br/>本プログラム]
    BV08 -- 実行（エラー） --> BV08
    BV08 -- 実行（チェックOK） --> BU09[BU09<br/>BU10900P]
    BV08 -- PF2 --> BU07
    BV08 -- PF8・PF9・PF11・その他 --> BV08
    BV08 -- PF3 --> PREV[一つ前の画面]
    BV08 -- PF4 --> MAIN[メインメニュー]
    BV08 -- CLEAR --> END[ELEPHAN 終了]
```

---

## 7. 補足・留意事項

1. **乗務員はダミーのみ**：傭車便では乗務員Ａ・Ｂに 999999（ダミーコード）しか入力できない。乗務員Ａは必須のため、実質的に乗務員Ａに 999999 を入れる。従業員マスターは読まない。
2. **車両マスターを読まない**：積載社番・トレーラーは数字の範囲だけを確認し、車種は傭車標屯から決める。
3. **特定便コードは実質チェックなし**：特定便コードの形式（'Y'＋3桁）を満たさなくても運行車区分が 02 なら OK になる。本プログラムは傭車便（運行車区分 02）だけを扱うため、どんな値でもエラーにならない。
4. **一車保険料の範囲チェック**：0～9999 の範囲チェックの処理があるが、4桁の数字のため常に範囲内で、意味を持たない。
5. **チェックしない項目の値**：乗継店・次運行発店・フェリー会社・鮮魚保険料・運行車区分・形態・乗継員は、画面の入力値を取り込まず、照会結果の値のまま BU10900P に渡す。
6. **傭車形態 '4' への変更**：差額的傭車（'4'）への変更、'4' からの変更は、送付書がない（送付書枚数 0）ときだけできる。
7. **日付の範囲が自社便と違う**：増便の出発日は処理日付の 30日前～7日後（自社便は 10日前～10日後）、定便は計画出発日の 1日前～2日後（自社便は 1日前～3日後）。
8. **指令書NO の表示部分**：BU10800P と同じく、指令書NO のチェック結果で入力店所の属性を変えている（入力店所が入力不可・変更フラグオンになる）。
