# プログラム仕様書　BU10600P（配車入力（自社増便・傭車増／定便）確認・更新）

| 項目 | 内容 |
|---|---|
| システムID | BU |
| 参考資料 | ・現行ソース BU10600P.pl1<br/>・画面イメージ MPBU040.jpg（配車入力（増便・傭車））<br/>・現行の解析資料 BU0040_配車入力（自社増）.xlsx（シート「MPBU040」「資産一覧」「レコードフォーマット」「SRC_BU10600P」） |
| 項目名の出典 | 画面項目は解析資料のシート「MPBU040」、送受信データの項目はシート「レコードフォーマット」の日本語名称 |

---

## 1. 概要

| 項目 | 内容 |
|---|---|
| プログラムID | BU10600P（手続き名：BU10600） |
| プログラム名称 | 配車入力（傭車　増、定便）確認（ソースの冒頭コメント。自社増便でも使う） |
| 言語 | PL/I（CICS コマンドレベル） |
| 処理形態 | オンライン（CICS 疑似会話型） |
| 動作環境 | SV（DDP 側） |
| トランザクションID | BU06 |
| パターンID | PPOD255P（1987/05/01）、業務 BUSHRE30、部品 PBOD020P |
| 使用画面（マップ） | MPBU040（配車入力（増便・傭車））、MPDM010（共通ヘッダ画面）、ELEPHAN（終了画面） |
| 前の処理 | BU05（BU10500P：自社増便の検証）、BV05（傭車の検証）。確認メッセージを表示して BU06 で待機している |
| 次の処理 | 更新後は BU06 で待機し、次の実行キーで初期画面（BU04）に戻る。PF5（修正）は BU05／BV05 |
| センター照会 | あり。APPC で CIC1 のトランザクション B06U に更新を依頼（BU20600P） |
| 参照・更新ファイル | なし（更新はセンター側） |
| 起動する印刷 | BV13（BV11300P：自社の指令書）、BV14（BV11400P：傭車の指令書） |
| 一時記憶 | TSキュー（通信領域の TSQ_ID・TSQ_LENGTH。「端末ID＋'BU04'」、724バイト）。印刷用 TSキュー（端末ID＋現在の分秒） |

### 1.1 機能概要

検証が終わった配車内容を、実行キーでセンターに送って更新し、指令書を印刷する。

1. TSキューから検証済みのデータを読み、センター（B06U）に送信して更新結果を受け取る。
2. 更新結果（入力結果）をメッセージで表示する。
3. 印刷装置が指定されていれば、更新できた指令書を印刷する（自社は枝番の印刷を指定すると 2～4枚目も）。
4. PF5 で修正に戻れる（検証画面 BU05・BV05）。

```mermaid
flowchart LR
    BU05[BU05／BV05<br/>検証] -- OK --> BU06[BU06<br/>本プログラム]
    BU06 <-- APPC B06U --> CIC1[(センター CIC1<br/>BU20600P)]
    BU06 -- 印刷 --> PRT[BV13／BV14<br/>指令書印刷]
    BU06 -- PF5 --> BU05
    BU06 -- 更新後の実行 --> BU04[BU04 初期画面]
```

---

## 2. 画面仕様（MPBU040）

画面レイアウト・項目は BU10400P_仕様書.md の 2.1・2.2 と同じ。本プログラムでは画面の入力値は使わず、メッセージ欄（BU04241：エラーメッセージ）とエラーコード欄（BU04242）だけを書き換える。

### 2.1 ファンクションキー

| キー | 機能 | 処理概要 |
|---|---|---|
| 実行（Enter） | 更新 | センターに更新を依頼する（4.2） |
| PF2 | 取消 | TSキューを削除し、BU10400P と同じ初期画面を表示して BU04 に戻る |
| PF3 | 終了 | 印刷装置を解放し（COMM_PRI_FLG ＝ '2' のとき）、一つ前の画面に戻る |
| PF4 | 戻り | 印刷装置を解放し、メインメニューに戻る |
| PF5 | 修正 | 入力項目を入力可にして検証画面に戻る（4.4） |
| PF9 | テスト印刷 | 印刷装置がOKならテスト印刷を出す（BU10500P と同じ）。BU06 で待機 |
| PF11 | 印刷装置リセット | BU10400P と同じ。BU06 で待機 |
| CLEAR | 強制終了 | 印刷装置を解放し、TSキューを削除して終了画面を表示 |
| 上記以外 | 再表示 | 画面のデータ部分を再送信し、BU06 で待機 |

---

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

### 3.1 通信領域（COMMAREA：256バイト）

| 項目ID | 本プログラムでの用途 |
|---|---|
| TSQ_ID・TSQ_LENGTH | 検証済みデータの TSキュー名・長さ |
| COMM_TRM_CODE・COMM_TEN_CODE・COMM_TEN_NAME・COMM_RPOC_YMD | 端末ID・店所・処理日付（初期画面・印刷） |
| COMM_INQ_KBN | 照会区分。'10'：傭車、それ以外：自社増便 |
| COMM_PRI_FLG・COMM_PRINTER_ID | 印刷装置のチェック結果（'2'：OK）・印刷装置ID |
| COMM_EDA | 枝番の印刷（'1'：あり） |
| COMM_PF5 | PF5（修正）を押したら '1' |
| CRT_BACK_KOSU／CRT_BACK_DATA(5) | 戻り先画面のスタック（PF3・PF4） |

### 3.2 TSキュー（CHK_DSP_WORK：724バイト）

BU10500P と同じ形式。後半 419バイト（SEND_DATA）を CEDPBU04（配車入力照会後、検証後データ（増、傭））としてそのままセンターに送る。

### 3.3 センター送受信

| 項目 | 内容 |
|---|---|
| 接続先 | SYSID 'CIC1'、プロセス名 'B06U' |
| 送信（419バイト） | TSキューの SEND_DATA（トランザクションID・エラーフラグ・エラーコード＋CEDPBU04） |
| 受信（54バイト） | トランザクションID（4）＋エラーフラグ（1）＋エラーコード（4）＋トン単価（10進5桁）＋CEDPBU06（配車入力（傭・増）更新後データ　セ＝＞Ｄ） |

受信データ（CEDPBU06）のうち本プログラムで使うもの：

| 項目ID | 項目名 | 用途 |
|---|---|---|
| DNKNYUK | 入力結果 | 更新結果のメッセージ（4.2） |
| UNQSZTC | 所属店 | 傭車の指令書印刷の所属店 |
| UNQDTIM | 道路情報 日時（ＸＸ日ＸＸ時） | 自社の指令書印刷 |
| UNQDONO・UNQDIN1～3 | 道路 Ｎｏ・道路情報コード１～３ | 自社の指令書印刷 |
| SESS_TONTAN | トン単価 | 傭車形態 2（トン当たり）の傭車料として印刷 |

---

## 4. 処理仕様

### 4.1 処理の流れ

```mermaid
flowchart TD
    S([開始]) --> AID{押されたキー}
    AID -- CLEAR --> CLR[印刷装置解放・TSキュー削除<br/>終了画面]
    AID -- PFキー --> PF[ファンクションキー処理 2.1・4.4]
    AID -- 実行 --> RCV[MPBU040 を受信<br/>TSキューを読む]
    RCV -- TSキューなし --> INI[初期画面を表示<br/>Q ERR] --> W04([BU04 で待機])
    RCV -- あり --> DEL[TSキューを削除]
    DEL --> SND[センターに更新を依頼 4.2]
    SND -- 通信エラー・更新エラー --> ERR[TSキューを書き戻し<br/>エラー表示] --> W06([BU06 で待機])
    SND -- OK --> PRT[指令書の印刷 4.3]
    PRT --> MSG[結果メッセージ表示] --> W06
```

### 4.2 更新（実行キー）

1. 画面を受信し、TSキューを読む。
   - 読めない場合（更新が終わった後の実行キーなど）：BU10400P の PF2 と同じ初期画面（照会区分に応じた見出し・メッセージ、印刷装置・枝番の印刷は前回の値）を表示し、エラーコードに「Q ERR」をセットして BU04 で待機する。
   - 読めた場合：TSキューを削除する。
2. センター（CIC1 の B06U）に接続し、TSキューの SEND_DATA（419バイト）を送信して、結果（54バイト）を受信する。受信後に終了を送信してセッションを解放する。
3. 通信エラーの場合は、BU10400P の 4.5 と同じエラーコード（ASYSB・ASYSI・A9999・CTERM・C9999・STERM・S9999・RTERM・RLENG・R9999）をセットし、メッセージを「セッションエラー」＋次の文言にする。回線混雑（ASYSB）は、メッセージを表示して画面を受信し、送信をやり直す。

| エラーフラグ | メッセージ（後半） |
|---|---|
| 7 | 回線不通の可能性あり　センターに連絡　！！ |
| 8 | サポート外ＥＲＲＯＲ　センターに連絡　！！ |
| 9 | ＬＥＮＧＥＲＲ |

4. 正常に受信した場合は、入力結果（DNKNYUK）でメッセージを決める。'2'～'8' はエラー。

| 入力結果 | メッセージ | 判定 |
|---|---|---|
| '1' | 更新ＯＫ！！ | OK（印刷する） |
| '9' | 減便になりました。 | OK |
| '5' | 更新済、次の枝番無し | エラー（印刷する） |
| '4' | 料金マスターに無し | エラー |
| '6' | 指令書マスターに無し | エラー |
| '7' | すでに入力済でした。 | エラー |
| '8' | マスターＩ／Ｏエラー | エラー |
| 'A' | 携帯番号無し？ | OK |
| '0' | （空白） | OK |
| その他 | ？？？？？？ | OK |

5. エラーの場合：TSキューを書き戻し（書けなければ終了処理）、メッセージ・エラーコードをセットして画面のデータ部分を送信し、BU06 で待機する（実行キーで再度更新できる）。
6. OKの場合：印刷（4.3）をしてから、メッセージを反転表示でセットして画面のデータ部分を送信し、BU06 で待機する。TSキューは削除したままなので、次に実行キーを押すと初期画面に戻る。

### 4.3 指令書の印刷

印刷装置がOK（COMM_PRI_FLG ＝ '2'）で、入力結果が '1' または '5' の場合に行う。印刷情報（店所コード、端末ID、印刷装置ID、処理日付、TSキュー名＝端末ID＋現在の分秒）を作り、印刷データを TSキューに書いて、印刷トランザクションを印刷装置で起動する。

**自社増便（照会区分 '10' 以外）**：BVPRIN04 形式、1件 375バイト、BV13 を起動（印刷区分 '4'）。

| 印刷データ | 1枚目 | 2～4枚目（枝番の印刷 '1' のとき、発行枚数まで） |
|---|---|---|
| 指令書ＮＯ | 指令書ＮＯ | 次の運行の指令書ＮＯ |
| 発行枚数・運行車区分 | 指令書発行枚数・運行車区分 | 同左 |
| 計画便コード | 計画便コード | 計画便コードの6桁目を枝番（2～4）にしたもの |
| 便名 | 便名（漢字） | 次の指令書の便名（漢字） |
| 運行形態・入力区分 | 運行形態区分・入力区分 | 次の指令書の運行形態区分・0 |
| 発店・出発日時 | 発店・出発 年月日時分 | 次の指令書の発店・出発 年月日（時分は 0） |
| 最終卸店・次運行発店 | 最終卸店・次運行発店 | 1枚目の最終卸店・次の指令書の次運行発店 |
| 最終卸店到着日時 | 年月日。時分は最終卸店と次運行発店が同じときだけ印刷（違えば 0） | 次の指令書の最終卸店到着 年月日（時分は 0） |
| 積載車番・トレーラー・乗務員Ａ・Ｂ | 1枚目の値 | 1枚目と同じ |
| 直配区分・直配着地コード・連絡事項・特定便区分・特定便ＮＯ・一車保険料（鮮魚） | 1枚目の値 | 印刷しない |
| 所属店 | 発店 | 1枚目の発店 |
| 車種 | 積載車種 T→1、S→2、G→3、'4'→4、その他→0 | 同左 |
| 道路情報 | センターから受け取った道路情報コード・道路Ｎｏ・日時 | 印刷しない |

**傭車（照会区分 '10'）**：BVPRIN02 形式、130バイト、BV14 を起動。

| 印刷データ | 内容 |
|---|---|
| 指令書ＮＯ・発行枚数・計画便コード・便名・運行車区分・運行形態・入力区分 | 1枚目の値 |
| 発店・出発日時、最終卸店・最終卸店到着日時 | 年月日時分 |
| 次運行発店 | 最終卸店（次運行発店ではない） |
| 積載車番・トレーラー・乗務員Ａ・Ｂ・直配区分・直配着地コード・連絡事項 | 1枚目の値 |
| 傭車会社コード・傭車形態・標屯 | 傭車会社コード・傭車使用形態・積載車標屯×10 |
| 傭車料 | 傭車形態が 2（トン当たり）ならセンターから受け取ったトン単価、それ以外は定額傭車料 |
| 一車保険料 | 一車保険料（傭車の場合） |
| 所属店 | センターから受け取った所属店 |
| 車種 | 自社と同じ |
| 携帯管理№ | 特定便区分＋特定便ＮＯ |

### 4.4 PF5：修正

1. TSキューを読んで削除する。読めなければエラーコードに「Q ERR」をセットして画面を送信し、検証画面のトランザクションで待機する。
2. COMM_PF5 を '1' にし、入力可にする項目を次のようにセットする。

| 照会区分 | データ区分 | 入力可にする項目 | カーソル |
|---|---|---|---|
| 傭車 | 'N'（新規） | 傭車会社コード・標屯・傭車形態・一車保険料・定額傭車料（数字）、携帯管理№。指令書№は入力不可 | 傭車会社コード |
| 傭車 | 'D'（既存） | 指令書№ と上と同じ項目 | 指令書№ |
| 自社増便 | 'N' | 発行枚数・運行形態・運行車区分・フェリー会社・鮮魚保険・最終着店コード・次の指令書（２～４－の出発日付・最終卸店・最終卸店到着日・次回運行便出発店所）（数字）。指令書№は入力不可 | 発行枚数 |
| 自社増便 | 'D' | 指令書№ と上と同じ項目 | 指令書№ |
| 共通 | | 発送日 月・日・時・分、積載車番、トレーラー、乗務員Ａ・Ｂ、最終卸店コード、最終卸店着日 月・日・時・分、直配区分、直配着地コード（数字）、連絡事項 | |

3. メッセージ「修正する項目を、入力してください。」を反転表示し、TSキューの全体チェック結果を OK にして入力年月日に処理日付をセットし、TSキューを書く（書けなければ終了処理）。
4. 画面のデータ部分を送信し、傭車は BV05、自社増便は BU05 で待機する（検証画面は全体チェック結果が OK のため全項目をチェックし直す）。

---

## 5. メッセージ一覧

| No | エラーコード | メッセージ | 表示するとき |
|---|---|---|---|
| 1 | ― | 更新ＯＫ！！ | 入力結果 '1' |
| 2 | ― | 減便になりました。 | 入力結果 '9' |
| 3 | ― | 更新済、次の枝番無し | 入力結果 '5' |
| 4 | ― | 料金マスターに無し | 入力結果 '4' |
| 5 | ― | 指令書マスターに無し | 入力結果 '6' |
| 6 | ― | すでに入力済でした。 | 入力結果 '7' |
| 7 | ― | マスターＩ／Ｏエラー | 入力結果 '8' |
| 8 | ― | 携帯番号無し？ | 入力結果 'A' |
| 9 | ASYSB | 回線が混雑しています！！　実行キーをもう一度押して下さい | センターが混雑 |
| 10 | ASYSI・CTERM・STERM・RTERM | セッションエラー　回線不通の可能性あり　センターに連絡　！！ | 通信エラー（7） |
| 11 | A9999・C9999・S9999・R9999 | セッションエラー　サポート外ＥＲＲＯＲ　センターに連絡　！！ | 通信エラー（8） |
| 12 | RLENG | セッションエラー　ＬＥＮＧＥＲＲ | 受信長エラー |
| 13 | Q ERR | 定便＝＞便コード・出発月日、又は指令ＮＯ　　増便＝＞ＰＦ１０ ／ ＰＦ１０を押して、指令書ＮＯを表示してください。 | TSキューがない（更新後の実行キーなど） |
| 14 | ― | 修正する項目を、入力してください。 | PF5 |

---

## 6. 画面遷移

```mermaid
flowchart LR
    BU05[BU05／BV05 検証] --> BU06[BU06<br/>本プログラム]
    BU06 -- 実行（更新OK） --> BU06
    BU06 -- 実行（エラー） --> BU06
    BU06 -- 実行（更新済み・TSなし） --> BU04[BU04 初期画面]
    BU06 -- PF2 --> BU04
    BU06 -- PF5 --> BU05
    BU06 -- PF3 --> PREV[一つ前の画面]
    BU06 -- PF4 --> MAIN[メインメニュー]
    BU06 -- CLEAR --> END[ELEPHAN 終了]
```

---

## 7. 補足・留意事項

1. **更新後の画面**：更新OK後も BU06 で待機し、次の実行キーで TSキューがないため初期画面に戻る。このとき「Q ERR」が表示される。
2. **入力結果 '5' の扱い**：「更新済、次の枝番無し」はエラー扱い（TSキューを書き戻す）だが、指令書は印刷する。ただし、センターの BU20600P は '5' を返さないため、現行では発生しない。
3. **入力結果 'A'**：「携帯番号無し？」はエラーとして扱われない（文字の大小比較で '2'～'8' に入らない）。センター側の携帯番号チェックはコメントアウトされており、現行では発生しない。
4. **傭車の次運行発店**：傭車の指令書印刷では、次運行発店に最終卸店をセットしている。
5. **枝番の印刷で印刷しない項目**：2～4枚目は直配区分・連絡事項・特定便・鮮魚保険・道路情報を印刷しない。
6. **センターのエラーフラグ**：受信データのエラーフラグ・エラーコードは見ていない。センター側の結果は入力結果（DNKNYUK）だけで判断する。
7. **PF5 の携帯管理№**：携帯管理№ は傭車では入力可、自社増便では入力不可にしている（いずれも「M.TANAKA」のコメントがある修正）。
