プログラム仕様書 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 機能概要
照会した送付書に、発送日時・着店・着地・直集軒数・直卸他社コードなどを入力して登録する。
- 入力された項目をチェックし(項目チェック・関連チェック)、エラーなら表示して再入力を待つ。
- 新規の送付書(区分 '2'・'5')の場合は、センターの運行指令マスターに送付書を登録する(BV23600P)。
- DDP の送付書マスターを登録(追加または更新)し、項目を入力した場合は集信ログを書く。
- 「送付書登録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)
- 画面を受信し、TSキューを読む。なければ初期化する(FLG はすべて '1'、必須は時・分)。読めたら削除する。
- 区分が '1'・'3'・'6' の場合は、発送年・月・日のチェックを飛ばし、発送時から始める。
- チェック結果が '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(函館扱い)でない。直卸他社名・扱事業所コード・扱事業所名を表示する |
- 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 表示の編集
- 各項目:OK・未入力は入力不可(自動スキップ)、エラー(関連エラーを含む)は入力可・赤でカーソルを置く。
- メッセージ:エラーなら「ERR 1」「エラー項目あり,再入力して下さい」、OK なら「OK 2」「確認OKなら実行キーを押して下さい」。
- エラーの場合は TSキューを書き、メッセージ・エラーコードを赤にして画面のデータ部分を送信し(カーソル指定)、BV36 で待機する。
4.5 センター登録(区分 '2'・'5')
- センター(CIC1 の B36V)に送付書の登録を依頼する(3.3)。
- 通信エラーは BV13500P と同じエラーコード(ASYSB・ASYSI・A9999・CTERM・C9999・STERM・S9999・RTERM・RLENG・R9999)。回線混雑(ASYSB)は、メッセージを赤で表示して画面を受信し、送信をやり直す。
- 通信エラー、またはセンターのエラーフラグが '0' 以外(指令書なし '1'、読込みエラー '2')の場合は、メッセージ「センター登録エラー PF3を押せ。」を高輝度・赤で表示し、TSキューを書いて BV36 で待機する(7章 3)。
- OK なら登録処理(4.6)に進む。区分 '1'・'3'・'6' はセンターに登録しない。
4.6 登録処理(OK_DATA_PROCESS_SUB_RTN)
- 送付書マスター(VPSOHFU)を 3.4 のとおり登録する。
- 区分 '1'・'5'・'6':項目を入力した場合だけ、送付書NO で更新モードで読み、書き換える。
- 区分 '2'・'3':レコードを作って追加する。
- 読込み・更新・追加の結果は判定しない。
- 項目を入力した場合(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 にも保存 |
- 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. 補足・留意事項
-
確認画面がない:メッセージは「確認OKなら実行キーを押して下さい」を編集するが、チェックOK の実行キーでそのまま登録まで進み、確認のための画面は表示されない(登録後に No.3 のメッセージに置き換わる)。
-
区分 '3' は実際には来ない:BV13500P は DDP の送付書マスターにない場合、センターに送付書があっても区分を '2' にする(BV13500P_仕様書.md 7章 1)。このため、センターに送付書がある場合も新規として扱われ、センターへの登録(送付書の一覧への追加)と送付書マスターの追加が行われる。
-
センター登録エラーのエラーコード:センター登録エラーの場合、メッセージだけを置き換え、エラーコード欄は表示の編集でセットした「OK 2」のまま表示される(回線混雑を除く)。通信エラーのエラーコード(ASYSI など)は表示されない。
-
送付書マスターの更新結果を判定しない:送付書マスターの読込み・書換え・追加の結果を判定していないため、失敗しても「送付書登録OK」になる。
-
直卸他社コードの必須:直卸他社コードを必須にしているのは BV13500P で、区分 '2'・'3'・'5'・'6' だけ。区分 '1'(DDP の送付書あり)では必須でなく、未入力でも登録できる。自社便版(BV13200P)にある「直卸他社コードが 0 ならエラー」の関連チェックはなく、項目チェックで 0 をエラーにしている。
-
傭車の項目は入力できない:傭車会社・傭車形態・傭車料金・傭車番号・一車保険料は画面では入力不可で、照会結果の値がそのまま登録される。標屯は画面の標示屯数ではなく、照会結果の標屯を登録する。
-
区分 '5'・'6' の更新で変えない項目:一車保険料・セミトレ車番・積区分・到着予定年月日は変更しない。運行車区分は照会結果に関係なく 02 にする。
-
集信ログの店所コード:自社便版(BV13200P)は発店コードをセットするが、本プログラムは端末の店所コードをセットする(発店は端末の店所なので、通常は同じ値)。
-
集信ログの到着予定年月日:区分 '1'・'5'・'6' で更新した場合は送付書マスターの値、区分 '2'・'3' では追加したレコードの値(照会結果)を使う。
-
画面データなし:画面データがない場合(MAPFAIL など)は、BV13500P と違って終了画面(ELEPHAN)にする。
-
月・日・時・分の範囲:発送月は 0~12、発送日は 0~31 で、0 を受け付ける。区分 '2'・'5' では関連チェック(日数計算)でエラーになるが、それ以外の区分では年月日を入力しない。
-
エラーメッセージファイル:VSAM 読込みサブルーチンでエラーメッセージファイルを 'VKERMSG' としている(BV13500P は 'VPERMSG')。本プログラムではエラーメッセージファイルを読む処理はない。