プロジェクト

全般

プロフィール

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

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

 

プログラム仕様書 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・委託会社・扱い店所・到着予定日時を入力し、到着として登録する。

  1. 入力された項目をチェックし(項目チェック)、送付書マスター・センターの顧客マスター(委託会社)・発送日時との関連をチェックする。
  2. OK なら、センターの運行指令マスターに到着を登録する(BV28100P)。
  3. DDP の集配票マスターに委託票を追加し、送付書マスターに到着の情報を書き、集信ログ(到着鑑データ)を出力する。
  4. 「登録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)

  1. 画面を受信し、TSキューを読む。なければ初期化する(FLG はすべて '1'(印刷装置は '2')、必須は委託票NO~到着予定分)。読めたら削除する。
  2. チェック結果が '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(チェックなし)
  1. 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 表示の編集とセンター登録

  1. 各項目:OK・未入力は入力不可(自動スキップ)、エラー(関連エラーを含む)は入力可・赤でカーソルを置く(印刷装置はエラー時に入力可・変更フラグオン)。印刷区分はOK・未入力なら入力不可(数字)。指令書NO・送付書NO・到着店所コード・到着店所名は常に入力不可。
  2. メッセージ:エラーなら 5章のエラー、OK なら「OK 2」「確認OKなら実行キーを押して下さい」。
  3. エラーの場合は TSキューを書き、メッセージ・エラーコードを赤にして画面のデータ部分を送信し(カーソル指定)、BV81 で待機する。
  4. 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)

  1. 送付書マスターを送付書NO で読む(なければ空のレコードとして扱う)。運行車区分(KSHSSHKB)が 02 なら COMM_ITEM_NO2 を '90'、TSキューの BV80GKBN を '15' に、それ以外は '80'・'14' にする。
  2. 集配票マスター(VPSHUHA)に 3.4 の内容で委託票を追加する(結果は判定しない)。
  3. 送付書マスターを更新モードで読み、3.5 の内容で書き換える(読めなければ更新しない。結果は判定しない)。
  4. 集信ログ(SSS13)を 3.6 の内容で TD キュー 'SYUS' に書く。
  5. 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. 補足・留意事項

  1. 確認画面がない:チェックOK でメッセージ「確認OKなら実行キーを押して下さい」を編集するが、同じ実行キーでそのまま登録まで進み、確認のための画面は表示されない。
  2. 委託会社チェックの通信エラー:委託会社のチェック(B70U)で通信エラーになった場合も、委託会社コード・扱い店所コードの関連エラーとして「エラー項目あり,再入力して下さい」を表示する(通信エラーの内容は表示されない)。
  3. 無効にされているチェック:
    • 委託会社コードの荷主コードのチェックデジット(LSO0020、区分 'NI')は呼んでいるが、結果を判定していない。
    • 扱い店所が送付書の積店・端末の店所と違う場合のエラーはコメントアウトされている。
    • 到着予定年の範囲(88~99)のチェックはコメントアウトされている。
  4. 印刷処理なし:印刷装置を入力した場合の印刷(SL11100P・SL11200P の LINK)と、印刷装置のエラー(ERR 3)はコメントアウトされている。印刷装置は BV18000P で入力不可にしている。
  5. 登録結果を判定しない:集配票マスターの追加・送付書マスターの書換えの結果を判定していないため、失敗しても「登録OK」になる。センターの登録結果だけは判定する。
  6. 到着予定年月日の比較:年2桁の年月日を LSP2000 で8桁にして比較している(2000年対応)。到着予定年月日が 0 の場合はエラー。
  7. 登録後のエラーコード欄:登録OK 時はメッセージだけを置き換え、エラーコード欄は「OK 2」のまま表示される。
  8. 委託票NO の重複チェック:集配票マスターに同じ委託票NO があればエラーにする(読込みエラーの場合はエラーにしない)。
(2-2/10)