# プログラム仕様書　BV28300P（他社直卸し中継渡し入力（委託票）　送り状ＮＯ のセンター照会）

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

---

## 1. 概要

| 項目 | 内容 |
|---|---|
| プログラムID | BV28300P（手続き名：BV28300） |
| プログラム名称 | 他社直卸し中継渡し入力（委託票）送り状ＮＯ のセンター照会（ソースの冒頭コメントは空欄。処理内容から命名） |
| 言語 | PL/I（CICS コマンドレベル） |
| 処理形態 | オンライン（APPC 会話の相手側。画面なし） |
| 動作環境 | CIC1（センター側） |
| トランザクションID | B83V（DDP の BV18300P から CONNECT PROCESS で起動される） |
| パターンID | PPOC010P（1987/04/30） |
| 呼出し元 | BV18300P（BV82 から XCTL） |
| 参照ファイル | VKSFSNO（送付書送り状ＮＯマスター）参照のみ |

### 1.1 機能概要

DDP から受け取った送付書ＮＯ で送付書送り状ＮＯマスターを読み、送付書に含まれる送り状ＮＯ の一覧を、削除分を除き昇順に並べて DDP に返す。

```mermaid
flowchart LR
    DDP[DDP BV18300P] -- 送付書ＮＯ 12バイト --> B83V[B83V<br/>本プログラム]
    B83V -- 送付書送り状ＮＯマスター 7068バイト --> DDP
    B83V --> SFS[(VKSFSNO<br/>送付書送り状ＮＯマスター)]
```

---

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

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

| 項目ID | 項目名 | 桁 | 用途 |
|---|---|---|---|
| SESS_TRID | トランザクションID | 4 | 'B83V' |
| B83VSFNO | 送付書ＮＯ | 8 | 送付書送り状ＮＯマスターのキー |

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

| 項目ID | 内容 |
|---|---|
| SESS_ERR_FLG | エラーフラグ。'0'：正常、'1'：送付書送り状ＮＯマスターが読めない |
| SESS_ERR_CODE | エラーコード。常に空白 |
| BV83AREA（7063バイト） | 送付書送り状ＮＯマスター（SOHFUSNO）のレコード。送り状ＮＯ の一覧を 3.2 のとおり編集したもの。読めない場合は空白 |

レコードのうち DDP（BV18300P）が使うのは、送り状枚数（送り状データ件数）（VSHSOKCN）と発送送り状ＮＯ（VSHSOKNO(n)）。

---

## 3. 処理仕様

### 3.1 処理の流れ

```mermaid
flowchart TD
    S([開始]) --> RCV[送付書ＮＯ を受信]
    RCV --> RD[送付書送り状ＮＯマスターを読む]
    RD -- 読めない --> E1[エラーフラグ 1]
    RD -- 読めた --> C{送り状枚数 ＞ 1}
    C -- はい --> ED[削除分を除き<br/>昇順に並べる 3.2]
    C -- いいえ --> SET
    ED --> SET[レコードを送信データにセット]
    E1 --> SND
    SET --> SND[結果を送信して終了]
```

### 3.2 送り状ＮＯ の一覧の編集

送り状枚数が 2 以上の場合だけ行う。

1. 送り状の一覧（送り状枚数分）のうち、削除区分（VSHSKRKB）が 9 の送り状ＮＯ を 99999999999 にし、その件数を数える。
2. 一覧を送り状ＮＯ の昇順に並べ替える（削除区分も一緒に入れ替える）。削除分（99999999999）は末尾に集まる。
3. 送り状枚数から削除分の件数を引き、末尾の削除分の欄の送り状ＮＯ・削除区分を 0 にする。

### 3.3 送信・エラー処理

1. 結果（7068バイト）を送信して会話を終える（SEND LAST）。
2. CICS のエラー（HANDLE CONDITION ERROR）が発生した場合は、そのまま送信する（エラーフラグは変えない）。

---

## 4. 補足・留意事項

1. **削除件数の初期値**：削除分の件数を数える作業域（ZCNT）に初期値を設定していないため、件数が正しく数えられない可能性がある。
2. **送り状枚数が1件の場合**：送り状枚数が 1 以下の場合は編集をしないため、1件の送り状が削除済みでもそのまま返る。
3. **CICS のエラー時**：エラーフラグを '2' などにせず送信するため、DDP では正常として扱われる場合がある。
4. **エラーコードを返さない**：読めない場合もエラーコードは空白。DDP の BV18300P はセンターのエラーを画面に表示しない（BV18300P_仕様書.md 7章 2）。
5. **並べ替え**：単純な比較・入れ替えによる並べ替えで、送り状枚数が多いと比較回数が多くなる。
