プロジェクト

全般

プロフィール

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

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

 

プログラム仕様書 BV13600P(他社直卸分発送伝票送付書(傭車便) 入力・登録)

項目 内容
システムID BV
参考資料 ・現行ソース BV13600P.pl1
・画面イメージ MPBV350.jpg(他社直卸分発送伝票送付書(傭車便))
・現行の解析資料 BV0180_他社直卸出発入力(傭車.xlsx(シート「資産一覧」「MPBV350」「レコードフォーマット」「SRC_BV13600P」)
項目名の出典 画面項目は解析資料のシート「MPBV350」の日本語名、送受信データ・マスター・集信ログの項目はシート「レコードフォーマット」の日本語名称

1. 概要

項目 内容
プログラムID BV13600P(手続き名:BV13600)
プログラム名称 他社直卸分発送伝票送付書(傭車便)入力・登録(ソースの冒頭コメントは「他社直卸発送入力(傭社)[検証] 2000年対応」)
言語 PL/I(CICS コマンドレベル)
処理形態 オンライン(CICS 疑似会話型)
動作環境 SV(DDP 側)
トランザクションID BV36
パターンID PPOD152P(1987/05/01)、業務 BXHEAD30
使用画面(マップ) MPBV350(他社直卸分発送伝票送付書(傭車便))、MPDM010(共通ヘッダ画面)、ELEPHAN(終了画面)
前の処理 BV35(BV13500P)。照会OK で項目の入力可・不可を決め、BV36 で待機している
次の処理 登録OK → BV37(BV13700P:次画面の振り分け)
センター登録 SYSID 'CIC1'、プロセス 'B36V'(BV23600P)と APPC 会話。新規の送付書(区分 '2'・'5')のときだけ
参照・更新ファイル VPSOHFU(DDP 送付書マスター)参照・更新・追加、VPTENMS(DDP 店所マスター)・VPCHINM(DDP 地名マスター)・VPHCBKM(発着地粁程マスター)・VPKONAM(直卸他社の名称マスター)参照
出力 TD キュー 'SYUS'(集信R2 発送鑑データ:SSS21)
呼出しモジュール LSO0130(日間通算日数の計算。2000年対応)
一時記憶 TSキュー(BV13500P と同じ「端末ID+'BV35'」、長さ 300。通信領域の TSQ_ID・TSQ_LENGTH を使う)

1.1 機能概要

照会した送付書に、発送日時・着店・着地・直集軒数・直卸他社コードなどを入力して登録する。

  1. 入力された項目をチェックし(項目チェック・関連チェック)、エラーなら表示して再入力を待つ。
  2. 新規の送付書(区分 '2'・'5')の場合は、センターの運行指令マスターに送付書を登録する(BV23600P)。
  3. DDP の送付書マスターを登録(追加または更新)し、項目を入力した場合は集信ログを書く。
  4. 「送付書登録OK NO群または直集受付は実行キー」を表示して BV37 で待機する。
flowchart LR
    BV35[BV35<br/>BV13500P 照会] -- 照会OK --> BV36[BV36<br/>本プログラム<br/>MPBV350]
    BV36 -- エラー --> BV36
    BV36 <-- APPC B36V(新規のみ) --> CIC1[(センター CIC1<br/>BV23600P)]
    BV36 --> SOHFU[(VPSOHFU<br/>送付書マスター)]
    BV36 --> SYUS[[TD SYUS<br/>集信ログ]]
    BV36 -- 登録OK --> BV37[BV37<br/>BV13700P 振り分け]

2. 画面仕様(MPBV350)

画面レイアウト・項目は BV13500P_仕様書.md の 2.1・2.2 と同じ。

2.1 入力項目とチェック結果の番号

FLG は TSキューのチェック結果('0':未入力、'1':エラー、'3':関連エラー、'2':OK)。どの項目が入力できるかは BV13500P の照会結果の区分で決まる(BV13500P_仕様書.md 4.7)。傭車会社・傭車形態・傭車料金・傭車番号・標示屯数・OW区分・一車保険料は、どの区分でも入力できない(照会結果を表示しているだけ)。

FLG 項目ID 項目名 属性・桁 本プログラムでのチェック
3 BV35071 発送年 数字 2 区分 '2'・'5' のとき
4 BV35072 発送月 数字 2 同上
5 BV35073 発送日 数字 2 同上
6 BV35074 発送時 数字 2 全区分(入力不可の区分ではチェック済みまたは未入力)
7 BV35075 発送分 数字 2 同上
10 BV35091 着店コード 数字 4 同上
11 BV35092 着地コード 数字 5 同上
12 BV35151 直集軒数 数字 2 同上(BV13500P で入力不可にしている)
13 BV35181 直卸他社コード 数字 7 全区分。区分 '2'・'3'・'5'・'6' は必須

FLG(8)・FLG(9)(発店・発地)は BV13500P でチェック済み(OK)にしており、本プログラムではチェックしない。

2.2 ファンクションキー

キー 機能 処理概要
実行(Enter) 継続 入力内容をチェックし、登録する
PF2 取消 画面をクリアし、TSキューを削除して、共通ヘッダ画面と空の MPBV350 を表示する。BV35(照会)で待機
PF3 終了 TSキューを削除し、戻り先画面のスタックから一つ前の画面に戻る(BV13500P と同じ)
PF4 戻り TSキューを削除し、メインメニューに戻る(BV13500P と同じ)
CLEAR 強制終了 TSキューを削除し、終了画面(ELEPHAN)を表示して終了
上記以外(PF1 を含む) 再表示 画面のデータ部分を再送信し、BV36 で待機

3. インターフェース

3.1 通信領域(COMMAREA:256バイト)

項目ID 本プログラムでの用途
CRT_BACK_KOSU/CRT_BACK_DATA(5) 戻り先画面のスタック(PF3・PF4)
TSQ_ID・TSQ_LENGTH TSキューの名前・長さ(BV13500P がセット)
COMM_TEN_CODE 端末の店所コード(集信ログの入力店所・店所コード)
COMM_RPOC_YMD 処理日付(送付書マスターの入力年月日)
COMM_ITEM_NO 作業選択番号(送付書マスターの画面区分)
COMM_ITEM_DDP 照会結果の区分('1':DDP の送付書あり、'2'・'5':新規、'3'・'6':センターに送付書あり。BV13500P_仕様書.md 3.4)

3.2 TSキュー(CHK_DSP_WORK:300バイト)

BV13500P と同じ形式。BV13500P が保存した画面項目(傭車会社・傭車形態・傭車料金・傭車番号・一車保険料など)と照会結果(年月日・積店・運行車区分・標屯・到着予定年月日・差額区分)を使う。本プログラムで追加・更新する項目は次のとおり。

項目ID 内容
WK_TEIKBN 訂正区分。いずれかの項目を入力したら '1'(送付書マスターの更新・集信ログの出力の判定に使う)
TS35HSYZ 着店コードの店所マスターの所在地コード(先頭5桁)
TS35ATKA 着地コードの地名マスターの扱店コード
BUYUSOK 輸送粁程(発着地粁程マスターの標準粁程)
TS35BNKB 運行車区分(区分 '5'・'6' の更新時に 02)

3.3 センター登録(新規の送付書のとき)

項目 内容
接続先 SYSID 'CIC1'、プロセス名 'B36V'(BV23600P)
送信(42バイト) トランザクションID(4)+ DPCEB36V:指令書NO(B36VSRNO)、送付書NO(B36VSOFN)、年月日(B36VSYMD:発送年月日)、時分(B36VDHMM:発送時分)、発店(B36VSTNC)、着店(B36VSRCT:着店コード、0 なら着地の扱店コード)、運行車区分(B36VBNKB:照会結果の運行車区分)、積区分(B36VTSKB:0)
受信(22バイト) エラーフラグ(1)+エラーコード(4)+ CEDPBV36(指令書NO・送付書NO)

3.4 送付書マスター(VPSOHFU)への登録内容

項目 区分 '2'・'3'(追加) 区分 '5'・'6'(更新) 区分 '1'(更新)
発送伝票送付書NO・指令書NO・削除区分 送付書NO・指令書NO・'0' (変更しない) (変更しない)
テ゛ータ区分 '1' '1' (変更しない)
画面区分 作業選択番号 作業選択番号 (変更しない)
到着予定年月日 照会結果の到着予定年月日 (変更しない) (変更しない)
発送年月日 発送年・月・日 発送年・月・日 (変更しない)
出発時分 発送時・分 発送時・分 発送時・分
積店コート゛・発地コード 発店コード・発地コード 発店コード・発地コード (変更しない)
卸店コート゛ 着店コード(0 なら着地の扱店コード) 同左 同左
着地コード 着地コード(0 なら着店の所在地コード) 着地コード 着地コード
運行車区分 照会結果の運行車区分 02 (変更しない)
車番・車号 傭車番号 傭車番号 (変更しない)
セミトレ車番 0 (変更しない) (変更しない)
傭車会社コート゛・o・w区分・標屯 傭車会社コード・OW区分・照会結果の標屯 同左 (変更しない)
傭車形態 傭車形態(空白なら 0) 同左 (変更しない)
定額傭車料 傭車料金 傭車料金 (変更しない)
一車保険料 一車保険料 (変更しない) (変更しない)
直集軒数 直集軒数 直集軒数 直集軒数
積区分 '0' (変更しない) (変更しない)
区域区分 空白 空白 空白
差額区分 照会結果の差額区分 同左 同左
輸送粁程 発着地粁程マスター(キー:発地コード+着地コード)の標準粁程(1件目)。なければ 0 同左 同左
入力年月日 処理日付 処理日付 処理日付
直卸他社コード 直卸他社コード 直卸他社コード 直卸他社コード

区分 '1'・'5'・'6' の更新は、項目を入力した場合(WK_TEIKBN = '1')だけ行う。


4. 処理仕様

4.1 処理の流れ

flowchart TD
    S([開始]) --> AID{押されたキー}
    AID -- CLEAR --> CLR[TSキュー削除<br/>終了画面]
    AID -- PFキー --> PF[ファンクションキー処理 2.2]
    AID -- 実行 --> RCV[MPBV350 を受信<br/>TSキューを読んで削除]
    RCV -- 画面データなし --> CLR
    RCV --> CHK[項目チェック 4.2<br/>関連チェック 4.3]
    CHK -- エラー --> ERR[TSキュー保存<br/>エラー表示] --> W36([BV36 で待機])
    CHK -- OK --> INQ{区分 '2'・'5'}
    INQ -- はい --> CEN[センターに送付書を登録 4.5]
    CEN -- エラー --> CERR[センター登録エラー<br/>PF3を押せ] --> W36
    INQ -- いいえ --> REG
    CEN -- OK --> REG[送付書マスター登録<br/>集信ログ出力 4.6]
    REG --> W37([BV37 で待機])

4.2 項目チェック(CHECK_SUB_RTN_LVL1)

  1. 画面を受信し、TSキューを読む。なければ初期化する(FLG はすべて '1'、必須は時・分)。読めたら削除する。
  2. 区分が '1'・'3'・'6' の場合は、発送年・月・日のチェックを飛ばし、発送時から始める。
  3. チェック結果が '2' の項目はチェックしない。未入力は必須(FLGX = '1')ならエラー、そうでなければ未入力('0')。項目を入力した場合は WK_TEIKBN を '1' にする(時・分は範囲内の場合だけ)。
FLG 項目 チェック内容(満たさなければエラー)
3 発送年 数字
4 発送月 数字で 0~12
5 発送日 数字で 0~31
6 発送時 数字で 0~23
7 発送分 数字で 0~59
10 着店コード 数字で、3~4桁目が '00' でない。店所マスターにあり、店所区分(VETNGETA)が 1・4・8。着店所名に店所略名(漢字)を表示し、所在地コード(先頭5桁)を着地コードと TS35HSYZ にセットする。OK なら着地コードの関連エラー('3')を解除する
11 着地コード 数字で、地名マスターにあり入力区分(VCHIIKUB)が 1。着店所名に地名(漢字)(1~19バイト目+30バイト目)を表示し、扱店コードを TS35ATKA にセットする。OK なら着店コードの関連エラーを解除する
12 直集軒数 数字
13 直卸他社コード 数字で 0 でなく 9950000 未満。1859026(東京支店扱い)・1859034(宇都宮直卸)・1926065(入力不可)でない。直卸他社の名称マスター(VPKONAM)にあり、扱店が 0102(函館扱い)でない。直卸他社名・扱事業所コード・扱事業所名を表示する
  1. FLG(1)~FLG(13) にエラー('1')があれば、関連チェックをせずに全体エラーにする。

4.3 関連チェック

項目エラーがなければ行う。エラーは関連エラー('3')。

No 条件 チェック内容
1 区分 '2'・'5'(新規) 発送年月日が、指令書の年月日(照会結果 TS35SYMD)の 0~5日後(LSO0130)。範囲外・日数計算エラーなら発送年・月・日をエラー
2 全区分 着店コード・着地コードがともに 0 なら両方エラー。着店コードが 0 で着地の扱店コードがあれば、着店コードを扱店コードにする
3 着地コードが下表の地区 直卸他社コード(・着店)が決められた組合せでなければ、着地コード・直卸他社コード(函館市は着店も)をエラー
4 直卸他社コードが 1501099(小牧 札樽) 着店 0181・着地 01202 でなければ、着店・着地・直卸他社コードをエラー
着地コード 認める直卸他社コード
01101(北海道 中央区) 0376302、1027508、1208596、1803411(東雲)、1803271(京浜)、1802819(葛西)、1802801(板橋)、1802851(足立)、1802885(横浜)、1803156(入間)、1802835(八潮)、1802976(岩槻)、1802702(栗橋)、1802687(千葉)、1803312(土浦)
01107(北海道 西区) 1877549(大阪)、1877763(門真)、1877573(南大阪)、1877630(兵庫)、1877680(尼崎)
01202(北海道 函館市) 着店 0101 で 1374355(札樽)、着店 0181 で 0115750(函館運送)、着店 0181 で 1501099(小牧 札樽)
01203(北海道 小樽市) 1208645

最後に FLG(3)~FLG(13) に '1' または '3' があれば全体エラーにする。

4.4 表示の編集

  1. 各項目:OK・未入力は入力不可(自動スキップ)、エラー(関連エラーを含む)は入力可・赤でカーソルを置く。
  2. メッセージ:エラーなら「ERR 1」「エラー項目あり,再入力して下さい」、OK なら「OK 2」「確認OKなら実行キーを押して下さい」。
  3. エラーの場合は TSキューを書き、メッセージ・エラーコードを赤にして画面のデータ部分を送信し(カーソル指定)、BV36 で待機する。

4.5 センター登録(区分 '2'・'5')

  1. センター(CIC1 の B36V)に送付書の登録を依頼する(3.3)。
  2. 通信エラーは BV13500P と同じエラーコード(ASYSB・ASYSI・A9999・CTERM・C9999・STERM・S9999・RTERM・RLENG・R9999)。回線混雑(ASYSB)は、メッセージを赤で表示して画面を受信し、送信をやり直す。
  3. 通信エラー、またはセンターのエラーフラグが '0' 以外(指令書なし '1'、読込みエラー '2')の場合は、メッセージ「センター登録エラー PF3を押せ。」を高輝度・赤で表示し、TSキューを書いて BV36 で待機する(7章 3)。
  4. OK なら登録処理(4.6)に進む。区分 '1'・'3'・'6' はセンターに登録しない。

4.6 登録処理(OK_DATA_PROCESS_SUB_RTN)

  1. 送付書マスター(VPSOHFU)を 3.4 のとおり登録する。
    • 区分 '1'・'5'・'6':項目を入力した場合だけ、送付書NO で更新モードで読み、書き換える。
    • 区分 '2'・'3':レコードを作って追加する。
    • 読込み・更新・追加の結果は判定しない。
  2. 項目を入力した場合(WK_TEIKBN = '1')は、集信ログ(SSS21:集信R2 発送鑑データ、レコードID 230、長さ 384)を TD キュー 'SYUS' に書く。
集信ログの項目 内容
入力店所コート゛・継続区分 端末の店所コード・0
入力の年・月・日・時・分・秒 現在の日時
指令書NO・送付書NO 指令書NO・送付書NO
取消区分 区分 '2'・'5'(新規)は 0、それ以外は 1
店所コート゛ 端末の店所コード
出発の年・月・日・時・分 発送年・月・日・時・分
到着予定の年・月・日 送付書マスターの到着予定年月日
発地コート゛・卸店コート゛・着地コート゛・扱い店所コート゛ 発地コード、着店コード(0 なら着地の扱店コード)、着地コード、着店コード
運行車区分・積載社番(車号)・標屯・ow区分 送付書マスターの運行車区分、傭車番号、送付書マスターの標屯、OW区分
傭車会社コード・傭車 形態・定額傭車料・一車保険料 傭車会社コード、傭車形態(空白なら 0)、傭車料金、一車保険料
直集軒数・積区分・区域区分・直卸他社コード 直集軒数・0・空白・直卸他社コード
輸送粁程 発着地粁程マスターの標準粁程(1件目)。なければ 0。TSキューの BUYUSOK にも保存
  1. TSキューを書き、メッセージ「送付書登録OK NO群または直集受付は実行キー」をターコイズで表示して、画面のデータ部分を送信し BV37 で待機する。

5. メッセージ一覧

No エラーコード メッセージ 表示するとき
1 ERR 1 エラー項目あり,再入力して下さい 項目エラー・関連エラー
2 OK 2 確認OKなら実行キーを押して下さい チェックOK(表示の編集時。登録後は No.3 に置き換わる)
3 ― 送付書登録OK NO群または直集受付は実行キー 登録OK
4 ― センター登録エラー PF3を押せ。 センター登録の通信エラー・センターのエラー
5 ASYSB 回線が混雑しています!! 実行キーをもう一度押して下さい センター接続の回線混雑

6. 画面遷移

flowchart LR
    BV35[BV35 照会] --> BV36[BV36<br/>本プログラム]
    BV36 -- 実行(エラー・センター登録エラー) --> BV36
    BV36 -- 実行(登録OK) --> BV37[BV37<br/>BV13700P]
    BV36 -- PF2 --> BV35
    BV36 -- PF3 --> PREV[一つ前の画面]
    BV36 -- PF4 --> MAIN[メインメニュー]
    BV36 -- CLEAR・画面データなし --> END[ELEPHAN 終了]

7. 補足・留意事項

  1. 確認画面がない:メッセージは「確認OKなら実行キーを押して下さい」を編集するが、チェックOK の実行キーでそのまま登録まで進み、確認のための画面は表示されない(登録後に No.3 のメッセージに置き換わる)。
  2. 区分 '3' は実際には来ない:BV13500P は DDP の送付書マスターにない場合、センターに送付書があっても区分を '2' にする(BV13500P_仕様書.md 7章 1)。このため、センターに送付書がある場合も新規として扱われ、センターへの登録(送付書の一覧への追加)と送付書マスターの追加が行われる。
  3. センター登録エラーのエラーコード:センター登録エラーの場合、メッセージだけを置き換え、エラーコード欄は表示の編集でセットした「OK 2」のまま表示される(回線混雑を除く)。通信エラーのエラーコード(ASYSI など)は表示されない。
  4. 送付書マスターの更新結果を判定しない:送付書マスターの読込み・書換え・追加の結果を判定していないため、失敗しても「送付書登録OK」になる。
  5. 直卸他社コードの必須:直卸他社コードを必須にしているのは BV13500P で、区分 '2'・'3'・'5'・'6' だけ。区分 '1'(DDP の送付書あり)では必須でなく、未入力でも登録できる。自社便版(BV13200P)にある「直卸他社コードが 0 ならエラー」の関連チェックはなく、項目チェックで 0 をエラーにしている。
  6. 傭車の項目は入力できない:傭車会社・傭車形態・傭車料金・傭車番号・一車保険料は画面では入力不可で、照会結果の値がそのまま登録される。標屯は画面の標示屯数ではなく、照会結果の標屯を登録する。
  7. 区分 '5'・'6' の更新で変えない項目:一車保険料・セミトレ車番・積区分・到着予定年月日は変更しない。運行車区分は照会結果に関係なく 02 にする。
  8. 集信ログの店所コード:自社便版(BV13200P)は発店コードをセットするが、本プログラムは端末の店所コードをセットする(発店は端末の店所なので、通常は同じ値)。
  9. 集信ログの到着予定年月日:区分 '1'・'5'・'6' で更新した場合は送付書マスターの値、区分 '2'・'3' では追加したレコードの値(照会結果)を使う。
  10. 画面データなし:画面データがない場合(MAPFAIL など)は、BV13500P と違って終了画面(ELEPHAN)にする。
  11. 月・日・時・分の範囲:発送月は 0~12、発送日は 0~31 で、0 を受け付ける。区分 '2'・'5' では関連チェック(日数計算)でエラーになるが、それ以外の区分では年月日を入力しない。
  12. エラーメッセージファイル:VSAM 読込みサブルーチンでエラーメッセージファイルを 'VKERMSG' としている(BV13500P は 'VPERMSG')。本プログラムではエラーメッセージファイルを読む処理はない。
(4-4/6)