プロジェクト

全般

プロフィール

レビュー指摘 #12432 » BV23600P_仕様書.md

幸塚 和久, 2026-10-28 05:17 午後

 

プログラム仕様書 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)と同じ。

  1. 指令書NO で運行指令マスターを更新モードで読む。
  2. 入力年月日(処理日付)をセットする。
  3. 発店が積店として登録されていなければ、積店(最大3店)に発店と出発年月日時分を追加する。
  4. 送付書NO を送付書の一覧に追加する(すでにあり発到区分が '2' なら '3' にする)。
  5. 運行指令マスターを書き換え、結果を 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. 発店が、第1~第3積店の積店所コードのどれかと同じなら何もしない。
  2. 違う場合、積店所数が 3 未満なら 1 増やし、その位置(第1・第2・第3積店)の積店所コードに発店、出発年月日時分に「年月日×10000+時分」をセットする。積店所数が 3 なら何もしない。

3.3 送付書の追加

  1. 送付書の一覧(送付書枚数分)から、受信した送付書NO と同じものを探す。同じ送付書NO で発到区分が '2' のものがあれば、発到区分を '3' にする。
  2. 1 に当たるものがなければ、送付書枚数を 1 増やし、その位置に送付書NO をセットする。取消区分を空白、発到区分を '1' にする。
  3. レコード長を「650+7×送付書枚数」にして運行指令マスターを書き換える。

3.4 送受信・エラー処理

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

4. 補足・留意事項

  1. 発到区分・取消区分の一括設定:新しく送付書を追加するとき、発到区分・取消区分を添え字なしでセットしている(「VBKBHTKB = '1'」「VBKBTKID = ' '」)。PL/I では配列全体への代入になるため、追加した送付書だけでなく、一覧のすべての送付書の発到区分が '1'、取消区分が空白になる。
  2. 同じ送付書NO の再登録:同じ送付書NO がすでに一覧にあっても、発到区分が '2' でなければもう1件追加される。BV13500P はセンターに送付書があっても新規(区分 '2')として扱うため(BV13500P_仕様書.md 7章 1)、再入力すると同じ送付書NO が重ねて追加される場合がある。
  3. 積店が4店以上:積店所数が 3 の場合は、発店が積店になくても追加しない(エラーにもしない)。
  4. 書換えの結果を判定しない:運行指令マスターの書換えに失敗しても、エラーフラグは '0' のまま返す(CICS のエラー処理に入った場合を除く)。
  5. DDP 側の判定:自社便版と違い、DDP の BV13600P はエラーフラグが '0' 以外なら「センター登録エラー」にする(BV13600P_仕様書.md 4.5)。
  6. 使っていない項目:受信データの着店・運行車区分・積区分は使っていない。
(1-1/6)