プログラム仕様書 BV23600P(他社直卸分発送伝票送付書(傭車便) センター登録)
| 項目 |
内容 |
| システムID |
BV |
| 参考資料 |
・現行ソース BV23600P.pl1 ・現行の解析資料 BV0180_他社直卸出発入力(傭車.xlsx(シート「資産一覧」「Link XCTL 一覧」「レコードフォーマット」「SRC_BV23600P」) |
| 項目名の出典 |
送受信データ・マスターの項目は解析資料のシート「レコードフォーマット」の日本語名称 |
1. 概要
| 項目 |
内容 |
| プログラムID |
BV23600P(手続き名:BV23600) |
| プログラム名称 |
他社直卸分発送伝票送付書(傭車便)センター登録(ソースの冒頭コメントは空欄。処理内容から命名) |
| 言語 |
PL/I(CICS コマンドレベル) |
| 処理形態 |
オンライン(APPC 会話の相手側。画面なし) |
| 動作環境 |
CIC1(センター側) |
| トランザクションID |
B36V(DDP の BV13600P から CONNECT PROCESS で起動される) |
| パターンID |
PPOC050P(1987/05/06)、業務 BXHEAD30 |
| 呼出し元 |
BV13600P(BV36)。新規の送付書(区分 '2'・'5')のときだけ呼ばれる |
| 更新ファイル |
VKUNKSH(運行指令マスター)更新 |
| 呼出しモジュール |
SC20100P(日付取得、LINK)、LSS0030A(応答コードの16進文字変換) |
1.1 機能概要
DDP で入力した新規の送付書を、センターの運行指令マスターに登録する。処理内容は自社便版(BV23200P)と同じ。
- 指令書NO で運行指令マスターを更新モードで読む。
- 入力年月日(処理日付)をセットする。
- 発店が積店として登録されていなければ、積店(最大3店)に発店と出発年月日時分を追加する。
- 送付書NO を送付書の一覧に追加する(すでにあり発到区分が '2' なら '3' にする)。
- 運行指令マスターを書き換え、結果を DDP に返す。
flowchart LR
DDP[DDP BV13600P<br/>BV36] -- 送付書データ 42バイト --> B36V[B36V<br/>本プログラム]
B36V -- 結果 22バイト --> DDP
B36V <--> UNK[(VKUNKSH<br/>運行指令マスター)]
B36V -- LINK --> SC[SC20100P<br/>日付取得]
2. インターフェース
2.1 受信データ(42バイト)
トランザクションID(4)+ DPCEB36V。
| 項目ID |
項目名 |
桁 |
用途 |
| B36VSRNO |
指令書NO |
9 |
運行指令マスターのキー |
| B36VSOFN |
送付書NO |
8 |
送付書の一覧に追加 |
| B36VSYMD |
年月日 |
6 |
積店の出発年月日時分 |
| B36VDHMM |
時分 |
4 |
同上 |
| B36VSTNC |
発店 |
4 |
積店の店所コード |
| B36VSRCT |
着店 |
4 |
使用しない |
| B36VBNKB |
運行車区分 |
2 |
使用しない |
| B36VTSKB |
積区分 |
1 |
使用しない |
2.2 送信データ(22バイト)
エラーフラグ(1)+エラーコード(4)+ CEDPBV36(指令書NO・送付書NO)。送信前に全体を空にし、エラーフラグを '0' にする。CEDPBV36 の指令書NO・送付書NO はセットしない。
| エラーフラグ |
意味 |
エラーコード |
| '0' |
正常(運行指令マスターを更新した) |
空白 |
| '1' |
運行指令マスターに指令書がない |
空白 |
| '2' |
読込みエラー、CICS のエラー |
読込みエラーのときは応答コード(EIBRCODE の先頭2バイト)を16進文字に変換した値 |
2.3 運行指令マスター(VKUNKSH)の更新項目
| 項目 |
内容 |
| 入力年月日(処理日付)(VBKINYMD) |
SC20100P で取得した日付 |
| 積店所数(VBKGTTSU) |
発店が第1~第3積店のどれでもなく、積店所数が 3 未満なら 1 増やす |
| 第1~第3積店 積店所コード(VBKGETEN・VBKGFTEN・VBKGGTEN) |
増やした積店所数の位置に発店をセット |
| 第1~第3積店 出発年月日時分(VBKGETIM・VBKGFTIM・VBKGGTIM) |
同じ位置に「年月日×10000+時分」をセット |
| 送付書枚数(VBKBSOFM) |
送付書NO が一覧にない(または発到区分 '2' でない)場合に 1 増やす |
| 送付書NO(VBKBSENO) |
増やした位置に送付書NO をセット |
| 発到区分(VBKBHTKB) |
一覧に同じ送付書NO があり発到区分が '2' なら '3' に変える。新しく追加した場合は '1'(4章 1 参照) |
| 取消区分(VBKBTKID) |
新しく追加した場合は空白(4章 1 参照) |
3. 処理仕様
3.1 処理の流れ
flowchart TD
S([開始]) --> RCV[送付書データを受信]
RCV --> RD[運行指令マスターを更新モードで読む]
RD -- なし --> E1[エラーフラグ 1]
RD -- エラー --> E2[エラーフラグ 2・応答コード]
RD -- あり --> DT[入力年月日をセット<br/>SC20100P]
DT --> TS[積店の追加 3.2]
TS --> SF[送付書の追加 3.3]
SF --> RW[運行指令マスターを書き換え]
E1 --> SND
E2 --> SND
RW --> SND[結果を送信<br/>終了データを受信して終了]
3.2 積店の追加
- 発店が、第1~第3積店の積店所コードのどれかと同じなら何もしない。
- 違う場合、積店所数が 3 未満なら 1 増やし、その位置(第1・第2・第3積店)の積店所コードに発店、出発年月日時分に「年月日×10000+時分」をセットする。積店所数が 3 なら何もしない。
3.3 送付書の追加
- 送付書の一覧(送付書枚数分)から、受信した送付書NO と同じものを探す。同じ送付書NO で発到区分が '2' のものがあれば、発到区分を '3' にする。
- 1 に当たるものがなければ、送付書枚数を 1 増やし、その位置に送付書NO をセットする。取消区分を空白、発到区分を '1' にする。
- レコード長を「650+7×送付書枚数」にして運行指令マスターを書き換える。
3.4 送受信・エラー処理
- 結果(22バイト)を送信して応答を待ち(SEND INVITE WAIT)、DDP からの終了データを受信して終了する。
- CICS のエラー(HANDLE CONDITION ERROR)が発生した場合は、エラーフラグ '2' にして送信する。
4. 補足・留意事項
-
発到区分・取消区分の一括設定:新しく送付書を追加するとき、発到区分・取消区分を添え字なしでセットしている(「VBKBHTKB = '1'」「VBKBTKID = ' '」)。PL/I では配列全体への代入になるため、追加した送付書だけでなく、一覧のすべての送付書の発到区分が '1'、取消区分が空白になる。
-
同じ送付書NO の再登録:同じ送付書NO がすでに一覧にあっても、発到区分が '2' でなければもう1件追加される。BV13500P はセンターに送付書があっても新規(区分 '2')として扱うため(BV13500P_仕様書.md 7章 1)、再入力すると同じ送付書NO が重ねて追加される場合がある。
-
積店が4店以上:積店所数が 3 の場合は、発店が積店になくても追加しない(エラーにもしない)。
-
書換えの結果を判定しない:運行指令マスターの書換えに失敗しても、エラーフラグは '0' のまま返す(CICS のエラー処理に入った場合を除く)。
-
DDP 側の判定:自社便版と違い、DDP の BV13600P はエラーフラグが '0' 以外なら「センター登録エラー」にする(BV13600P_仕様書.md 4.5)。
-
使っていない項目:受信データの着店・運行車区分・積区分は使っていない。