# プログラム仕様書　BV13700P（他社直卸分発送伝票送付書（傭車便）　次画面の振り分け）

| 項目 | 内容 |
|---|---|
| システムID | BV |
| 参考資料 | ・現行ソース BV13700P.pl1<br/>・画面イメージ MPBV350.jpg（他社直卸分発送伝票送付書（傭車便））<br/>・現行の解析資料 BV0180_他社直卸出発入力（傭車.xlsx（シート「資産一覧」「MPBV350」「SRC_BV13700P」） |
| 項目名の出典 | 画面項目は解析資料のシート「MPBV350」の日本語名。MPBV340 の項目名は自社便版（BV13300P_仕様書.md）と同じ |

---

## 1. 概要

| 項目 | 内容 |
|---|---|
| プログラムID | BV13700P（手続き名：BV13700） |
| プログラム名称 | 他社直卸分発送伝票送付書（傭車便）次画面の振り分け（ソースの冒頭コメントは空欄。処理内容から命名） |
| 言語 | PL/I（CICS コマンドレベル） |
| 処理形態 | オンライン（CICS 疑似会話型） |
| 動作環境 | SV（DDP 側） |
| トランザクションID | BV37 |
| パターンID | PPOD426P（1987/05/01。コメントでは PPOD156P）、業務 BXHEAD30 |
| 使用画面（マップ） | MPBV350（他社直卸分発送伝票送付書（傭車便））、MPBV340（発送伝票送付書（No群））、MPBS080（直集入力の画面）、MPDM010（共通ヘッダ画面）、ELEPHAN（終了画面） |
| 前の処理 | BV36（BV13600P）。送付書を登録し「送付書登録ＯＫ　ＮＯ群または直集受付は実行キー」を表示して BV37 で待機している |
| 次の処理 | 直集軒数が 0 などの場合 → BV34（BV13400P：送り状ＮＯ群の入力、MPBV340）。それ以外 → BS08（BS10800P、MPBS080） |
| センター照会 | なし |
| 参照ファイル | VPTENMS（ＤＤＰ 店所マスター）参照のみ |
| 一時記憶 | TSキュー（通信領域の TSQ_ID・TSQ_LENGTH。「端末ID＋'BV35'」、長さ 300） |

### 1.1 機能概要

BV13600P で送付書を登録した後の実行キーを受け、直集軒数などに応じて次の入力画面に切り替える。画面の入力内容はチェックしない。

| 条件 | 次の画面 |
|---|---|
| 直集軒数 ＝ 0 | 送り状ＮＯ群の入力（MPBV340、BV34） |
| 直集軒数 ≠ 0 で、作業選択番号 ＝ 03 | 送り状ＮＯ群の入力（MPBV340、BV34） |
| 直集軒数 ≠ 0 で、作業選択番号 ≠ 03 | 直集の入力（MPBS080、BS08）。入力ＩＤ '55' を渡す |

```mermaid
flowchart LR
    BV36[BV36<br/>BV13600P 登録] -- 登録OK --> BV37[BV37<br/>本プログラム]
    BV37 -- 直集軒数 0 など --> BV34[BV34<br/>BV13400P 送り状ＮＯ群<br/>MPBV340]
    BV37 -- 直集あり --> BS08[BS08<br/>BS10800P<br/>MPBS080]
    BV37 -- PF3 --> BV35[BV35 初期画面]
```

---

## 2. 画面仕様

### 2.1 受信する画面（MPBV350）

画面レイアウト・項目は BV13500P_仕様書.md の 2.1・2.2 と同じ。本プログラムでは画面の入力値は使わない（TSキューに保存した値を使う）。

### 2.2 次の画面（MPBV340：発送伝票送付書（No群））にセットする項目

| 項目ID | 項目名 | セットする値 |
|---|---|---|
| BV34011 | システム年月日 | `YY/MM/DD` |
| BV34021 | システム時分秒 | `HH:MM:SS` |
| BV34041 | 指令書NO | 指令書ＮＯ |
| BV34051 | 送付書NO | 送付書ＮＯ |
| BV34071～BV34075 | 発送年・発送月・発送日・発送時・発送分 | 発送年・月・日・時・分 |
| BV34081・BV34082 | 発店コード・発地コード | 発店コード・発地コード |
| BV34083 | 発地名 | 発店コードの店所マスターの店所略名（漢字） |
| BV34091・BV34092 | 着店コード・着地コード | 着店コード・着地コード |
| BV34093 | 着地名 | 着店コードの店所マスターの店所略名（漢字） |

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

| キー | 機能 | 処理概要 |
|---|---|---|
| 実行（Enter） | 継続 | 次の画面に切り替える（4.2） |
| PF3 | 取消（初期画面） | 画面をクリアし、TSキューを削除して、共通ヘッダ画面と空の MPBV350 を表示する。BV35（照会）で待機 |
| PF4 | 終了 | TSキューを削除し、戻り先画面のスタックから一つ前の画面に戻る（BV13500P の PF3 と同じ決め方） |
| CLEAR | 強制終了 | TSキューを削除し、終了画面（ELEPHAN）を表示して終了 |
| 上記以外 | 再表示 | MPBV350 のデータ部分を再送信し、BV37 で待機 |

---

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

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

ユーザー受渡しエリアを次のように定義している（BV13500P の作業選択番号 COMM_ITEM_NO は、本プログラムの COMM_ITEM_S3 と同じ位置）。

| 項目ID | 型 | 本プログラムでの用途 |
|---|---|---|
| TSQ_ID・TSQ_LENGTH | | TSキューの名前・長さ |
| COMM_ITEM_S1・COMM_ITEM_S2 | 数字(8) | 直集入力に切り替えるとき、送付書ＮＯ をセット |
| COMM_ITEM_S3 | 数字(2) | 作業選択番号として判定に使う。直集入力に切り替えるとき '55'（入力ＩＤ）をセット |
| COMM_ITEM_S4・COMM_ITEM_S5 | 数字(1)・文字(4) | 直集入力に切り替えるとき 0・'0000' |
| COMM_ITEM_I1～COMM_ITEM_I6 | | 直集入力に切り替えるとき 0（I4 は '0000'） |
| CRT_BACK_KOSU／CRT_BACK_DATA(5) | | 戻り先画面のスタック（PF4） |

### 3.2 TSキュー

1. 読むときは BV13500P・BV13600P と同じ形式（CHK_DSP_WORK：画面項目の保存域、照会結果）。読んだら削除する。
2. 送り状ＮＯ群の入力に切り替えるときは、自社便版（BV31）と同じ形式（CHK_DSP_WORK1）に詰め替えて、同じキュー名で書く。BV34 はこの形式で読む。

| 書く項目（CHK_DSP_WORK1） | セットする値 |
|---|---|
| BV31041B・BV31051B | 指令書ＮＯ・送付書ＮＯ |
| BV31071B～BV31075B | 発送年・月・日・時・分 |
| BV31081B・BV31082B | 発店コード・発地コード |
| BV31091B・BV31092B | 着店コード・着地コード |
| BV31161B・BV31171B | 直卸他社コード・扱事業所コード |
| BV31BNKB | 運行車区分（照会結果、または BV13600P で 02 にした値） |
| BV31SYAB | 傭車番号（4桁） |
| BV31YSCD | 傭車会社コード |
| BV31TCYD | 到着予定年月日 |

先頭62バイト、運行車区分（BV31111B）・積載社番・セミトレ社番・直集軒数・積区分（BV31121B～BV31141B）、訂正区分・輸送粁程・所在地コード・扱店コード（WRK_TEIKB・BUYUSOK・TS31HSYZ・TS31ATKA）などはセットしない（7章 3）。

---

## 4. 処理仕様

### 4.1 処理の流れ

```mermaid
flowchart TD
    S([開始]) --> AID{押されたキー}
    AID -- CLEAR --> CLR[TSキュー削除<br/>終了画面]
    AID -- PFキー --> PF[ファンクションキー処理 2.3]
    AID -- 実行 --> RCV[MPBV350 を受信<br/>TSキューを読んで削除]
    RCV -- TSキューなし・画面データなし --> CLR
    RCV --> J{直集軒数}
    J -- 0 --> V34[MPBV340 を編集<br/>TSキューを BV31 形式で書く]
    J -- 0 以外 --> K{作業選択番号 ＝ 03}
    K -- はい --> V34
    K -- いいえ --> S08[通信領域を編集<br/>MPBS080 を表示]
    V34 --> W34([BV34 で待機])
    S08 --> W08([BS08 で待機])
```

### 4.2 次画面への切替え

1. 画面を受信し、TSキューを読む。キューがなければ終了処理（TSキュー削除・終了画面）へ。あれば削除する。
2. 直集軒数が 0、または作業選択番号（COMM_ITEM_S3）が 03 の場合：
   1. MPBV340 に 2.2 の項目をセットする（発地名・着地名は店所マスターを発店コード・着店コードで読み、なければ空欄）。
   2. TSキューを自社便版の形式で書く（3.2）。
   3. MPBV340 を画面を消去して送信し、BV34 で待機する。
3. それ以外（直集軒数 ≠ 0 で、作業選択番号 ≠ 03）：
   1. 通信領域に、送付書ＮＯ（S1・S2）、入力ＩＤ '55'（S3）、そのほかの受渡し項目の初期値（0・'0000'）をセットする。
   2. TSキューを削除する。
   3. 共通ヘッダ画面（MPDM010）に日時をセットして画面を消去して送信し、MPBS080 をデータなしで送信して、BS08 で待機する。

### 4.3 例外処理

| 発生条件 | 処理 |
|---|---|
| CLEAR キー | TSキューを削除し、終了画面（ELEPHAN）を表示して終了 |
| 画面データなし（MAPFAIL）・レコードなし・ファイルの終わり | CLEAR キーと同じ |
| TSキューがない | CLEAR キーと同じ |

---

## 5. メッセージ一覧

本プログラムで表示するメッセージはない。

---

## 6. 画面遷移

```mermaid
flowchart LR
    BV36[BV36 登録] --> BV37[BV37<br/>本プログラム]
    BV37 -- 実行（直集軒数 0 等） --> BV34[BV34<br/>MPBV340 送り状ＮＯ群]
    BV37 -- 実行（直集あり） --> BS08[BS08<br/>MPBS080 直集入力]
    BV37 -- PF3 --> BV35[BV35 初期画面]
    BV37 -- PF4 --> PREV[一つ前の画面]
    BV37 -- その他 --> BV37
    BV37 -- CLEAR --> END[ELEPHAN 終了]
```

---

## 7. 補足・留意事項

1. **PF3 と PF4 の役割**：PF3 は初期画面（BV35）に戻る「取消」の動き、PF4 は一つ前の画面に戻る「終了」の動き（ソースのコメントも「終了」）で、他の画面の PF2（取消）・PF3（終了）・PF4（戻り）と割当てが違う。メインメニューに戻るキーはない。自社便版（BV13300P）と同じ。
2. **作業選択番号 03 の判定**：直集軒数があっても、作業選択番号が 03 なら送り状ＮＯ群の入力に進む（自社便版は 01）。
3. **TSキューの詰め替え**：送り状ＮＯ群の入力（BV34）は自社便と共通のため、自社便版の TSキューの形式に詰め替えて渡している。詰め替え用の作業域は初期化しておらず、3.2 でセットしない項目（訂正区分・輸送粁程・所在地コード・扱店コードなど）には不定の値が入る。また、作業域は 320 バイトだが、書くのは通信領域の長さ（300 バイト）分だけである。
4. **積載社番の桁**：自社便版の積載社番（5桁）に、傭車番号（車号の下4桁）を入れている。
5. **入力ＩＤ '55'**：直集入力に渡す入力ＩＤは '55'（自社便版は '45'）。センター照会（BV23500P）は選択ＮＯ 55 のとき利用運送の指令書のチェックをしないため、直集入力からの照会では利用運送の指令書も扱える。
6. **発地名・着地名の表示**：MPBV340 の「発地名」「着地名」には、発店・着店の店所名を表示している（地名マスターは読まない）。
7. **入力チェックなし**：実行キー以外のキー（PF3・PF4・CLEAR を除く）は MPBV350 を再表示するだけで、実行キーでは画面の入力値に関係なく次の画面に進む。
