レビュー指摘 #12454 » BV18300P_仕様書.md
プログラム仕様書 BV18300P(他社直卸し中継渡し入力(委託票) 他社委託伝票入力の初期表示)
| 項目 | 内容 |
|---|---|
| システムID | BV |
| 参考資料 | ・現行ソース BV18300P.pl1 ・現行の解析資料 BV0190_到着入力(他社直卸中継渡し).xlsx(シート「資産一覧」「Link XCTL 一覧」「MPBS330」「レコードフォーマット」「SRC_BV18300P」) |
| 項目名の出典 | 画面項目は解析資料のシート「MPBS330」の日本語名、マスター・TSキューの項目はシート「レコードフォーマット」の日本語名称とソースのコメント |
1. 概要
| 項目 | 内容 |
|---|---|
| プログラムID | BV18300P(手続き名:BV18300) |
| プログラム名称 | 他社直卸し中継渡し入力(委託票)他社委託伝票入力の初期表示(ソースの冒頭コメントは「他社委託伝票の入力画面を選択し、制御をそれぞれの入力画面プログラムに渡す。」) |
| 言語 | PL/I(CICS コマンドレベル) |
| 処理形態 | オンライン(CICS。BV18200P から XCTL で起動される) |
| 動作環境 | SV(DDP 側) |
| トランザクションID | BV82 のまま(XCTL のため、トランザクションは変わらない) |
| パターンID | PPOD450P、業務 BXOKRJ00 |
| 使用画面(マップ) | MPBS330(他社委託伝票入力)、MPDM010(共通ヘッダ画面)、ELEPHAN(終了画面) |
| 前の処理 | BV18200P(BV82)から XCTL |
| 次の処理 | 委託票NO が集配票マスターにある → MPBS330 を表示し BV84(BV18400P:他社委託伝票の入力)で待機。ない → 一つ前の画面 |
| センター照会 | SYSID 'CIC1'、プロセス 'B83V'(BV28300P:送付書の送り状NO の照会) |
| 参照ファイル | VPSHUHA(DDP 集配票マスター)、VPTENMS(DDP 店所マスター)、VPUNKEI(DDP 運賃計算荷主マスター(1))。いずれも参照のみ |
| 一時記憶 | TSキュー「端末ID+'BV83'」(送り状NO の一覧)を書く。委託票NO がない場合は「端末ID+'PR02'」(他社委託明細印刷ログ TSBSPRLG)に印刷終了レコードを書く |
1.1 機能概要
委託票の登録(BV18100P)と委託明細の作成依頼(BV18200P)の後、他社委託伝票の入力画面(MPBS330)を表示する。
- 委託票NO で集配票マスターを読み、委託年月日・委託会社などを取得する。
- センター(B83V)に送付書NO を送り、送付書に含まれる送り状NO の一覧を受け取って TSキューに保存する。
- MPBS330 に委託票の内容と、送り状NO(最初の40件)を表示し、BV84 で待機する。
flowchart LR
BV82[BV18200P<br/>BV82] -- XCTL --> P[本プログラム]
P --> SHU[(VPSHUHA<br/>集配票マスター)]
P <-- APPC B83V --> C83[(センター<br/>BV28300P)]
P --> TS[(TSキュー<br/>端末ID+BV83)]
P -- MPBS330 表示 --> BV84[BV84<br/>BV18400P 他社委託伝票入力]
2. 画面仕様(MPBS330:他社委託伝票入力)
画面レイアウトは BV18400P_仕様書.md の 2.0 を参照(画面イメージより)。
2.1 本プログラムでセットする項目
| 項目ID | 項目名 | 属性・桁 | セットする値 | 属性 |
|---|---|---|---|---|
| BS33011・BS33021 | システム日付・システム時刻 | 文字 8・8 | 共通ヘッダ画面の日時(4.4) | |
| BS33031 | 委託票NO | 8 | 委託票NO | 入力不可・変更フラグオン |
| BS33032~BS33034 | 委託年月日 年・月・日 | 2×3 | 集配票マスターの稼動年月日 | 同上 |
| BS33041 | 委託先コード | 7 | 集配票マスターの傭車会社コード(委託会社) | 同上 |
| BS33042 | 委託店所コード | 4 | 端末の店所コード | 同上 |
| BS33043 | 委託店所名 | 20 | 端末の店所コードの店所略名(漢字) | 同上 |
| BS33051 | 委託先名 | 20 | 運賃計算荷主マスター(1)の略名(KNTNRGNM) | 同上 |
| F007003~F014069 | 送り状№(頭5)・送り状№(後6)(8行×5列) | 数字 5・6 | TSキューの送り状NO(11桁)の頭5桁・後6桁。0 の欄は何もセットしない | 送り状NO がある欄は入力可(数字)・黄色 |
カーソルは送り状№(頭5)1-1 に置く。
2.2 ファンクションキー
本プログラムは XCTL で起動され、画面を受信しない。キーの処理は次の BV18400P が行う。
3. インターフェース
3.1 通信領域(COMMAREA:256バイト)
ユーザー受渡しエリアを次のように定義している(BV18200P がセットした値)。
| 項目ID | 型 | 内容(BV18200P での名前) | 本プログラムでの用途 |
|---|---|---|---|
| CMUSER_SYUNO1 | 数字(8) | 送付書NO(COMM_ITEM_S1) | センター照会のキー |
| CMUSER_SYUNO2 | 数字(8) | 送付書NO(COMM_ITEM_S2) | 印刷終了レコードの集配票NO |
| CMUSER_DATAID | 数字(2) | データID 80・90(COMM_ITEM_S3) | 使用しない |
| CMUSER_PRNTKB・CMUSER_PRUNIT | 数字(1)・文字(4) | 0・空白(COMM_ITEM_S4・S5) | 使用しない |
| CMUSER_SHUNO1 | 数字(8) | 委託票NO(COMM_ITEM_I1) | 集配票マスターのキー |
| CMUSER_SHUNO2 | 数字(8) | 送付書NO(COMM_ITEM_I2) | 使用しない |
| CMUSER_PRINKB | 数字(1) | 印刷区分 1(COMM_ITEM_I3) | 1 なら委託票NO がないときに印刷終了レコードを書く |
| CMUSER_PPUNIT | 文字(4) | 印刷装置(COMM_ITEM_I4) | 使用しない |
| CMUSER_KDDATE | 数字(6) | 稼働年月日(COMM_ITEM_I5) | 集配票マスターの稼動年月日で上書き |
| CMUSER_KDTENC | 数字(4) | 端末の店所コード(COMM_ITEM_I6) | 集配票マスターの稼働店所コードで上書き |
| COMM_TEN_CODE | 数字(4) | 端末の店所コード | 委託店所コード、印刷終了レコードの店所コード |
| COMM_ITEM_NO | 2進(15) | 1 をセット | |
| CRT_BACK_KOSU/CRT_BACK_DATA(5) | 戻り先画面のスタック | 委託票NO がない場合の戻り先 |
3.2 センター照会(B83V:BV28300P)
| 項目 | 内容 |
|---|---|
| 送信(12バイト) | トランザクションID 'B83V'(4)+ 送付書NO(B83VSFNO、8) |
| 受信(7068バイト) | エラーフラグ(1)+エラーコード(4)+ 送付書送り状NOマスター(SOHFUSNO)のレコード |
| 使う項目 | 送り状NO(VSHSOKNO(n))、送り状件数(VSHSOKCN) |
3.3 TSキュー「端末ID+'BV83'」
送り状NO(11桁)を8行×5列=40件ずつ1アイテムにして書く(TS_KEY_AREA)。送り状件数が40件を超える場合は複数アイテムになる。BV18400P が画面の改ページなどに使う。
3.4 印刷終了レコード(TSキュー「端末ID+'PR02'」:他社委託明細印刷ログ TSBSPRLG)
委託票NO が集配票マスターにない場合で、印刷区分が 1 のときに書く。
| 項目ID | 内容(ソースのコメント) | セットする値 |
|---|---|---|
| TSBSITNO | 委託票NO | 委託票NO |
| TSBSSFNO | 集配票NO | 送付書NO(CMUSER_SYUNO2) |
| TSBSTNCD | 店所コード | 端末の店所コード |
| TSBSKYMD | 年月日 | 集配票マスターの稼動年月日(7章 3) |
| TSBSPRKB | 明細区分 | 2(委託) |
| TSBSSYGO | 車号 | 集配票マスターの社番・車号の下4桁(7章 3) |
| TSSBOKKN | 送り状件数 | 1 |
| TSBSOKNO(1) | 送り状NO | 99999999999 |
4. 処理仕様
4.1 処理の流れ
flowchart TD
S([開始 XCTL]) --> R1[集配票マスターを<br/>委託票NOで読む]
R1 -- ない --> PRT{印刷区分 = 1}
PRT -- はい --> PL[印刷終了レコードを<br/>PR02 に書く]
PRT -- いいえ --> BACK
PL --> BACK[一つ前の画面を表示]
R1 -- ある --> M[店所名・委託先名を取得]
M --> INQ[センター照会 B83V 4.3]
INQ --> DSP[MPBS330 を表示 4.4]
DSP --> W84([BV84 で待機])
4.2 委託票の読込み(OK_DATA_PROCESS_SUB_RTN)
- 集配票マスター(VPSHUHA)を委託票NO で読む。あれば次をセットする。
- 稼動年月日(VGJSKYMD)、稼働店所コード(VGJSKTCD)、傭車会社コード(VGJSYOCD:委託会社)
- 稼働店所コードの店所略名(漢字)、委託会社の運賃計算荷主マスター(1)の略名(キー:委託会社コード+'00000001')
- ない場合は、印刷区分が 1 なら印刷終了レコードを書き(3.4)、戻り先画面のスタックから一つ前の画面を決めて(最上位が MPBV800 以外ならその画面、MPBV800 ならその一つ下。スタックが空、または下がなければ終了画面)、共通ヘッダ画面と戻り先の画面をデータなしで送信して、そのトランザクションで待機する。メッセージは出さない。
- ある場合は、端末の店所コードで店所マスターを、委託会社コード+'00000001' で運賃計算荷主マスター(1)を読み直す(委託店所名・委託先名に使う)。通信領域の稼働年月日・稼働店所に集配票マスターの値をセットする。
4.3 センター照会(INQUIRE_SUB_RTN)
- センター(CIC1 の B83V)に送付書NO を送り、送付書送り状NOマスターのレコードを受け取る。
- 通信エラー・センターのエラー(エラーフラグ '0' 以外)・CICS のエラーは、エラーフラグを '2' にして会話を解放する。エラーメッセージ・エラーコードは作業域にセットするが表示しない(7章 2)。回線混雑(SBUSY)もやり直さずにエラーとする。
- TSキュー「端末ID+'BV83'」を削除する。
- 正常なら、送り状NO を1件目から送り状件数まで、40件(8行×5列)ずつ TSキューに書く。TSキューへの書込みエラーは ABEND(コード 'AAAA')。
4.4 画面の表示
- 共通ヘッダ画面(MPDM010)に日時をセットして、画面を消去して送信する。
- MPBS330 に 2.1 の項目をセットする。TSキュー「端末ID+'BV83'」の1件目(最初の40件)を読み、送り状NO が 0 でない欄に頭5桁・後6桁を表示して入力可(数字)・黄色にする。
- MPBS330 を送信し(カーソル指定)、BV84 で待機する。
5. メッセージ一覧
本プログラムで表示するメッセージはない(センター照会の通信エラーのメッセージも表示されない)。
6. 画面遷移
flowchart LR
BV82[BV18200P] -- XCTL --> P[本プログラム]
P -- 委託票あり --> BV84[BV84<br/>MPBS330 他社委託伝票入力]
P -- 委託票なし --> PREV[一つ前の画面]
P -- 委託票なし・戻り先なし --> END[ELEPHAN 終了]
7. 補足・留意事項
- 委託票がない場合:BV18100P で集配票マスターへの追加に失敗した場合などは、メッセージを出さずに一つ前の画面に戻る。
- センター照会のエラーを表示しない:通信エラー・センターのエラーでも画面には何も表示されず、送り状NO が空の MPBS330 が表示される(TSキュー「端末ID+'BV83'」は削除されたまま)。回線混雑でもやり直さない。
- 印刷終了レコードの値:印刷終了レコードは集配票マスターが読めなかった場合に書くが、年月日・車号は集配票マスターの作業域から取るため、前の値(または空)が入る。
- 送り状NO が0件の場合:送り状件数が 0 でも、1件目(0)を含む1アイテムを TSキューに書く。表示では 0 の欄は表示しない。
- ABEND:TSキューへの書込みエラーでは ABEND(コード 'AAAA')する。
- 委託店所の表示:委託店所コード・委託店所名には、集配票マスターの稼働店所(扱い店所)ではなく、端末の店所を表示する。