# プログラム仕様書　BU20700P（配車修正入力　センター照会）

| 項目 | 内容 |
|---|---|
| システムID | BU |
| 参考資料 | ・現行ソース BU20700P.pl1<br/>・現行の解析資料 BU0070_配車修正入力.xlsx（シート「資産一覧」「レコードフォーマット」「SRC_BU20700P」）<br/>・呼出し元の仕様書 [BU10700P_仕様書.md](BU10700P_仕様書.md) |
| 項目名の出典 | 受渡し項目（DPCEB05U・CEDPBU07）・マスターの項目は解析資料のシート「レコードフォーマット」の日本語名称 |

---

## 1. 概要

| 項目 | 内容 |
|---|---|
| プログラムID | BU20700P（手続き名：BU20700） |
| プログラム名称 | 配車修正入力　センター照会 |
| 言語 | PL/I（CICS コマンドレベル） |
| 処理形態 | オンライン（APPC 会話の相手側。画面なし） |
| 動作環境 | CIC1（センター側） |
| プロセス名（トランザクションID） | B07U |
| パターンID | PPOC030P（1987/04/30）、業務 BUSHRE30 |
| 呼出し元 | BU10700P（DDP の BU07）。SYSID 'CIC1'、プロセス 'B07U' で接続 |
| 参照ファイル | VKUNKSH（運行指令マスター）、VKFIXNW（計画便マスター（ＮＥＷ）） |
| 呼出しモジュール | LSS0030A（応答コードの16進表示への変換） |

### 1.1 機能概要

DDP（BU10700P）から指令書ＮＯ を受け取り、運行指令マスターを読んで、配車修正に必要な項目を編集して返す。マスターの更新はしない。

```mermaid
flowchart LR
    DDP[BU10700P<br/>DDP BU07] -- 指令書ＮＯ 35バイト --> C[BU20700P<br/>CIC1 B07U]
    C --> UNK[(VKUNKSH<br/>運行指令マスター)]
    C --> FIX[(VKFIXNW<br/>計画便マスター)]
    C -- 照会結果 250バイト --> DDP
```

---

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

### 2.1 受信データ（IN_DATA：35バイト）

| 項目ID | 項目名 | 内容 |
|---|---|---|
| SESS_TRID | トランザクションID | 'B07U' |
| SESS_SPEC | 予備 | |
| UNKTRID | トランザクションID | 'B07U' |
| UNKDTID | データ区分 | 空白 |
| UNKSHIN | 指令書ＮＯ | 9桁。運行指令マスターのキー |
| UNKSPE1 | ＳＰＡＣＥ | |

### 2.2 送信データ（OUT_DATA：250バイト）

| 項目ID | 内容 |
|---|---|
| SESS_SEN_TRID | 'BU07' |
| SESS_ERR_FLG | エラーフラグ。常に '0' |
| SESS_ERR_CODE | エラーコード。通常 'B000'、マスターの読込みエラー時は応答コード（16進表示） |
| SESS_SEND_DATA（CEDPBU07） | 配車修正照会後データ（3章） |

---

## 3. 処理仕様

### 3.1 処理の流れ

1. DDP からのデータを受信する。
2. 送信域をクリアし、エラーフラグ '0'、エラーコード 'B000' をセットする。
3. 運行指令マスター（VKUNKSH）を指令書ＮＯ で読む。
4. 読めたら 3.2 のとおり送信域を編集する。読めなければ 3.3。
5. 送信域の入力年月日に運行指令マスターの入力年月日（年・月・日）をセットする（読めなかった場合も同じ領域の値をセットする）。
6. 送信データ（250バイト）を送信して応答を待ち（INVITE WAIT）、DDP からの終了データを受信して終了する。

### 3.2 運行指令マスターがある場合の編集

入力結果を '0' にして、次の値をセットする。

| 送信項目 | 項目名 | 運行指令マスターの項目（編集） |
|---|---|---|
| UNKSHNO | 指令書ＮＯ | 指令書ＮＯ（VBKBSRSH） |
| UNKSHCN | 指令書発行枚数 | 指令書発行枚数（VBKBSHIC） |
| UNKSHYM | 指令月日 | 指令年月日（＝出発年月日）（VBKBSRDD）の月日 |
| UNKBNCD | 計画便コード | 計画便コート゛（VBKBKEIK） |
| UNKBNNM | 便名（漢字） | 便名（漢字）（VBKBKANG）のシフトコードを除いた16桁 |
| UNKKUBN | 運行車区分 | 運行車区分（VBKBYKKN） |
| UNKKEIT | 運行形態区分 | 運行形態（VBKBUKTI） |
| UNKINKB | 入力区分 | 入力区分（VBKBNURK） |
| UNKSTID・UNKSTTC | 発支社区分・発店 | 入力区分が 0・9 なら計画の支社区分（VBKKKHSK）・発店コート゛（VBKKKHCD）、それ以外は実績の支社区分（VBKGJHSK）・発店コート゛（VBKGJHCD） |
| UNKENID・UNKENTC | 最終卸支社区分・最終卸店 | 入力区分が 0・9 なら計画の支社区分（VBKKKCSK）・着店コード（最終卸店）（VBKKKCCD）、それ以外は実績（VBKGJCSK・VBKGJCCD） |
| UNKSTYY～UNKSTMI | 出発　年・月・日・時・分 | 予定年月日時分（出発）（VBKYATIM） |
| UNKENYY～UNKENMI | 最終卸店到着　年・月・日・時・分 | 予定年月日時分（到着）（VBKYBTIM） |
| UNKFUID・UNKFUTC | 次運行発支社・次運行発店 | 指令書ＮＯ の8桁目が発行枚数と同じ（最終枚）で、運行車区分が 02 以外、増定減便区分（VBKBZTGK）が 2 なら、支社区分は空白、店所は配車で予定の店所コード（VBKGDTEN。0 なら計画便マスターより の店所コード VBKYCTEN）。それ以外は支社区分（VBKGSSID）・実績店所コート゛（VBKGJTCD） |
| UNKCARS・UNKTONS・UNKSYAS | 積載社番・標屯・車種 | 1台目の車種（VBKGSAS1）が 'F' なら2台目（車番 VBKGSBN2・標屯 VBKGFYT2・車種 VBKGSAS2）、それ以外は1台目（VBKGSBN1・VBKGFYT1・VBKGSAS1） |
| UNKCART・UNKTONT・UNKSYAT | トレーラ頭・コンテナ車（社番・標屯・車種） | 上と逆の1台（車種が 'F' なら1台目、それ以外は2台目） |
| UNKDRIA・UNKDRIB | 乗務員　Ａ・Ｂ | 乗務員コート゛（VBKGJMIN・VBKGBJMI） |
| UNKNTI1・UNKNTC1 | 乗継店１支社区分・乗継店１ | 空白・乗り継ぎ店コード（VBKKNRT1） |
| UNKND1A・UNKND1B | 乗継員１Ａ・１Ｂ | 乗務員コート゛（VBKGCJMI・VBKGDJMI） |
| UNKNTI2・UNKNTC2 | 乗継店２支社区分・乗継店２ | 空白・乗り継ぎ店コード（VBKKNRT2） |
| UNKND2A・UNKND2B | 乗継員２Ａ・２Ｂ | 乗務員コード（VBKGEJMI・VBKGFJMI） |
| UNKGHKB・UNKGHCD・UNKGHTC | 直配区分・直配着地コード・直配着地最寄りの店所 | 直配区分（VBKBHIKB）・直配着地コード（VBKBHICD）・直配着地標準最終扱店所（VBKBHITC） |
| UNKINFO | 連絡事項 | 連絡事項（漢字）（VBKBRENR） |
| UNKKBID・UNKTKNO | 特定便区分・特定便ＮＯ | 特定便区分（VBKBKBID）・特定便ＮＯ（VBKBTKCD） |
| UNKFISH | 一車保険料（自社、鮮魚の場合） | 一車保険料（自社鮮魚）（VBKBHOKN） |
| UNKSOFI・UNKSOFD | 送付書枚数・取消送付書枚数 | 送付書枚数（VBKBSOFM）・取消送付書枚数（VBKBTRKS） |
| UNKSAIT | 最低保障区分 | 使用形態（VBKGKITI）が 2 で定額傭車料（VBKGTGKU）が 0 でなければ 1、それ以外 0 |
| UNKYOSK | 傭車使用形態 | 自動車利用運送区分（VBKKSAGK）が '1' なら 4（差額的傭車）、それ以外は使用形態（VBKGKITI） |
| UNKYSRY・UNKYOSH | 定額傭車料・一車保険料（傭車の場合） | 定額傭車料（VBKGTGKU）・一車保険料（傭車）（VBKGYOHO） |
| UNKNAMC | 便名（カナ） | 便名（カナ）（VBKBKANA） |
| UNKSEKM | 設定粁 | 計画設定粁（VBKKKSKM） |
| UNKSYMD | 計画出発年月日 | 計画出発年月日（VBKBKYMD） |
| UNKKDAY | 計画最終卸経過日数 | 指令書ＮＯ の1桁目が 9（増便）なら 0。定便は計画便マスター（VKFIXNW）を計画便コードで読み、計画の最終卸経過日数（VBKKSKDY）。読めなければ 1 |
| UNKYOSC | 傭車会社コード | 運行車区分が 02 なら、フェリー会社・傭車コード（VBKGFYCD） |
| UNKFRCD | フェリー、ライナーコード | 運行車区分が 02 以外なら、フェリー会社・傭車コード（VBKGFYCD） |

### 3.3 運行指令マスターがない・読めない場合

| 条件 | 編集 |
|---|---|
| レコードがない（NOTFND） | 指令書ＮＯ に受信した指令書ＮＯ、入力区分を 6 にする |
| その他の読込みエラー | 指令書ＮＯ に受信した指令書ＮＯ、入力区分を 7 にし、応答コード（EIBRCODE の先頭2バイト）を LSS0030A で16進表示に変換してエラーコードにセットする |

どちらもエラーフラグは '0' のまま。DDP（BU10700P）は入力区分 6・7 を見てエラーメッセージを表示する。

---

## 4. 補足・留意事項

1. **エラーフラグを使わない**：マスターがない・読めない場合もエラーフラグは '0' で、入力区分（6・7）で結果を返す（エラーフラグ '2' をセットする処理はコメントになっている）。
2. **入力年月日**：送信域の入力年月日は、運行指令マスターを読めなかった場合も、作業域に残っている値（運行指令マスターの入力年月日の領域）をセットする。
3. **傭車会社とフェリー会社の兼用**：運行指令マスターの「フェリー会社・傭車コード」1項目を、運行車区分が 02（傭車）なら傭車会社コード、それ以外ならフェリー会社コードとして返す。
4. **送受信の長さ**：受信 35バイト、送信 250バイト。送信後に DDP から 1バイトの終了データを受信してから終了する。
