プログラム仕様書 BV18100P(他社直卸し中継渡し入力(委託票) 入力・登録)
| 項目 |
内容 |
| システムID |
BV |
| 参考資料 |
・現行ソース BV18100P.pl1 ・画面イメージ MPBV800.jpg(他社直卸し中継渡し入力(委託票)) ・現行の解析資料 BV0190_到着入力(他社直卸中継渡し).xlsx(シート「資産一覧」「MPBV800」「参考_BU27000P」「レコードフォーマット」「SRC_BV18100P」) |
| 項目名の出典 |
画面項目は解析資料のシート「MPBV800」の日本語名、送受信データ・マスター・集信ログの項目はシート「レコードフォーマット」「参考_BU27000P」の日本語名称 |
1. 概要
| 項目 |
内容 |
| プログラムID |
BV18100P(手続き名:BV18100) |
| プログラム名称 |
他社直卸し中継渡し入力(委託票)入力・登録(ソースの冒頭コメントは「直卸し到着入力 検証 2000年対応」) |
| 言語 |
PL/I(CICS コマンドレベル) |
| 処理形態 |
オンライン(CICS 疑似会話型) |
| 動作環境 |
SV(DDP 側) |
| トランザクションID |
BV81 |
| パターンID |
PPOD152P(1987/05/01)、業務 BXOKRJ00 |
| 使用画面(マップ) |
MPBV800(他社直卸し中継渡し入力(委託票))、MPDM010(共通ヘッダ画面)、ELEPHAN(終了画面) |
| 前の処理 |
BV80(BV18000P)。照会OK で委託票NO などを入力可にし、BV81 で待機している |
| 次の処理 |
登録OK → BV82(BV18200P) |
| センターとの通信 |
① 委託会社のチェック:SYSID 'CIC1'、プロセス 'B70U'(BU27000P:顧客マスター照会) ② 到着の登録:SYSID 'CIC1'、プロセス 'B81V'(BV28100P) |
| 参照・更新ファイル |
VPSOHFU(DDP 送付書マスター)参照・更新、VPSHUHA(DDP 集配票マスター)参照・追加、VPTENMS(DDP 店所マスター)参照 |
| 出力 |
TD キュー 'SYUS'(集信R1・2 到着鑑データ:SSS13) |
| 呼出しモジュール |
LSO0020(チェックデジットのチェック)、LSO0040(日付の妥当性チェック)、LSP2000(年2桁の年月日を8桁に変換) |
| 一時記憶 |
TSキュー(BV18000P と同じ「端末ID+'BV80'」、長さ 300。通信領域の TSQ_ID・TSQ_LENGTH を使う) |
1.1 機能概要
照会した送付書について、中継渡しの委託票NO・委託会社・扱い店所・到着予定日時を入力し、到着として登録する。
- 入力された項目をチェックし(項目チェック)、送付書マスター・センターの顧客マスター(委託会社)・発送日時との関連をチェックする。
- OK なら、センターの運行指令マスターに到着を登録する(BV28100P)。
- DDP の集配票マスターに委託票を追加し、送付書マスターに到着の情報を書き、集信ログ(到着鑑データ)を出力する。
- 「登録OK、ENTERを押せ。」を表示して BV82 で待機する。
flowchart LR
BV80[BV80<br/>BV18000P 照会] -- 照会OK --> BV81[BV81<br/>本プログラム<br/>MPBV800]
BV81 -- エラー --> BV81
BV81 <-- APPC B70U<br/>委託会社チェック --> C70[(センター<br/>BU27000P)]
BV81 <-- APPC B81V<br/>到着登録 --> C81[(センター<br/>BV28100P)]
BV81 --> SHU[(VPSHUHA<br/>集配票マスター)]
BV81 <--> SOH[(VPSOHFU<br/>送付書マスター)]
BV81 --> SYUS[[TD SYUS<br/>集信ログ SSS13]]
BV81 -- 登録OK --> BV82[BV82<br/>BV18200P]
2. 画面仕様(MPBV800)
画面レイアウト・項目は BV18000P_仕様書.md の 2.1・2.2 と同じ。
2.1 入力項目とチェック結果の番号
FLG は TSキューのチェック結果('0':未入力、'1':エラー、'3':関連エラー、'2':OK)。どの項目が入力できるかは BV18000P で決まる(BV18000P_仕様書.md 4.5)。
| FLG |
項目ID |
項目名 |
属性・桁 |
必須 |
本プログラムでのチェック |
| 3 |
BV80041 |
委託票NO |
数字 8 |
○ |
4.2 |
| 4 |
BV80051 |
委託会社コード |
数字 7 |
○ |
4.2・4.3 |
| 5 |
BV80061 |
扱い店所コード |
数字 4 |
○ |
4.2・4.3 |
| 6~8 |
BV80071~BV80073 |
到着予定年・月・日 |
数字 2×3 |
|
4.2・4.3(BV18000P で送付書の到着予定年月日を表示済み) |
| 9・10 |
BV80074・BV80075 |
到着予定時・分 |
数字 2×2 |
○ |
4.2・4.3 |
| 11 |
BV80081 |
印刷区分 |
文字 1 |
|
4.2 |
| 12 |
BV80091 |
印刷装置 |
文字 4 |
|
4.2(BV18000P で入力不可にしている) |
指令書NO・送付書NO・到着店所コード・到着店所名は、本プログラムでは常に表示だけ(入力不可)にする。
2.2 ファンクションキー
| キー |
機能 |
処理概要 |
| 実行(Enter) |
継続 |
入力内容をチェックし、登録する |
| PF2 |
取消 |
画面をクリアし、TSキューを削除して、空の MPBV800 を画面を消去して表示する。BV80(照会)で待機 |
| PF3 |
終了 |
TSキューを削除し、戻り先画面のスタックから一つ前の画面に戻る(BV18000P と同じ) |
| PF4 |
戻り |
TSキューを削除し、メインメニューに戻る(BV18000P と同じ) |
| CLEAR |
強制終了 |
TSキューを削除し、終了画面(ELEPHAN)を表示して終了 |
| 上記以外 |
再表示 |
画面のデータ部分を再送信し、BV81 で待機 |
3. インターフェース
3.1 通信領域(COMMAREA:256バイト)
| 項目ID |
本プログラムでの用途 |
| CRT_BACK_KOSU/CRT_BACK_DATA(5) |
戻り先画面のスタック(PF3・PF4) |
| TSQ_ID・TSQ_LENGTH |
TSキューの名前・長さ(BV18000P がセット) |
| COMM_TEN_CODE |
端末の店所コード(集信ログの入力店所) |
| COMM_RPOC_YMD |
処理日付(送付書マスターの入力年月日) |
| PRINTER_ID・RETURN_CD |
印刷装置の確認用(処理はコメントアウトされており使っていない。7章 4) |
| COMM_ITEM_NO2 |
運行車区分から決める区分('90':傭車(運行車区分 02)、'80':それ以外)。後続に渡す |
| COMM_ITEM_SO・COMM_ITEM_SF |
指令書NO・送付書NO(BV18000P がセット)。集配票マスター・集信ログに使う |
3.2 委託会社のチェック(B70U:BU27000P)
センター側の処理は BU27000P_仕様書.md を参照(顧客マスターのレコードをそのまま返す)。
| 項目 |
内容 |
| 送信(11バイト) |
トランザクションID 'B70U'(4)+ 荷主コード(WB70NICD、7):委託会社コード |
| 受信(905バイト) |
エラーフラグ(1)+エラーコード(4)+ 顧客マスターの内容 |
受信データのうち本プログラムで使う項目:
| 項目ID |
項目名(参考_BU27000P) |
用途 |
| UB7DELKB |
登録抹消区分('0':使用可、'9':削除) |
'0' であること |
| UB7DATCD(1)~(4) |
顧客扱店所コード(4件) |
扱い店所コードがこの中にあること |
| UB7NKUMK(1)~(10) |
契約有無区分(10件) |
6件目が 1 であること |
| UB7DSQKB |
請求・精算区分(1:請求、2:精算) |
2(精算)であること |
| UB7NRGNM |
顧客略名(漢字) |
委託会社名に表示 |
3.3 到着の登録(B81V:BV28100P)
| 項目 |
内容 |
| 送信(57バイト) |
トランザクションID 'B81V'(4)+ DPCEB81V(他社直卸し中継渡し入力(委)[DC]):指令書NO(B81VSRNO)、送付書NO(B81VSOFN)、回送区分(B81VKSKB:1)、店所コード(B81VTTCD:到着店所コード)、年月日(B81VTYMD:到着予定年月日)、時分(B81VTHHM:到着予定時分)、卸し区分(B81VORKB:0)、行き分(B81VKONO(2):0)、回送帰り分(B81VKFNO(2):0) |
| 受信(24バイト) |
エラーフラグ(1)+エラーコード(4)+ CEDPBV81 |
3.4 集配票マスター(VPSHUHA)に追加する内容
キーは委託票NO。下表以外の項目は空白・0。
| 項目ID |
項目名 |
セットする値 |
| VGJSSSHN |
専門集配票NO. |
委託票NO |
| VGJSDSHN |
代表集配票NO. |
送付書NO(COMM_ITEM_SF) |
| VGJSDTID |
データID |
運行車区分が 02 なら 28、それ以外は 27 |
| VGJSKTCD |
稼働店所コード |
扱い店所コード |
| VGJSKYMD |
稼動年月日 |
到着予定年・月・日 |
| VGJSSGKB |
作業区分 |
6 |
| VGJSSHBN |
社番・車号 |
送付書マスターの車番 |
| VGJSNKEN |
集配軒数 |
1 |
| VGJSYOCD |
傭車会社コード |
委託会社コード |
| VGJSTEAT |
手当反映区分 |
1 |
| VGJSPRNT |
印刷区分 |
印刷区分(1) |
3.5 送付書マスター(VPSOHFU)の更新内容
| 項目ID |
項目名 |
セットする値 |
| KSHSYYMD・KSHSTYMD |
到着予定年月日・到着年月日 |
到着予定年月日 |
| KSHSDKB2 |
テ゛ータ区分(到着) |
1 |
| KSHSGKB2 |
画面区分(到着) |
運行車区分が 02 なら 15、それ以外は 14 |
| KSHSTOTN |
到着店コート゛ |
到着店所コード |
| KSHSTTIM |
到着時分 |
到着予定時分 |
| KSHSORKB |
卸区分 |
1 |
| KSHSTKKN |
直配軒数 |
1 |
| KSHSBYMD |
入力年月日(到着) |
処理日付 |
3.6 集信ログ(SSS13:集信R1・2 到着鑑データ)
レコードID 130、長さ 384。下表以外の項目は空白・0。
| 項目 |
内容 |
| 入力店所(SSS3TNCD)・継続区分(SSS3KEKB) |
端末の店所コード・0 |
| 入力の年・月・日・時・分・秒 |
現在の日時 |
| 到着店所コート゛(SSS3CHTN) |
到着店所コード |
| テ゛ータ件数(SSS3KNSU) |
1 |
| 1件目の指令書NO・送付書NO |
指令書NO・送付書NO |
| 1件目の到着 年・月・日・時・分 |
到着予定年・月・日・時・分 |
| 1件目の卸区分(SSS3ORKB)・直配件数(SSS3GHKN) |
1・1 |
| 委託会社コード(SSS3JONC) |
委託会社コード |
4. 処理仕様
4.1 処理の流れ
flowchart TD
S([開始]) --> AID{押されたキー}
AID -- CLEAR --> CLR[TSキュー削除<br/>終了画面]
AID -- PFキー --> PF[ファンクションキー処理 2.2]
AID -- 実行 --> RCV[MPBV800 を受信<br/>TSキューを読んで削除]
RCV -- 画面データなし --> CLR
RCV --> CHK[項目チェック 4.2<br/>関連チェック 4.3]
CHK -- エラー --> ERR[TSキュー保存<br/>エラー表示] --> W81([BV81 で待機])
CHK -- OK --> CEN[センターに到着を登録 4.4]
CEN -- エラー --> ERR
CEN -- OK --> REG[集配票マスター追加<br/>送付書マスター更新<br/>集信ログ出力 4.5]
REG --> W82([BV82 で待機])
4.2 項目チェック(CHECK_SUB_RTN_LVL1)
- 画面を受信し、TSキューを読む。なければ初期化する(FLG はすべて '1'(印刷装置は '2')、必須は委託票NO~到着予定分)。読めたら削除する。
- チェック結果が '2' の項目はチェックしない。未入力は必須(FLGX = '1')ならエラー、そうでなければ未入力('0')。
| FLG |
項目 |
チェック内容(満たさなければエラー) |
| 3 |
委託票NO |
数字で 80000000 以上。チェックデジットが正しい(LSO0020、区分 '07'、タイプ 'C')。集配票マスター(VPSHUHA)にまだない |
| 4 |
委託会社コード |
数字で 9950000 未満。1859026(東京支店扱い)・1859034(宇都宮直卸)・1926065(入力不可)でない |
| 5 |
扱い店所コード |
数字で、店所マスターにある。扱い店所名に店所略名(漢字)を表示する |
| 6 |
到着予定年 |
数字 |
| 7 |
到着予定月 |
数字で 12 以下 |
| 8 |
到着予定日 |
数字で 31 以下 |
| 9 |
到着予定時 |
数字で 23 以下 |
| 10 |
到着予定分 |
数字で 59 以下 |
| 11 |
印刷区分 |
入力された場合は 1 にする(チェックOK)。未入力で必須でなければOK |
| 12 |
印刷装置 |
入力された場合はそのままOK(チェックなし) |
- FLG(3)~FLG(12) にエラー('1')があれば、関連チェックをせずに全体エラーにする。
4.3 関連チェック
項目エラーがなければ、次の順に行う。エラーは関連エラー('3')。
| 順 |
チェック |
エラーのとき |
| 1 |
送付書マスター(VPSOHFU)を送付書NO で読めること |
委託会社コード~到着予定分(FLG 4~10)をエラーにし、「DDP送付書マスターが読めませんでした。」(ERR 9)。以降のチェックはしない |
| 2 |
センター(B70U)で委託会社コードの顧客マスターを照会し、正常であること |
委託会社コード・扱い店所コードをエラー。以降のチェックはしない |
| 3 |
顧客扱店所コード(4件)のどれかが扱い店所コードと同じであること。見つかったら委託会社名に顧客略名(漢字)を表示する |
同上 |
| 4 |
扱い店所コードが 0102(函館扱い)でないこと |
同上 |
| 5 |
請求・精算区分が 2(精算)、契約有無区分の6件目が 1、登録抹消区分が '0' であること |
同上 |
| 6 |
到着予定年月日が日付として正しいこと(LSO0040) |
到着予定年~分(FLG 6~10)をエラー。以降のチェックはしない |
| 7 |
到着予定年月日が 0 でなく、送付書の発送年月日(KSHSHYMD)以降であること(年2桁を LSP2000 で8桁にして比較)。同じ日なら、到着予定時分が送付書の出発時分(KSHSHTIM)より後であること |
到着予定年~分(FLG 6~10)をエラー |
最後に FLG(3)~FLG(12) に '1' または '3' があれば全体エラーにする。
4.4 表示の編集とセンター登録
- 各項目:OK・未入力は入力不可(自動スキップ)、エラー(関連エラーを含む)は入力可・赤でカーソルを置く(印刷装置はエラー時に入力可・変更フラグオン)。印刷区分はOK・未入力なら入力不可(数字)。指令書NO・送付書NO・到着店所コード・到着店所名は常に入力不可。
- メッセージ:エラーなら 5章のエラー、OK なら「OK 2」「確認OKなら実行キーを押して下さい」。
- エラーの場合は TSキューを書き、メッセージ・エラーコードを赤にして画面のデータ部分を送信し(カーソル指定)、BV81 で待機する。
- OK の場合は、そのままセンター(CIC1 の B81V)に到着の登録を依頼する(3.3)。
- 通信エラーは BV18000P と同じエラーコード(ASYSB・ASYSI・A9999・CTERM・C9999・STERM・S9999・RTERM・RLENG・R9999)とメッセージを表示する。回線混雑(ASYSB)は画面を受信して送信をやり直す。
- センターのエラーフラグが '0' 以外なら「センター登録エラー、PF3を押せ。」(ERR 2)を表示する。
- いずれもエラーの場合は 3 と同じく BV81 で待機する。
4.5 登録処理(OK_DATA_PROCESS_SUB_RTN)
- 送付書マスターを送付書NO で読む(なければ空のレコードとして扱う)。運行車区分(KSHSSHKB)が 02 なら COMM_ITEM_NO2 を '90'、TSキューの BV80GKBN を '15' に、それ以外は '80'・'14' にする。
- 集配票マスター(VPSHUHA)に 3.4 の内容で委託票を追加する(結果は判定しない)。
- 送付書マスターを更新モードで読み、3.5 の内容で書き換える(読めなければ更新しない。結果は判定しない)。
- 集信ログ(SSS13)を 3.6 の内容で TD キュー 'SYUS' に書く。
- TSキューを書き、メッセージ「登録OK、ENTERを押せ。」をターコイズで表示して、画面を送信し(画面は消去しない、カーソル指定)、BV82 で待機する。
5. メッセージ一覧
| No |
エラーコード |
メッセージ |
表示するとき |
| 1 |
ERR 1 |
エラー項目あり,再入力して下さい |
項目エラー・関連エラー |
| 2 |
ERR 9 |
DDP送付書マスターが読めませんでした。 |
関連チェックで送付書マスターが読めない |
| 3 |
ERR 2 |
センター登録エラー、PF3を押せ。 |
センター登録(B81V)のエラー |
| 4 |
ERR 3 |
印刷装置でない端末コード!! ほか |
(印刷装置の確認処理がコメントアウトされているため、表示されない。7章 4) |
| 5 |
ASYSB ほか |
BV18000P と同じ通信エラーのメッセージ |
センター登録(B81V)の通信エラー |
| 6 |
OK 2 |
確認OKなら実行キーを押して下さい |
チェックOK(登録後は No.7 に置き換わる) |
| 7 |
OK 2 |
登録OK、ENTERを押せ。 |
登録OK |
6. 画面遷移
flowchart LR
BV80[BV80 照会] --> BV81[BV81<br/>本プログラム]
BV81 -- 実行(エラー・センター登録エラー) --> BV81
BV81 -- 実行(登録OK) --> BV82[BV82<br/>BV18200P]
BV81 -- PF2 --> BV80
BV81 -- PF3 --> PREV[一つ前の画面]
BV81 -- PF4 --> MAIN[メインメニュー]
BV81 -- CLEAR・画面データなし --> END[ELEPHAN 終了]
7. 補足・留意事項
-
確認画面がない:チェックOK でメッセージ「確認OKなら実行キーを押して下さい」を編集するが、同じ実行キーでそのまま登録まで進み、確認のための画面は表示されない。
-
委託会社チェックの通信エラー:委託会社のチェック(B70U)で通信エラーになった場合も、委託会社コード・扱い店所コードの関連エラーとして「エラー項目あり,再入力して下さい」を表示する(通信エラーの内容は表示されない)。
-
無効にされているチェック:
- 委託会社コードの荷主コードのチェックデジット(LSO0020、区分 'NI')は呼んでいるが、結果を判定していない。
- 扱い店所が送付書の積店・端末の店所と違う場合のエラーはコメントアウトされている。
- 到着予定年の範囲(88~99)のチェックはコメントアウトされている。
-
印刷処理なし:印刷装置を入力した場合の印刷(SL11100P・SL11200P の LINK)と、印刷装置のエラー(ERR 3)はコメントアウトされている。印刷装置は BV18000P で入力不可にしている。
-
登録結果を判定しない:集配票マスターの追加・送付書マスターの書換えの結果を判定していないため、失敗しても「登録OK」になる。センターの登録結果だけは判定する。
-
到着予定年月日の比較:年2桁の年月日を LSP2000 で8桁にして比較している(2000年対応)。到着予定年月日が 0 の場合はエラー。
-
登録後のエラーコード欄:登録OK 時はメッセージだけを置き換え、エラーコード欄は「OK 2」のまま表示される。
-
委託票NO の重複チェック:集配票マスターに同じ委託票NO があればエラーにする(読込みエラーの場合はエラーにしない)。