# プログラム仕様書　BS23300P（中継委託明細用　委託料計算・中継確定データ登録）

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

---

## 1. 概要

| 項目 | 内容 |
|---|---|
| プログラムID | BS23300P（手続き名：BS23300） |
| プログラム名称 | 中継委託明細用　委託料計算・中継確定データ登録（ソースの冒頭コメントは「中継委託明細用　ＣｉＣ１（委託料計算）」。1989/06/16 DDP より発荷主コードを受ける。西濃運輸ＯＰＰ対応で RDITSE 書込みを追加） |
| 言語 | PL/I（CICS コマンドレベル、DB2 埋込み SQL） |
| 処理形態 | オンライン（APPC 会話の相手側。画面なし） |
| 動作環境 | CIC1（センター側） |
| トランザクションID | B33S（DDP から CONNECT PROCESS で起動される） |
| パターンID | PPOC010P（1987/04/30）、業務 BXOKRJ00 |
| 呼出し元 | BV18400P（BV84）、BS13300P（BS33） |
| 参照・更新ファイル | VKOMST2・VKOMST1（送り状マスター　ＮＯ１）参照、VKDXHCG（配信荷主変換マスター）参照、VKTYUKA（中継確定データマスター）・VKTYUUN（中継確定データマスター（受付未入力））追加・更新、RDITSE（DB2）追加 |
| 一時記憶 | TSキュー（端末ＣＤ＋タスク番号、2411バイト：他社委託ＣｉＣｓ間データＴＳ（センター）TSITAK00）。運賃計算との受渡し |
| 呼出しモジュール | UC20140P（運賃計算、LINK）、LSO0020（チェックデジットのチェック・生成） |

### 1.1 機能概要

DDP から委託する送り状（最大40件）の情報を受け取り、送り状ごとに委託料（到着経費・委託消費税など）を計算して返す。返した後に、委託会社が中継確定データの対象なら、中継確定データマスター（または西濃ＯＰＰ用の DB2 テーブル）に登録する。

1. 送り状ごとに、送り状マスター（センター）の内容、または DDP から受け取った内容で、運賃計算用のデータを作る。
2. 15件ごと（または最後）に運賃計算（UC20140P）を呼び、到着経費・他社委託粁程・委託消費税などを受け取る。
3. 結果を DDP に返す（ここで DDP との会話は終わる）。
4. 委託会社が中継確定データの対象なら、中継確定データマスター・受付未入力マスターに送り状ごとのデータを書く。西濃ＯＰＰの対象なら RDITSE に書く。

```mermaid
flowchart LR
    DDP[DDP BV18400P・BS13300P] -- 委託送り状 4063バイト --> B33S[B33S<br/>本プログラム]
    B33S -- 委託料の計算結果 4647バイト --> DDP
    B33S --> OKR[(VKOMST2・VKOMST1<br/>送り状マスター)]
    B33S -- LINK --> UC[UC20140P<br/>運賃計算]
    B33S --> DX[(VKDXHCG<br/>配信荷主変換マスター)]
    B33S --> TY[(VKTYUKA・VKTYUUN<br/>中継確定データマスター)]
    B33S --> IT[(RDITSE<br/>西濃ＯＰＰ)]
```

---

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

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

トランザクションID（4）＋ DPCEB33S（他社委託ＣＩＣＳ間データ（ＤＤＰ～センター））。項目は BV18400P_仕様書.md 3.3 を参照。

| 区分 | 主な項目 |
|---|---|
| 共通部 | データ件数（TITKDTKS）、端末ＣＤ（TITKTMCD）、委託会社ＣＤ（TITKITKC）、委託日付（TITKKDYM） |
| 送り状ごと | マスター区分（TITDMSKB）、送り状ＮＯ（TITDOKNO）、発地・着地・個数・重量・割増率・受付店所・受付扱方・配達店所・運賃・料金・立替金・代引（形態・金・ローン・手数料）・到着経費区分（TITDKKBN）・到着経費料金（TITDKRYO）・通し・受付日・発荷主（コード・名）・着荷主名、データカウント |

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

エラーフラグ（1）＋エラーコード（4）＋ 航空・小口の区分（SENTKOKU：40件）＋ CEDPB33S（他社委託ＣＩＣＳ間データ（センター～ＤＤＰ））。

| 項目 | 内容 |
|---|---|
| エラーフラグ | '0'：正常、'1'：CICS のエラー |
| データ件数（SENTDTKN） | 受信したデータ件数 |
| 送り状ごと | 航空・小口の区分（'1'：航空・小口）、状況区分（SENTOKFG：1 送り状マスターなし、2 配達済、3 読込みエラー）、元着区分、送り状ＮＯ、発地・発荷主（コード・名）、着地・着荷主名・電話番号、個数、重量、運賃、料金、保険料、立替金、代引（形態・金・ローン・手数料総額・手数料経費）、到着経費区分（SENTTTAI）・到着経費料金（SENTTTAR）、他社委託粁程（SENTITAK）、消費税含区分（SENTITXX）、委託消費税（SENTITAX）、委託支払税率（SENTIZEI）、マスター区分、データカウント |

### 2.3 運賃計算（UC20140P）との受渡し

| 項目 | 内容 |
|---|---|
| 通信領域（COMMAREA_UNK） | TSキュー名（端末ＣＤ＋タスク番号）、TSキューの長さ（2411）、委託年月日（委託日付）。運賃計算から計算済み区分・委託支払税率（COMM_ZEIPRT）が返る |
| TSキュー（TSITAK00） | 端末ＩＤ・ＴＲＩＤ・データ件数・委託会社ＣＤと、送り状ごと（最大15件）の送り状ＮＯ・発地・着地・個数・重量・割増率・受付店所・受付扱い方・配達店所・運賃・料金計（料金＋保険料）・到着経費区分・発着経費料金・他社委託粁程・発荷主・計算結果区分。計算後に、到着経費区分・発着経費料金・他社委託粁程・消費税含区分・委託消費税・特約８０区分などが返る |

---

## 3. 処理仕様

### 3.1 処理の流れ

```mermaid
flowchart TD
    S([開始]) --> RCV[委託送り状を受信]
    RCV --> LP[送り状ごとに運賃計算用データを作る 3.2]
    LP --> C{15件たまった<br/>または最後}
    C -- はい --> UC[運賃計算 UC20140P 3.3]
    UC --> LP
    C -- いいえ --> LP
    LP -- 全件終了 --> SND[結果を送信して会話終了<br/>SYNCPOINT]
    SND --> DX{配信荷主変換マスター 3.4}
    DX -- 中継確定の対象 --> TY[中継確定データマスターに登録 3.5]
    DX -- 西濃ＯＰＰ --> IT[RDITSE に登録]
    DX -- 対象外 --> E([終了])
    TY --> E
    IT --> E
```

### 3.2 送り状ごとの運賃計算用データの作成

マスター区分（TITDMSKB）で分ける。

| マスター区分 | 処理 |
|---|---|
| 0（DDP に送り状マスターがない、またはレコードタイプ 7） | 送り状ＮＯ（7DR に変換）で送り状マスター（VKOMST2、なければ VKOMST1）を読み、その内容で運賃計算用データと返信データを作る（下表） |
| 0 以外（DDP の送り状マスターの内容がある） | DDP から受け取った内容で運賃計算用データと返信データを作る。元着区分は送り状ＮＯ の先頭3桁で決める（下表）。さらに送り状マスターを読み、あれば電話番号・代引手数料経費・航空・小口の区分・状況区分・到着経費をセンターの値で補う |

送り状マスター（センター）を読んだ場合の主な編集：

| 項目 | 内容 |
|---|---|
| 航空・小口の区分 | 送り状種類（KOKRTYPE）が 3・4、またはレコードタイプ 4 で商品コードが 910（航空）・920（小口）なら '1' |
| 状況区分 | 状況（KOKRJOKY）が 8 なら 2（配達済） |
| 到着経費 | レコードタイプが 1 以外なら、到着経費区分・発着経費料金・他社委託粁程を送り状マスターから取る。経費料金・区分のどちらかが 0 でなければ、到着経費区分を 9 にし、計算結果区分を 1（計算済みの経費を使う）にする |
| 発地・着地・個数・重量・運賃・料金・保険料・立替金・代引・発荷主・着荷主 | 送り状マスターの値 |

送り状マスターがない場合（マスター区分 0）は、状況区分を 1（読込みエラーは 3）にし、発地・着地を '00000' にして、元着区分を送り状ＮＯ で決める。

| 送り状ＮＯ の先頭3桁 | 元着区分 |
|---|---|
| 000～007・010～859 | 1（元払い） |
| 008～009・860～979 | 2（着払い） |

### 3.3 運賃計算と結果の編集

1. 15件ごと（またはデータの最後）に、運賃計算用データを TSキュー（端末ＣＤ＋タスク番号）に書き、運賃計算（UC20140P）を LINK し、計算結果を読み戻して TSキューを削除する。
2. 計算結果区分ごとに返信データにセットする。

| 計算結果区分 | セットする項目 |
|---|---|
| 0・2 | 他社委託粁程、到着経費区分、発着経費料金、消費税含区分、委託消費税、委託支払税率 |
| 1 | 上記に加えて、発地・着地・個数・重量・運賃 |

3. 特約８０区分が 'T' の送り状は、着荷主名の14バイト目に印（HIGH）を入れる。
4. 仮伝（送り状ＮＯ の先頭3桁が 980～989）は、発着経費料金・委託消費税を 0 にする。

### 3.4 結果の送信と中継確定データの対象判定

1. 結果（4647バイト）を送信して会話を終え（SEND LAST）、SYNCPOINT を取る。以降の処理結果は DDP には返らない。
2. 配信荷主変換マスター（VKDXHCG）を「委託会社ＣＤ＋'A'」で読む。

| 結果 | 処理 |
|---|---|
| あり、配信先コード（DXHICODE）が '0259706' で、委託会社ＣＤが下表のどれか | 中継確定データマスターに登録する（3.5） |
| あり、上記以外 | 終了 |
| なし | 「委託会社ＣＤ＋'E'」で読み直す。あり、配信先コードが 2265412（西濃ＯＰＰ）なら、送り状ごとに RDITSE に追加して終了（配信処理区分 '0'：未配信、データ交換コード・配信先コード・委託会社・委託日付・送り状ＮＯ・ＴＲＩＤ・端末ＣＤ・入力日時）。それ以外・なしは終了。読込みエラーはコンソールに出して終了 |
| 読込みエラー | コンソールにエラーを出して終了 |

中継確定データの対象の委託会社ＣＤ（ソースに直接記述）：0335811、0497546、0370990、0372475、1265471、1292432、1740762・1740770・1740788（2004/05/12 追加：トナミ　ＸＥＢＩＯ）、1820895・1820944・1820952・1821041・1821009・1821033・1820960・1820986・1820994（2006/09/28 追加：トナミ　委託変更）、1983320・1983338（2011/10/03 追加：トナミ福井卸開始）。

### 3.5 中継確定データマスターへの登録

送り状ＮＯ が 0 より大きい送り状ごとに、中継確定データ（TYUKAKUT）を作る。

| 項目 | 内容 |
|---|---|
| 委託先コード・送り状ＮＯ（キー） | 配信先コード・送り状ＮＯ |
| 委託会社・委託年月日・委託店 | 委託会社ＣＤ・処理日（システム日付）・配達店所 |
| データ区分・配信区分 | '1'・0（未配信） |
| 元着区分・受付店・受付年月日 | 元着区分・受付店所・900000＋受付日下5桁（0 なら 0） |
| 発地・発荷主コード・発荷主名、着地・着荷主名・電話番号 | 返信データの値 |
| 個数・重量・割増率・運賃 | 返信データの値 |
| 料金 | 料金＋代引手数料総額 |
| 保険料等 | 保険料＋立替金 |
| ローン・代引金・経費料金 | 代引ローン・代引金・発着経費料金 |
| 代引手数料経費 | 代引手数料総額÷2（四捨五入） |
| 消費税 | 委託消費税＋代引手数料経費×委託支払税率÷100（四捨五入） |
| 委託年月日（TUKKDYMD） | 委託日付 |

| 条件 | 登録先 |
|---|---|
| 状況区分が 0・2 で、マスター区分が 0・1 | 中継確定データマスター（VKTYUKA、マスター区分 1）。すでにある場合は、配信区分が 0（未配信）なら書き換え、配信済みなら書き換えない |
| 上記以外 | 中継確定データマスター（受付未入力）（VKTYUUN、マスター区分 0）。すでにある場合は何もしない |

送り状ごとに SYNCPOINT を取る。書込みエラーはコンソールに出して続ける。

---

## 4. 補足・留意事項

1. **DDP に返してから登録する**：中継確定データの登録は DDP に結果を返した後に行うため、登録のエラーは DDP に伝わらない（コンソールに出すだけ）。
2. **CICS のエラー時**：CICS のエラーでは、エラーフラグ '1' にしてその時点の内容を返す。
3. **固定値の判定**：中継確定データの対象の配信先コード（'0259706'）・委託会社ＣＤ（18件）、西濃ＯＰＰの配信先コード（2265412）、元着区分・仮伝の送り状ＮＯ の範囲がソースに直接書かれている。
4. **受付年月日の編集**：受付日の下5桁（年1桁＋月日）に 900000 を足して受付年月日にしている（年の上位桁を 9 とみなす編集）。
5. **委託年月日の2種類**：中継確定データの委託年月日（TUKITYMD）は処理日（システム日付）、TUKKDYMD は DDP から受け取った委託日付をセットしている。
6. **結果の編集位置**：計算結果を返信データに入れる位置（VCNT）は、計算結果区分が 0・1・2 の送り状だけ進める。ほかの区分があると、以降の送り状とずれる。仮伝の判定はその位置の送り状ＮＯ で行う。
7. **航空・小口の区分**：航空・小口の区分を返すが、DDP の BV18400P・BS13300P ではこのエラーがコメントアウトされている。
