プロジェクト

全般

プロフィール

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

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

 

プログラム仕様書 BV18000P(他社直卸し中継渡し入力(委託票) 照会)

項目 内容
システムID BV
参考資料 ・現行ソース BV18000P.pl1(センター側の動きは BV28000P.pl1 で確認)
・画面イメージ MPBV800.jpg(他社直卸し中継渡し入力(委託票))
・現行の解析資料 BV0190_到着入力(他社直卸中継渡し).xlsx(シート「資産一覧」「MPBV800」「レコードフォーマット」「SRC_BV18000P」)
項目名の出典 画面項目は解析資料のシート「MPBV800」の日本語名、マスターの項目はシート「レコードフォーマット」の日本語名称

1. 概要

項目 内容
プログラムID BV18000P(手続き名:BV18000)
プログラム名称 他社直卸し中継渡し入力(委託票)照会(ソースの冒頭コメントは「他社直卸到着(中継渡し) 照会」)
言語 PL/I(CICS コマンドレベル)
処理形態 オンライン(CICS 疑似会話型)
動作環境 SV(DDP 側)
トランザクションID BV80
パターンID PPOD155P(1987/05/01)、業務 BXOKRJ00
使用画面(マップ) MPBV800(他社直卸し中継渡し入力(委託票))、MPDM010(共通ヘッダ画面)、ELEPHAN(終了画面)
次の処理 照会OK → BV81(BV18100P:委託票の入力・登録)
センター照会 SYSID 'CIC1'、プロセス 'B80V'(BV28000P)と APPC 会話。DDP の送付書マスターにない場合だけ
参照・更新ファイル VPSOHFU(DDP 送付書マスター)参照・追加、VPTENMS(DDP 店所マスター)参照
呼出しモジュール LSO0020(チェックデジットのチェック)
一時記憶 TSキュー(キュー名「端末ID+トランザクションID(BV80)」、長さ 300)

1.1 機能概要

他社に直接卸す貨物を中継で渡すときの委託票を入力する機能の最初の画面。指令書NO・送付書NO を入力して実行キーを押すと、送付書が発送済みかを確認して到着店所と到着予定年月日を表示し、委託票の入力(BV81)に進む。

  1. 指令書NO・送付書NO をチェックする。
  2. DDP の送付書マスターを送付書NO で読む。ない場合はセンターに照会し、センターの送付書の情報で DDP の送付書マスターにレコードを追加する。
  3. 送付書のデータ区分が 1(発送あり)なら、到着店所・到着予定年月日を表示し、委託票NO などを入力できるようにして BV81 で待機する。0 ならエラーにする。
flowchart LR
    MENU[メニュー] --> BV80[BV80<br/>本プログラム<br/>MPBV800]
    BV80 -- エラー --> BV80
    BV80 <-- APPC B80V<br/>DDP にない場合 --> CIC1[(センター CIC1<br/>BV28000P)]
    BV80 <--> SOHFU[(VPSOHFU<br/>送付書マスター)]
    BV80 -- 照会OK --> BV81[BV81<br/>BV18100P 委託票入力]

2. 画面仕様(MPBV800:他社直卸し中継渡し入力(委託票))

2.1 画面レイアウト

MPBV800        他社直卸し中継渡し入力(委託票)                 YY/MM/DD
                                                                HH:MM:SS
     指令書NO.     _________       送付書NO.    ________
     委託票NO.     ________
     委託会社コード   _______         委託会社名(14)
     扱い店所         ____            扱い店所名(14)
     到着店所                         到着店所名(14)
     到着予定年月日   __年 __月 __日 __時 __分
                      _(印刷区分)
     印刷装置         ____

 実行:継続 2:取消 3:終了 4:戻り
 エラーメッセージ(70)                                       エラーコード(5)

到着店所コード(BV80101)は画面イメージには表示されていない(到着店所名だけが見える)。

2.2 画面項目

I:入力、O:出力。「BV80」「BV81」は、その段階で入力するか(I)表示だけか(O)を示す(解析資料のシート「MPBV800」より)。FLG は TSキューのチェック結果の番号。

No 項目ID 項目名 属性・桁 BV80 BV81 FLG(BV80/BV81) 本プログラムで表示する内容
1 BV80011 システム年月日 文字 8 O O YY/MM/DD
2 BV80021 システム時分秒 文字 8 O O HH:MM:SS
3 BV80031 指令書NO 数字 9 I O 1(必須) 入力値
4 BV80032 送付書NO 数字 8 I O 2(必須) 入力値
5 BV80041 委託票NO 数字 8 O I /3(必須) 照会OK 後に入力可(カーソル)
6 BV80051 委託会社コード 数字 7 O I /4(必須) 照会OK 後に入力可
7 BV80052 委託会社名 文字 14 O O (本プログラムではセットしない)
8 BV80061 扱い店所コード 数字 4 O I /5(必須) 照会OK 後に入力可
9 BV80062 扱い店所名 文字 14 O O (本プログラムではセットしない)
10 BV80101 到着店所コード 数字 4 O O 送付書の卸店コード、または端末の店所コード(4.4)
11 BV80102 到着店所名 文字 14 O O 到着店所コードの店所略名(漢字)
12~14 BV80071~BV80073 到着予定年・到着予定月・到着予定日 数字 2×3 O I /6~8(必須) 送付書の到着予定年月日
15・16 BV80074・BV80075 到着予定時・到着予定分 数字 2×2 O I /9・10(必須) 照会OK 後に入力可
17 BV80081 印刷区分 文字 1 O O /11 '1'
18 BV80091 印刷装置 文字 4 O I /12 入力不可(2014/07/14 変更。4.5)
19 BV80231 PFキー説明 文字 76 O O 固定表示
20 BV80241 エラーメッセージ 文字 70 O O 5章のメッセージ
21 BV80242 エラーコード 文字 5 O O 5章のエラーコード

2.3 ファンクションキー

キー 機能 処理概要
実行(Enter) 継続 指令書NO・送付書NO をチェックし、照会する
PF2 取消 画面をクリアし、TSキューを削除して、空の MPBV800 を表示する(画面を消去、共通ヘッダ画面は送らない)。BV80 で待機
PF3 終了 TSキューを削除し、戻り先画面のスタックから一つ前の画面に戻る(4.6)
PF4 戻り TSキューを削除し、メインメニューに戻る(4.6)
CLEAR 強制終了 TSキューを削除し、終了画面(ELEPHAN)を表示して終了
上記以外 再表示 画面のデータ部分を再送信し、BV81 で待機(7章 6)

3. インターフェース

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

項目ID 本プログラムでの用途
CRT_BACK_KOSU/CRT_BACK_DATA(5) 戻り先画面のスタック(トランザクションID・マップID、最大5件)
TSQ_ID・TSQ_LENGTH TSキューの名前・長さ
COMM_TEN_CODE 端末の店所コード(到着店所の既定値)
COMM_ITEM_SO 照会OK 時に指令書NO をセット(後続に渡す)
COMM_ITEM_SF 照会OK 時に送付書NO をセット(後続に渡す)

3.2 センター照会(B80V:BV28000P)

項目 内容
接続先 SYSID 'CIC1'、プロセス名 'B80V'
送信(21バイト) トランザクションID 'B80V'(4)+ 送付書NO(B80VSFNO、8)+ 指令書NO(B80VSRNO、9)
受信(50バイト) エラーフラグ(1)+エラーコード(4)+ 下表の項目
項目ID 内容(センターの編集元。BV28000P)
BV80YYMD 到着予定年月日。送付書送り状NOマスター(VKSFSNO)の年月日(VSHSTYMD)が 0 でなければその値、0 なら運行指令マスター(VKUNKSH)の予定年月日時分(VBKYBTIM)の年月日
BV80DKB1 データ区分。常に 1
BV80ORTN 卸店コード。到着店所コート゛(VSHSTTCD)
BV80SHKB 運行車区分(VSHSHUNK)
BV80HYMD・BV80HTIM 発送年月日(VSHSHYMD)・発送時分(VSHSHTIM)
BV80TUTN 積店コード。店所コート゛(VSHSTNCD)
BV80YSCD 傭車会社コード(VSHSYOSY)
BV80SHBN 車番。社番(VSHSSYBN)

センターのエラーフラグは、'0':正常、'1':運行指令マスターに指令書がない・指令書の送付書の一覧に送付書NO がない・送付書送り状NOマスターにない、'2':CICS のエラー(エラーコード 'ZZZZ')。

3.3 送付書マスター(VPSOHFU:DDP 送付書マスター)

キーは発送伝票送付書NO(KSHSSFNO)。

項目ID 項目名 本プログラムでの用途
KSHSDKB1 テ゛ータ区分 1(発送あり)なら照会OK、それ以外はエラー
KSHSORTN 卸店コート゛ 到着店所の判定(4.4)
KSHSYYMD 到着予定年月日 到着予定年・月・日に表示

センター照会の結果で追加するレコードの項目は次のとおり(ほかの項目は空白・0)。

項目ID 項目名 セットする値
KSHSSFNO 発送伝票送付書NO 送付書NO
KSHSSRNO 指令書NO 指令書NO
KSHSYYMD 到着予定年月日 BV80YYMD
KSHSDKB1 テ゛ータ区分 BV80DKB1(1)
KSHSORTN 卸店コート゛ BV80ORTN
KSHSSHKB 運行車区分 BV80SHKB
KSHSHYMD・KSHSHTIM 発送年月日・出発時分 BV80HYMD・BV80HTIM
KSHSTUTN 積店コート゛ BV80TUTN
KSHSYSCD 傭車会社コート゛ BV80YSCD
KSHSSHBN 車番 BV80SHBN

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

項目ID 内容
LOOP_FLG・OKFLG 初期化済み('1')・チェック結果('2':OK、それ以外:エラー)
FLG(30)・FLGX(30) チェック結果('0':未入力、'1':エラー、'2':OK、'3':関連エラー)・必須の区分
BV80031B・BV80032B 指令書NO・送付書NO
BV80041B・BV80051B・BV80052B・BV80061B・BV80062B 委託票NO・委託会社コード・委託会社名・扱い店所コード・扱い店所名(BV81 で使う)
BV80101B・BV80102B 到着店所コード・到着店所名
BV80071B~BV80075B 到着予定年・月・日・時・分
BV80081B・BV80091B 印刷区分・印刷装置
BV80GKBN (本プログラムでは使わない)

4. 処理仕様

4.1 処理の流れ

flowchart TD
    S([開始]) --> AID{押されたキー}
    AID -- CLEAR --> CLR[TSキュー削除<br/>終了画面]
    AID -- PFキー --> PF[ファンクションキー処理 4.6]
    AID -- 実行 --> RCV[MPBV800 を受信<br/>TSキューを読む]
    RCV -- なし --> INI[初期化]
    RCV -- あり --> DEL[TSキュー削除]
    INI --> CHK
    DEL --> CHK[指令書NO・送付書NO のチェック 4.2]
    CHK -- エラー --> ERR[TSキュー保存<br/>エラー表示] --> W80([BV80 で待機])
    CHK -- OK --> SO{送付書マスター}
    SO -- あり --> DK
    SO -- なし --> INQ[センター照会 4.3]
    INQ -- エラー --> ERR
    INQ -- OK --> ADD[送付書マスターに追加] --> DK{データ区分 = 1}
    DK -- いいえ --> ERR
    DK -- はい --> TN[到着店所の表示 4.4]
    TN --> OK[照会OK の処理 4.5]
    OK --> W81([BV81 で待機])

4.2 初期化と入力チェック(CHECK_SUB_RTN_LVL1)

  1. 画面を受信し、TSキュー(端末ID+'BV80')を読む。なければ初期化する(FLG はすべて '1'、FLGX(1)・FLGX(2) を '1'(必須)、画面項目の保存域を 0・空白)。あれば削除する。
  2. 指令書NO・送付書NO をチェックする。チェック結果が '2'(OK済み)の項目はチェックしない。入力がなければ、必須なのでエラー(FLG '1')。
FLG 項目 チェック内容(満たさなければエラー)
1 指令書NO 数字で 0 でなく、9桁入力されている。チェックデジットが正しい(LSO0020、区分 '07'、タイプ 'C')
2 送付書NO 数字で 0 でなく、8桁入力されている。チェックデジットが正しい(LSO0020、10000000 未満は区分 '10'、以上は区分 '07'、タイプ 'C')
  1. どちらかがエラーなら全体エラー(OKFLG '1')にして、4.3 以降は行わない。
  2. OK なら、送付書マスター(VPSOHFU)を送付書NO で読む。あれば 4.4 へ。なければ(読込みエラーを含む)センターに照会する(4.3)。

4.3 センター照会(INQUIRE_SUB_RTN)

  1. センター(CIC1 の B80V)に接続し、送付書NO・指令書NO を送信して、結果を受信する(3.2)。終了データを送って会話を終える。
  2. 通信エラーは次のとおり(エラーフラグを '2' にする)。回線混雑(ASYSB)は、メッセージを赤で表示して画面を受信し、送信をやり直す。
エラーコード 発生箇所 メッセージ(作業域にセット。7章 2)
ASYSB 接続先の割当て(混雑) 回線が混雑しています!! 実行キーをもう一度押して下さい
ASYSI・CTERM・STERM・RTERM 割当て(SYSID エラー)・接続・送信・受信(回線切断) 照会不可能!!回線不通の可能性あり センターに連絡して下さい
A9999・C9999・S9999・R9999 割当て・接続・送信・受信(その他) 照会不可能!!サポート外ERROR センターに連絡して下さい
RLENG 受信(長さエラー) 照会不可能!! LENGERR
  1. エラーフラグが '0' なら OK。送付書マスターに 3.3 の内容でレコードを追加する(追加の結果は判定しない)。
  2. エラーフラグが '0' 以外(通信エラーを含む)なら、指令書NO・送付書NO をエラーにし、「送付書未登録、出発入力後実行して下さい。」のエラーにする。

4.4 データ区分の確認と到着店所の表示

  1. 送付書マスターのデータ区分(KSHSDKB1)が 1(発送あり)でなければ、指令書NO・送付書NO を関連エラー('3')にし、「送付書到着入力済み? 委託入力をする場合は直配追加入力より。」のエラーにする。
  2. データ区分が 1 なら、到着店所コードを次のように決めて表示する。
条件 到着店所コード
卸店コード(KSHSORTN)の3桁目が '8' で、下表の到着スキャン用の店コードでない 卸店コード
卸店コードの3桁目が '8' で、下表の到着スキャン用の店コード 端末の店所コード
卸店コードの3桁目が '8' でない 端末の店所コード

到着スキャン用の店コード(到着予定店として表示しない):1981、1982、1381、2981、1680、2780、1781、1880(2006/10/02 追加)、3380、2082、2083、2084、2085。

  1. 到着店所コードで店所マスター(VPTENMS)を読み、到着店所名に店所略名(漢字)を表示する(なければ空白)。

4.5 表示の編集と照会OK時の処理

  1. 表示の編集(DISPLAY_SUB_RTN_LVL1)
    • 指令書NO・送付書NO:OK・未入力なら入力不可、エラー(関連エラーを含む)なら入力可・赤でカーソルを置く。
    • エラーなら 5章のメッセージとエラーコード 'ERR 1' をセットし、TSキューを書いて、メッセージ・エラーコードを赤にして画面のデータ部分を送信し(カーソル指定)、BV80 で待機する。
    • OK なら、メッセージ・エラーコードを空白にする。
  2. 照会OK時の処理(OK_DATA_PROCESS_SUB_RTN)
項目 設定
委託票NO・委託会社コード・扱い店所コード 入力可・黄色。委託票NO にカーソル
到着予定年・月・日 入力可(数字)。送付書マスターの到着予定年月日を表示
到着予定時・分 入力可・黄色
印刷区分 属性に文字 '_' をセット(7章 5)。値は '1'
印刷装置 入力不可(2014/07/14 に入力可・黄色から変更)
必須の区分 FLGX(3)・FLGX(4)・FLGX(5)・FLGX(9)・FLGX(10) を '1'(BV81 の番号で委託票NO・委託会社コード・扱い店所コード・到着予定時・分)
通信領域 COMM_ITEM_SO に指令書NO、COMM_ITEM_SF に送付書NO をセット
  1. TSキューに書き、戻り先画面のスタックの最上位が「MPBV800/BV80」でなければ積み(最大5件)、メッセージ・エラーコードをターコイズにして画面を送信し(画面は消去しない、カーソル指定)、BV81 で待機する。

4.6 ファンクションキー・例外処理

キー・条件 処理
PF2 画面をクリアし、TSキューを削除して、システム日付・時刻をセットした空の MPBV800 を画面を消去して送信する。BV80 で待機
PF3 TSキューを削除し、戻り先画面のスタックから一つ前の画面を決める。スタックの最上位が MPBV800 以外ならその画面、MPBV800 ならその一つ下の画面(スタックが空、または下がなければ終了画面)。共通ヘッダ画面(MPDM010)に日時をセットして送信し、戻り先の画面をデータなしで送信して、そのトランザクションで待機
PF4 TSキューを削除し、スタックの1件目が MPBV800 以外ならその画面(スタックを全件消去)、それ以外(スタックが空を含む)は終了画面
CLEAR TSキューを削除し、終了画面(ELEPHAN)を表示して終了
その他のキー 画面のデータ部分を再送信し、BV81 で待機
画面データなし・レコードなし・ファイルの終わり TSキューの読込みから処理を続ける(4.2)

4.7 システム日付・時刻の設定(TIMESET_SUB_RTN)

現在の日時を YY/MM/DD・HH:MM:SS に編集して日付・時刻欄にセットする(入力不可・変更フラグオン)。


5. メッセージ一覧

No エラーコード メッセージ 表示するとき
1 ERR 1 エラー項目あり,再入力して下さい 指令書NO・送付書NO のエラー
2 ERR 1 送付書未登録、出発入力後実行して下さい。 DDP の送付書マスターになく、センター照会でエラー(通信エラーを含む)
3 ERR 1 送付書到着入力済み? 委託入力をする場合は直配追加入力より。 送付書のデータ区分が 1 でない
4 ERR 1 送付書の運行車区分が不一致です。 (現在は表示されない。7章 3)
5 ASYSB 回線が混雑しています!! 実行キーをもう一度押して下さい センター接続の回線混雑
6 (空白) (空白) 照会OK

6. 画面遷移

flowchart LR
    MENU[メニュー] --> BV80[BV80<br/>本プログラム]
    BV80 -- 実行(エラー) --> BV80
    BV80 -- 実行(照会OK) --> BV81[BV81<br/>BV18100P]
    BV80 -- PF2 --> BV80
    BV80 -- PF3 --> PREV[一つ前の画面]
    BV80 -- PF4 --> MAIN[メインメニュー]
    BV80 -- CLEAR --> END[ELEPHAN 終了]
    BV80 -- その他のキー --> BV81

7. 補足・留意事項

  1. センターから取った送付書を DDP に登録する:DDP の送付書マスターにない送付書は、センターの送付書送り状NOマスターの情報で DDP の送付書マスターにレコードを追加する(照会だけの画面だが、送付書マスターに書き込む)。追加の結果は判定しない。
  2. 通信エラーのメッセージが表示されない:センター照会の通信エラー(回線混雑を除く)では、作業域に通信エラーのメッセージ・エラーコードをセットするが、表示の編集で「送付書未登録、出発入力後実行して下さい。」「ERR 1」に置き換わるため、通信エラーの内容は表示されない。
  3. 運行車区分のチェックを外している:運行車区分(01・02 のみ OK)のチェックは 1996/01/06 に削除されている(ソースにコメントで残っている)。そのため「送付書の運行車区分が不一致です。」は表示されない。
  4. データ区分 0 の扱い:データ区分が 0 の場合は、ソースのコメントでは「通常到着入力済み?」として扱い、委託入力は直配追加入力から行うようメッセージを出す。センターから取った送付書はデータ区分が常に 1 のため、このエラーになるのは DDP の送付書マスターにあった送付書だけ。
  5. 印刷区分の属性:照会OK 時に、印刷区分の属性に文字 '_'(アンダースコア)をセットしている。標準の属性値ではない。
  6. その他のキーの待機先:実行・PF2・PF3・PF4・CLEAR 以外のキーでは、照会前でも BV81 で待機する。照会前にこれらのキーを押すと、次の実行キーは BV18100P が処理することになる。
  7. 送付書NO のNO帯チェックなし:送付書NO はチェックデジットだけを確認し、NO帯(番号の範囲)は確認しない。
  8. PF2 の表示:PF2 では共通ヘッダ画面(MPDM010)を送らず、MPBV800 だけを画面を消去して送信する。
  9. センターの照会条件(BV28000P):センターは、運行指令マスターの送付書の一覧に送付書NO があり、送付書送り状NOマスターにも送付書がある場合だけ正常を返す。
(10-10/10)