# プログラム仕様書　BV28000P（他社直卸し中継渡し入力（委託票）　センター照会）

| 項目 | 内容 |
|---|---|
| システムID | BV |
| 参考資料 | ・現行ソース BV28000P.pl1<br/>・現行の解析資料 BV0190_到着入力（他社直卸中継渡し）.xlsx（シート「資産一覧」「レコードフォーマット」「SRC_BV28000P」） |
| 項目名の出典 | マスターの項目は解析資料のシート「レコードフォーマット」の日本語名称 |

---

## 1. 概要

| 項目 | 内容 |
|---|---|
| プログラムID | BV28000P（手続き名：BV28000） |
| プログラム名称 | 他社直卸し中継渡し入力（委託票）センター照会（ソースの冒頭コメントは「ＫＳＤＳ・ＵＰＤＡＴＥ　センター　ＣＩＣＳ」。処理内容から命名） |
| 言語 | PL/I（CICS コマンドレベル） |
| 処理形態 | オンライン（APPC 会話の相手側。画面なし） |
| 動作環境 | CIC1（センター側） |
| トランザクションID | B80V（DDP の BV18000P から CONNECT PROCESS で起動される） |
| パターンID | PPOC050P（1987/05/06）、業務 BXHEAD30 |
| 呼出し元 | BV18000P（BV80）。DDP の送付書マスターに送付書がない場合だけ呼ばれる |
| 参照ファイル | VKUNKSH（運行指令マスター）、VKSFSNO（送付書送り状ＮＯマスター）。いずれも参照のみ |

### 1.1 機能概要

DDP から受け取った指令書ＮＯ・送付書ＮＯ で、指令書にその送付書が登録されているかを確認し、送付書送り状ＮＯマスターから送付書の発送情報を返す。DDP はこの情報で DDP の送付書マスターにレコードを作る。

```mermaid
flowchart LR
    DDP[DDP BV18000P<br/>BV80] -- 照会データ 21バイト --> B80V[B80V<br/>本プログラム]
    B80V -- 照会結果 50バイト --> DDP
    B80V --> UNK[(VKUNKSH<br/>運行指令マスター)]
    B80V --> SFS[(VKSFSNO<br/>送付書送り状ＮＯマスター)]
```

---

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

### 2.1 受信データ（21バイト）

| 項目ID | 項目名 | 桁 | 用途 |
|---|---|---|---|
| SESS_TRID | トランザクションID | 4 | 'B80V' |
| B80VSFNO | 送付書ＮＯ | 8 | 指令書の送付書の一覧との照合、送付書送り状ＮＯマスターのキー |
| B80VSRNO | 指令書ＮＯ | 9 | 運行指令マスターのキー |

### 2.2 送信データ（50バイト）

送信前に全体を空にし、エラーフラグを '0' にする。

| 項目ID | 内容 | 編集元 |
|---|---|---|
| SESS_ERR_FLG | エラーフラグ | '0'：正常、'1'：指令書・送付書がない、'2'：CICS のエラー |
| SESS_ERR_CODE | エラーコード | CICS のエラーのとき 'ZZZZ'、それ以外は空白 |
| BV80YYMD | 到着予定年月日 | 送付書送り状ＮＯマスターの年月日（VSHSTYMD）。0 なら運行指令マスターの予定年月日時分（VBKYBTIM、11桁）の2～7桁目（年月日） |
| BV80DKB1 | データ区分 | 1 |
| BV80ORTN | 卸店コード | 到着店所コート゛（VSHSTTCD） |
| BV80SHKB | 運行車区分 | 運行車区分（VSHSHUNK） |
| BV80HYMD | 発送年月日 | 発送年月日（VSHSHYMD） |
| BV80HTIM | 出発時分 | 発送時分（VSHSHTIM） |
| BV80TUTN | 積店コード | 店所コート゛（VSHSTNCD） |
| BV80YSCD | 傭車会社コード | 傭車会社コード（VSHSYOSY） |
| BV80SHBN | 車番 | 社番（VSHSSYBN） |
| BV80DUMY | 予備 | 空白 |

---

## 3. 処理仕様

### 3.1 処理の流れ

```mermaid
flowchart TD
    S([開始]) --> RCV[照会データを受信]
    RCV --> R1[運行指令マスターを指令書ＮＯで読む]
    R1 -- なし・エラー --> E1[エラーフラグ 1]
    R1 -- あり --> L{送付書の一覧に<br/>送付書ＮＯ がある}
    L -- ない --> E1
    L -- ある --> Y[予定年月日時分から<br/>到着予定年月日をセット]
    Y --> R2[送付書送り状ＮＯマスターを<br/>送付書ＮＯで読む]
    R2 -- なし・エラー --> E1
    R2 -- あり --> F0[発送情報を編集<br/>エラーフラグ 0]
    E1 --> SND
    F0 --> SND[結果を送信<br/>終了データを受信して終了]
```

### 3.2 指令書・送付書の確認

1. 指令書ＮＯ で運行指令マスター（VKUNKSH）を読む。読めなければ（なし・読込みエラーとも）エラーフラグ '1'。
2. 送付書の一覧（送付書枚数 VBKBSOFM 件分の送付書ＮＯ VBKBSENO）から、受信した送付書ＮＯ を探す。なければエラーフラグ '1'。
3. あれば、予定年月日時分（VBKYBTIM）の年月日を到着予定年月日にセットする。

### 3.3 送付書の発送情報の取得

1. 送付書ＮＯ で送付書送り状ＮＯマスター（VKSFSNO）を読む。読めなければ（なし・読込みエラーとも）エラーフラグ '1'。
2. 読めたら 2.2 のとおり編集する。年月日（VSHSTYMD）が 0 でなければ、到着予定年月日をその値で置き換える。

### 3.4 送受信・エラー処理

1. 結果（50バイト）を送信して応答を待ち（SEND INVITE WAIT）、DDP からの終了データを受信して終了する。
2. CICS のエラー（HANDLE CONDITION ERROR）が発生した場合は、送信データを空にし、エラーフラグ '2'、エラーコード 'ZZZZ' にして送信する。

---

## 4. 補足・留意事項

1. **読込みエラーも「なし」と同じ扱い**：運行指令マスター・送付書送り状ＮＯマスターの読込みで、レコードなし以外のエラーでもエラーフラグ '1' を返す。
2. **送付書の状態を確認しない**：送付書の一覧の発到区分・取消区分は確認せず、送付書ＮＯ があれば正常とする。
3. **データ区分は常に 1**：正常時のデータ区分は常に 1（発送あり）を返す。
4. **DDP 側の扱い**：DDP の BV18000P は、エラーフラグが '0' 以外ならエラーコードに関係なく「送付書未登録、出発入力後実行して下さい。」を表示する（BV18000P_仕様書.md 4.3）。
5. **使っていない項目**：運行指令マスターの項目は、送付書の一覧と予定年月日時分だけを使う。
