レビュー指摘 #12086 » BK11700P_仕様書.md
プログラム仕様書 BK10030 回送到着入力 - BK11700P(③ 確認・登録)
| 項目 | 内容 |
|---|---|
| 機能ID・機能名 | BK10030 回送到着入力(機能仕様書:BK10030_回送到着入力_仕様書.md) |
| システムID | BK |
| サブシステムID | BK0070 |
| サブシステム名 | 回送・域内便到着入力 |
| 参考資料 | ・現行ソース BK11700P.pl1 ・画面設計書「BK0070_回送・域内便到着入力.xlsx」(Ver.1.2023.1016.3):MPBK150 の項目名、レコードフォーマット |
| 関連仕様書 | BK11600P_仕様書.md(前の処理:到着情報の入力・検証)、BK11500P_仕様書.md(次の処理:回送入力票NOの照会) |
1. 概要
| 項目 | 内容 |
|---|---|
| プログラムID | BK11700P(手続き名:BK11700) |
| プログラム名称 | 回送到着(確認) |
| 言語 | PL/I(CICS コマンドレベル) |
| 処理形態 | オンライン(CICS 疑似会話型) |
| 動作環境 | SV(DDP 側) |
| トランザクションID | BK17 |
| パターンID | PPOD426P(1987/05/01)、生成時パターン PPOD156P、業務 BXHEAD30 |
| 使用画面(マップ) | MPBK150(回送・域内便到着入力)、MPDM010(共通ヘッダ画面)、ELEPHAN(終了画面)、戻り先画面(PF3/PF4 時に動的に決定) |
| 前の処理 | トランザクション BK16(BK11600P:到着情報の入力・検証)。確認画面を表示して BK17 で待機している |
| 次の処理 | 実行キー:トランザクション BK15(BK11500P:次の回送入力票NOの照会)/PF3・PF4:戻り先の画面 |
| 参照ファイル | VPTENMS(DDP 店所マスター)、VPMORTR(DDP 車両マスター) |
| 更新ファイル | VPKAISO(DDP 回送マスター):照会元がDDPの場合のみ更新 |
| 出力 | TDキュー SYUS:発送鑑データ(SSS21、レコードID 230)、到着鑑データ(SSS13、レコードID 130)。各384バイト |
| 一時記憶 | TSキュー(キュー名・長さは BK11500P が通信領域に設定した値。端末ID+'BK15'、280バイト) |
1.1 機能概要
回送到着入力の確認画面で、利用者がキーを押したときに動く。
- 実行キー・PF3・PF4 の場合は、到着情報を登録する。
- 照会元がDDP回送マスターなら、DDP回送マスターに到着情報を書き込む。
- 発送鑑データと到着鑑データを集信データ(TDキュー SYUS)に出力する。
- 登録後、実行キーなら空の画面を表示して次の回送入力票NOの照会(BK15)に戻る。PF3・PF4 なら戻り先の画面に移る。
- PF2(取消)・CLEAR の場合は登録しない。
flowchart LR
BK16[BK16<br/>BK11600P<br/>確認画面を表示] --> BK17[BK17<br/>本プログラム<br/>確認・登録]
BK17 -- 実行(登録) --> BK15[BK15<br/>BK11500P<br/>次の回送入力票NO]
BK17 -- PF3・PF4(登録) --> BACK[戻り先の画面]
BK17 -- PF2(登録しない) --> BK15
BK17 -. 更新 .-> KAI[(VPKAISO<br/>DDP回送マスター)]
BK17 -. 出力 .-> SYUS[(TDキュー SYUS<br/>発送鑑・到着鑑)]
2. 画面仕様(MPBK150)
2.1 画面
画面は BK11500P と同じ MPBK150(BK11500P_仕様書.md の 2.1 参照)。前の処理(BK11600P)が表示した確認画面(全項目が入力不可)の状態で受け付ける。
本プログラムは画面から値を受け取らず、TSキューの値を使って登録する。画面に設定するのはシステム年月日・時分秒だけ(再表示時)。
2.2 ファンクションキー
| キー | 機能 | 処理概要 |
|---|---|---|
| 実行(Enter) | 継続 | 登録し、空の MPBK150 を表示して BK15 で待機 |
| PF2 | 取消 | 登録せず、TSキューを削除して空の MPBK150 を表示し、BK15 で待機 |
| PF3 | 終了 | 登録してから、一つ前の画面(サブメニュー)に戻る |
| PF4 | 戻り | 登録してから、メインメニューに戻る |
| CLEAR | 強制終了 | 登録せず、TSキューを削除して終了画面(ELEPHAN)を表示して終了 |
| 上記以外 | 再表示 | 画面のデータ部分を再表示し、BK17 で待機 |
PF3・PF4 は、ソースのコメントにも「PF3、PF4のとき回送マスター更新及び集信ログに書き」とあり、登録してから戻る仕様になっている。
3. インターフェース
3.1 通信領域(COMMAREA:256バイト)
| 項目ID | 型 | 本プログラムでの用途 |
|---|---|---|
| CRT_BACK_KOSU/CRT_BACK_DATA(5) | 戻り先画面のスタック(PF3・PF4) | |
| TSQ_LENGTH | 2進(15) | TSキューの長さ(BK11500P が 280 を設定) |
| TSQ_ID | 文字(8) | TSキュー名(BK11500P が端末ID+'BK15' を設定) |
| XC_RTNCD | 2進(31) | 戻りコード(作業用) |
| COMM_TEN_CODE | 数字(4) | 事業所コード(店所コード)。集信データの入力店所コード |
| COMM_TEN_ADRCD | 数字(11) | 事業所の所在地コード。発送鑑データの着地コード |
| COMM_ITEM_DDP | 文字(2) | 照会元('1':DDP回送マスター、'2':センター)。'1' の場合だけDDP回送マスターを更新 |
3.2 TSキュー(CHK_DSP_WORK:280バイト)
レイアウトは BK11500P と同じ(BK11500P_仕様書.md の 3.2 参照)。本プログラムは読み込んで削除するだけで、書き戻さない。登録に使う項目:
| 項目ID | 項目名 |
|---|---|
| BK15031B | 回送入力票NO |
| BK15041B | 発店コード |
| BK15051B~BK15055B | 発送年・発送月・発送日・発送時・発送分 |
| BK15061B | 入力区分 |
| BK15081B | 到着店コード |
| BK15091B~BK15095B | 到着年・到着月・到着日・到着時・到着分 |
| BK15121B | 社番 |
| BK15131B・BK15132B | 乗務員コード1・2 |
| BK15141B・BK15151B | 指示キロメートル・出発時・到着時 |
| BK15KIKM | 回送粁程(BK11600P が計算した走行キロメートル) |
3.3 参照ファイル
共通の読込みルーチン(DPVSSRH)で読む。戻り値 'O':正常、'N':該当なし、'E':その他エラー。
| 識別 | データセット | 名称 | キー | 取得する項目 |
|---|---|---|---|---|
| TE | VPTENMS | DDP 店所マスター(DDPTENMS) | 発店コード | VETNADCD(店所所在地コード) |
| MO | VPMORTR | DDP 車両マスター(DDPMORTR) | 社番 | VESYHYTN(最大積載量) |
3.4 更新ファイル:VPKAISO(DDP 回送マスター、DDPKAISO)
照会元がDDP(COMM_ITEM_DDP = '1')の場合だけ、回送入力票NOをキーに更新用に読み、次の項目を書き換える。
| 項目ID | 項目名 | 設定値 |
|---|---|---|
| KSKJKINO | 回送入力票NO | 回送入力票NO |
| KSKJDTKB | データ区分(1:出発、2:到着のみ、3:両方) | 2 ならそのまま。それ以外は 3 |
| KSKJCTCD | 回送着店所コード | 到着店コード |
| KSKJTCDT | 回送到着(年月日時分) | 到着年・月・日・時・分(YYMMDDHHMM) |
| KSKJKIKM | 回送粁程 | 回送粁程(BK15KIKM) |
| KSKJSJKD | 指示粁 出発時 | 指示キロメートル・出発時 |
| KSKJSJKT | 指示粁 帰着時 | 指示キロメートル・到着時 |
その他の項目は変更しない。
3.5 出力:集信データ(TDキュー SYUS)
発送鑑データ(集信R2 発送鑑データ、SSS21、384バイト)
| 項目ID | 項目名 | 設定値 |
|---|---|---|
| SS21TNCD | 入力店所コード | 事業所コード(COMM_TEN_CODE) |
| SS21KEKB | 継続区分 | 0 |
| SS21REID | レコードID | 230 |
| SS21LENG | レコード長 | 384 |
| SS21ENYY~SS21ENDD | 入力 年・月・日 | 出力時点のシステム日付 |
| SS21ENHH~SS21ENSS | 入力 時・分・秒 | 出力時点のシステム時刻 |
| SS21SINO | 指令書NO | 0 |
| SS21SONO | 送付書NO | 回送入力票NO |
| SS21TRIK | 取消区分(ソースのコメントでは「訂正区分」) | 1 |
| SS21HATN | 出発 店所コード | 発店コード |
| SS21STYY~SS21STMI | 出発 年・月・日・時・分 | 発送年・月・日・時・分 |
| SS21TYYY~SS21TYDD | 出発 到着予定年月日 | 0 |
| SS21HACH | 発地コード | 発店の店所所在地コードの先頭5桁。店所マスターになければ 0 |
| SS21ORTN | 卸店コード | 到着店コード |
| SS21CCHI | 着地コード | 事業所の所在地コード(COMM_TEN_ADRCD)の先頭5桁 |
| SS21ATTN | 扱い店所コード | 到着店コード |
| SS21USKM | 輸送粁程 | 回送粁程(BK15KIKM) |
| SS21SHKB | 運行車区分 | 13 |
| SS21SBAN | 積載社番(車号) | 社番 |
| SS21HTON | 標屯 | 車両マスターの最大積載量 ÷ 1000。車両マスターになければ空 |
| SS21OWKB | ow区分 | 乗務員コード2 = 0 なら 1(ワンマン)、それ以外は 2(ダブル) |
| SS21YOCD | 傭車会社コード | 0 |
| SS21KEIT | 形態 | 0 |
| SS21YORY | 定額傭車料 | 0 |
| SS21GIKN | 直集軒数 | 0 |
| SS21TUOR | 積区分 | 0 |
| SS21HOKN | 一車保険料 | 0 |
| SS21FUGO | 符合 | '0' |
| SS21ROGA | 増減重量 | 0 |
| SS21KNKB | 入力区分 | 入力区分 |
| SS21KOKU | 航空会社区分 | 0 |
| SS21KORO | 航空航路区分 | 0 |
| SS21STAT | 指示粁 出発時 | 指示キロメートル・出発時 |
| SS21KCHA | 指示粁 帰着時 | 指示キロメートル・到着時 |
| SS21CODA・SS21CODB | 従業員コードA・B | 乗務員コード1・2 |
| SS21TCDT | 到着年月日時分 | 0 |
| SS21ORNO(1)・(2) | 行き分指令書NO1・2 | 0 |
| SS21FKNO(1)・(2) | 帰り分指令書NO1・2 | 0 |
| SS21SPAC | スペース | 空白 |
作成前に、レコード全体をクリアしている。
到着鑑データ(集信R1・2 到着鑑データ、SSS13、384バイト)
| 項目ID | 項目名 | 設定値 |
|---|---|---|
| SSS3TNCD | 入力店所コード | 事業所コード(COMM_TEN_CODE) |
| SSS3KEKB | 継続区分 | 0 |
| SSS3REID | レコードID | 130 |
| SSS3LENG | レコード長 | 384 |
| SSS3ENYY~SSS3ENDD | 入力 年・月・日 | 発送鑑データと同じシステム日付 |
| SSS3ENHH~SSS3ENSS | 入力 時・分・秒 | 発送鑑データと同じシステム時刻 |
| SSS3CHTN | 到着店所コード | 到着店コード |
| SSS3KNSU | データ件数 | 1 |
| SSS3SINO | 指令書NO | 0 |
| SSS3SONO | 送付書NO(回送NO) | 回送入力票NO |
| SSS3CHYY~SSS3CHMI | 到着 年・月・日・時・分 | 到着年・月・日・時・分 |
| SSS3ORKB | 卸区分 | 0 |
| SSS3GHKN | 直配件数 | 0 |
作成前に、レコード全体をクリアしている(2件目以降の明細や委託会社コードは空)。
4. 処理仕様
4.1 処理の流れ
flowchart TD
S([開始]) --> AID{押されたキー}
AID -- CLEAR --> CLR[TSキュー削除<br/>終了画面で終了]
AID -- PF2 --> P2[TSキュー削除<br/>空の画面]
P2 --> R15a([BK15 で待機])
AID -- その他のキー --> RD[画面のデータ部分を再表示]
RD --> R17([BK17 で待機])
AID -- 実行 --> RCV[MPBK150 を受信]
AID -- PF3・PF4 --> TSQ
RCV --> TSQ{TSキューを<br/>読めたか}
TSQ -- キューなし --> CLR
TSQ -- 読めた --> DEL[TSキューを削除]
DEL --> DDP{照会元 = 'DDP'}
DDP -- はい --> UPD[DDP回送マスターを更新 4.3]
DDP -- いいえ --> OUT
UPD --> OUT[発送鑑データ・到着鑑データを出力 4.4]
OUT --> KEY{押されたキー}
KEY -- 実行 --> NEW[空の画面]
NEW --> R15b([BK15 で待機])
KEY -- PF3 --> PREV[一つ前の画面 4.5]
KEY -- PF4 --> MAIN[メインメニュー 4.5]
4.2 開始時の処理
- 例外条件の分岐先を登録する(画面データなし・レコードなし・ファイルの終わり → いずれも終了処理)。
- 押下キーの分岐先を登録する。
| キー | 分岐先 |
|---|---|
| PF3・PF4 | 画面を受信せずに、TSキューの読込み(登録処理)へ |
| CLEAR | 終了処理(4.7) |
| 実行・PF3・PF4・CLEAR 以外 | ファンクションキー処理(4.6) |
| 実行 | 画面 MPBK150 を受信して、TSキューの読込み(登録処理)へ |
- TSキュー(通信領域の TSQ_ID・TSQ_LENGTH)を読む。
- キューがない場合:登録せずに終了処理(4.7)を行う。
- 読めた場合:キューを削除する。
4.3 DDP回送マスターの更新
照会元(COMM_ITEM_DDP)が '1'(DDP回送マスターから照会)の場合だけ行う。
- 回送入力票NOをキーに、DDP回送マスター(VPKAISO)を更新用に読む。
- 読めた場合、3.4 の項目を設定して書き換える。
- 読めなかった場合・書換えエラーの場合は、何もせずに次の処理に進む。
照会元が '2'(センターから照会)の場合は、DDP回送マスターの更新も新規登録も行わない。
4.4 集信データの出力(OK_DATA_RTN)
- 発送鑑データをクリアし、3.5 のとおり編集する。
- システム日付・時刻を取得し、入力年月日時分秒に設定する。
- 発地コード:発店コードで店所マスターを読み、店所所在地コードの先頭5桁(なければ 0)。
- 標屯:社番で車両マスターを読み、最大積載量 ÷ 1000(なければ空)。
- TDキュー SYUS に発送鑑データ(384バイト)を出力する。
- 到着鑑データをクリアし、3.5 のとおり編集する。
- TDキュー SYUS に到着鑑データ(384バイト)を出力する。
4.5 登録後の画面
| キー | 処理 |
|---|---|
| 実行 | 画面をクリアし、システム年月日・時分秒を設定して、空の MPBK150 を画面を消去して送信する。トランザクション BK15 で待機(次の回送入力票NOの照会) |
| PF3 | 戻り先画面のスタックから一つ前の画面を決め(下表)、共通ヘッダ画面(MPDM010)に日時を設定して送信し、戻り先の画面をデータなしで送信して、そのトランザクションで待機 |
| PF4 | スタックの1件目(メインメニュー)に戻る。表示方法は PF3 と同じ |
| PF3 の条件 | 戻り先 |
|---|---|
| スタックが空 | なし(終了画面を表示して終了) |
| 最上位が MPBK150 以外 | 最上位の画面(1件取り除く) |
| 最上位が MPBK150 で、その下がない | なし(終了画面を表示して終了) |
| 最上位が MPBK150 で、その下がある | その下の画面(2件取り除く) |
| PF4 の条件 | 戻り先 |
|---|---|
| スタックが空、または1件目が MPBK150 | なし(終了画面を表示して終了) |
| 1件目が MPBK150 以外 | 1件目の画面(スタックを全件消去) |
TSキューは登録処理の最初に削除済みのため、ここでは削除しない。
4.6 ファンクションキーの処理(PF2・その他)
| キー | 処理 |
|---|---|
| PF2:取消 | 画面をクリアし、TSキューを削除して、システム年月日・時分秒を設定した空の MPBK150 を画面を消去して送信する。BK15 で待機。登録は行わない |
| その他 | システム年月日・時分秒を設定し、画面のデータ部分を再送信して、BK17 で待機 |
4.7 終了処理・例外処理
| 発生条件 | 処理 |
|---|---|
| CLEAR キー | TSキューを削除し、終了画面(ELEPHAN)を表示して終了。登録は行わない |
| 画面データなし(MAPFAIL)・レコードなし(NOTFND)・ファイルの終わり(ENDFILE) | CLEAR キーと同じ |
| TSキューがない | CLEAR キーと同じ |
4.8 システム日付・時刻の設定(TIMESET_SUB_RTN)
現在の日時を YY/MM/DD・HH:MM:SS に編集し、画面のシステム年月日(BK15011)・システム時分秒(BK15021)に設定する(入力不可・変更フラグオン)。集信データの入力年月日時分秒には、このとき取得した日時を年・月・日、時・分・秒に分けて使う。
5. メッセージ一覧
本プログラムはメッセージを設定しない。実行キーで登録した後は空の画面になり、メッセージ欄も空になる。
6. 画面遷移
flowchart LR
BK16[BK16<br/>確認画面] --> BK17[BK17<br/>本プログラム]
BK17 -- 実行(登録) --> BK15[BK15<br/>空の画面]
BK17 -- PF2(登録しない) --> BK15
BK17 -- PF3(登録) --> PREV[一つ前の画面]
BK17 -- PF4(登録) --> MAIN[メインメニュー]
BK17 -- その他 --> BK17
BK17 -- CLEAR・例外(登録しない) --> END[ELEPHAN 終了]
7. 補足・留意事項
- PF3・PF4 でも登録される:確認画面で PF3(終了)・PF4(戻り)を押すと、実行キーと同じく登録してから戻る。登録せずに抜けるには PF2(取消)か CLEAR を使う。
- センター照会の回送票はDDP回送マスターに登録されない:照会元がセンター('2')の場合、DDP回送マスターの更新も新規登録もせず、集信データだけを出力する。
- 回送マスターの更新エラーを無視する:DDP回送マスターの読込み・書換えがエラーになっても、メッセージを出さずに集信データを出力する。マスターと集信データが食い違うおそれがある。
- 集信データの出力エラーを想定していない:TDキューへの書込みに戻りコードの判定がなく、エラー時は CICS の異常終了になる。発送鑑データだけが出力され、到着鑑データが出力されない状態も起こりうる。
- 登録完了のメッセージがない:実行キーで登録した後は空の画面になるだけで、登録したことを示すメッセージは表示しない。
- 同じ回送票の再登録を防いでいない:到着済みの回送票でも、BK15 で照会して再度登録すると、回送マスターを上書きし、集信データを再出力する。
- 発送鑑データの着地コード:着地コードは到着店ではなく、入力した端末の事業所の所在地コードから作る。到着店と入力店が異なる場合は、到着店の所在地と一致しない。
- データ区分の更新:回送マスターのデータ区分が 1(出発)なら 3(両方)に変える。2(到着のみ)・3 はそのまま。
- 使っていない領域:HELP画面コントロールエリア、日付計算用の作業域(YMD・JYMD・WK_YMD1~3・WK_JDATEA/B・WK_KM など)、PF5_SW、END_MSG、CNT_MAX、TSQ_LENGTH_W 等は使っていない。