プロジェクト

全般

プロフィール

レビュー指摘 #12454 » BV28100P_仕様書.md

幸塚 和久, 2026-10-29 05:12 午後

 

プログラム仕様書 BV28100P(他社直卸し中継渡し入力(委託票) センター登録)

項目 内容
システムID BV
参考資料 ・現行ソース BV28100P.pl1
・現行の解析資料 BV0190_到着入力(他社直卸中継渡し).xlsx(シート「資産一覧」「Link XCTL 一覧」「レコードフォーマット」「SRC_BV28100P」)
項目名の出典 送受信データ・マスターの項目は解析資料のシート「レコードフォーマット」の日本語名称

1. 概要

項目 内容
プログラムID BV28100P(手続き名:BV28100)
プログラム名称 他社直卸し中継渡し入力(委託票)センター登録(ソースの冒頭コメントは「KSDS・UPDATE センター CICS」。処理内容から命名)
言語 PL/I(CICS コマンドレベル)
処理形態 オンライン(APPC 会話の相手側。画面なし)
動作環境 CIC1(センター側)
トランザクションID B81V(DDP の BV18100P から CONNECT PROCESS で起動される)
パターンID PPOC050P(1987/05/06)、業務 BXHEAD30
呼出し元 BV18100P(BV81)
更新ファイル VKUNKSH(運行指令マスター)更新
呼出しモジュール SC20100P(日付取得、LINK)。LSS0030A は定義だけで使っていない

1.1 機能概要

DDP で入力した中継渡しの到着を、センターの運行指令マスターに登録する。

  1. 入力年月日(処理日付)をセットする。
  2. 到着店所が最終卸店なら、実績年月日時分に到着日時をセットする。
  3. 到着店所が卸店(最大3店)として登録されていなければ、卸店に追加する。
  4. 送付書NO の発到区分を「発送のみ」から「発送・到着」にする(一覧になければ「到着のみ」で追加する)。
  5. 運行指令マスターを書き換え、結果を DDP に返す。

回送区分によって、更新する指令書が変わる(1:受信した指令書NO、2:行き分・回送帰り分の指令書(最大4件))。BV18100P は常に回送区分 1 で呼ぶ。

flowchart LR
    DDP[DDP BV18100P<br/>BV81] -- 到着データ 57バイト --> B81V[B81V<br/>本プログラム]
    B81V -- 結果 24バイト --> DDP
    B81V <--> UNK[(VKUNKSH<br/>運行指令マスター)]
    B81V -- LINK --> SC[SC20100P<br/>日付取得]

2. インターフェース

2.1 受信データ(57バイト)

トランザクションID(4)+ DPCEB81V(他社直卸し中継渡し入力(委)[DC])。

項目ID 項目名 用途
B81VSRNO 指令書NO 回送区分 1 のとき、運行指令マスターのキー
B81VSOFN 送付書NO 送付書の一覧の更新
B81VKSKB 回送区分 1:受信した指令書を更新、2:行き分・回送帰り分の指令書を更新、それ以外:何もしない
B81VTTCD 店所コード 到着店所(卸店・最終卸店の判定)
B81VTYMD・B81VTHHM 年月日・時分 到着年月日時分
B81VORKB 卸し区分 使用しない
B81VKONO(1)・(2) 行き分 回送区分 2 のとき更新する指令書NO(0 なら処理しない)
B81VKFNO(1)・(2) 回送帰り分 同上

2.2 送信データ(24バイト)

エラーフラグ(1)+エラーコード(4)+ CEDPBV81(指令書NO BV81SRNO・送付書NO BV81SOFN・回送区分 BV81KSKB に受信した値をセット)。送信前に全体を空にし、エラーフラグを '0' にする。

エラーフラグ 意味 エラーコード
'0' 正常 空白
'1' 運行指令マスターが読めない、または書換えエラー 空白
'2' CICS のエラー 'BU02'

2.3 運行指令マスター(VKUNKSH)の更新項目

項目 内容
入力年月日(処理日付)(VBKINYMD) SC20100P で取得した日付
実績年月日時分(VBKGXTIM) 着店コード(最終卸店)(VBKGJCCD)が到着店所と同じなら「年月日×10000+時分」
卸店所数(VBKGORTS) 到着店所が登録済みの卸店のどれでもなく、卸店所数が 3 未満なら 1 増やす
第1~第3卸店の店所コード(VBKGHTEN・VBKGITEN・VBKGJTEN) 増やした卸店所数の位置に到着店所をセット
第1~第3卸店の到着年月日時分(VBKGHTIM・VBKGITIM・VBKGJTIM) 同じ位置に「年月日×10000+時分」をセット
発到区分(VBKBHTKB) 一覧に同じ送付書NO があり発到区分が '1'(発送)なら '3' に変える。一覧になければ追加して '2' にする
送付書枚数・送付書NO・取消区分(VBKBSOFM・VBKBSENO・VBKBTKID) 一覧になければ、送付書枚数を 1 増やし、その位置に送付書NO・取消区分空白をセット

3. 処理仕様

3.1 処理の流れ

flowchart TD
    S([開始]) --> RCV[到着データを受信<br/>SC20100P で日付取得]
    RCV --> K{回送区分}
    K -- 1 --> ONE[受信した指令書NOで<br/>3.2 の更新]
    K -- 2 --> LOOP[行き分・回送帰り分の<br/>指令書NOごとに 3.2 の更新]
    K -- それ以外 --> SND
    ONE --> SND
    LOOP --> SND[結果を送信<br/>終了データを受信して終了]

3.2 運行指令マスターの更新

  1. 指令書NO で運行指令マスターを更新モードで読む。読めなければエラーフラグ '1' にして送信する。
  2. 入力年月日に処理日付をセットする。
  3. 着店コード(最終卸店)が到着店所と同じなら、実績年月日時分に到着日時をセットする。
  4. 卸店の追加:卸店所数で分ける。
卸店所数 処理
0 卸店所数を 1 にし、第1卸店に到着店所・到着日時をセット
1 第1卸店が到着店所でなければ、卸店所数を 2 にし、第2卸店に到着店所・到着日時をセット
2 第1・第2卸店のどちらも到着店所でなければ、卸店所数を 3 にし、第3卸店に到着店所・到着日時をセット
3 以上 何もしない
  1. 送付書の一覧(送付書枚数分)から送付書NO を探す。
    • あれば、発到区分が '1' なら '3' にする('1' 以外はそのまま)。
    • なければ、送付書枚数を 1 増やし、送付書NO・取消区分空白・発到区分 '2' を追加する。
  2. レコード長を「650+7×送付書枚数」にして書き換える。書換えエラーはエラーフラグ '1'。

回送区分 2 の場合は、行き分(2件)・回送帰り分(2件)の指令書NO を順に処理し、0 の指令書NO は飛ばす。途中で読込み・書換えエラーになったら、そこで送信する(それまでに更新した指令書はそのまま)。

3.3 送受信・エラー処理

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

4. 補足・留意事項

  1. 回送区分 1 の書換えエラー:回送区分 1 では書換えエラーでもエラーフラグ '1' にしてそのまま送信する。回送区分 2 では書換えエラーでその時点で送信する。
  2. 発到区分の意味:発到区分 '1' は発送、'2' は到着、'3' は発送・到着と読み取れる(自社便・傭車便の発送入力 BV23200P・BV23600P は新しい送付書を '1' で追加し、'2' のものを '3' にしている)。
  3. 卸店が4店以上:卸店所数が 3 の場合は、到着店所が卸店になくても追加しない(エラーにもしない)。
  4. 卸し区分を使わない:受信した卸し区分(BV18100P は 0 を送る)は使っていない。
  5. 同じ送付書NO が複数ある場合:一覧の最初に見つかった送付書NO だけを更新する。
(8-8/10)