プログラム仕様書 BK10030 回送到着入力 - BK21500P(① センター照会)
| 項目 |
内容 |
| 機能ID・機能名 |
BK10030 回送到着入力(機能仕様書:BK10030_回送到着入力_仕様書.md) |
| システムID |
BK |
| サブシステムID |
BK0070 |
| サブシステム名 |
回送・域内便到着入力 |
| 参考資料 |
・現行ソース BK21500P.pl1 ・画面設計書「BK0070_回送・域内便到着入力.xlsx」(Ver.1.2023.1016.3):資産一覧、レコードフォーマット |
| 関連仕様書 |
BK11500P_仕様書.md(呼出し元:回送到着入力(照会)) |
1. 概要
| 項目 |
内容 |
| プログラムID |
BK21500P(手続き名:BK21500) |
| プログラム名称 |
回送到着入力(センター照会) |
| 言語 |
PL/I(CICS コマンドレベル) |
| 処理形態 |
オンライン(APPC 会話の相手側プログラム。画面なし) |
| 動作環境 |
CIC1(センター側 CICS) |
| トランザクションID |
B15K |
| パターンID |
PPOC020P(1987/04/30)、業務 BXHEAD30。DB は読込みのみ |
| 呼出し元 |
BK11500P(DDP 側、トランザクション BK15)。CONNECT PROCESS で B15K を起動する |
| 参照ファイル |
VKKAISO(センターの回送マスター、KAISOHBN) |
| 更新ファイル |
なし |
| 通信領域 |
なし(会話でデータを受け渡す) |
1.1 機能概要
DDP 側の回送到着入力(BK11500P)で、DDP の回送マスターに回送票が見つからなかったときに呼ばれる。
- DDP から回送入力票NOを受け取る。
- センターの回送マスター(VKKAISO)を読む。
- 取消済みかどうか、入力区分が対象(店所間回送・域内)かどうかを判定する。
- 回送マスターの内容とエラーコードを編集して DDP に返す。
sequenceDiagram
participant DDP as BK11500P(DDP・BK15)
participant CEN as BK21500P(センター・B15K)
participant VK as VKKAISO(センター回送マスター)
DDP->>CEN: ALLOCATE / CONNECT PROCESS(B15K)
DDP->>CEN: SEND 49バイト(回送入力票NO)INVITE WAIT
CEN->>CEN: RECEIVE 49バイト
CEN->>VK: READ(キー:回送入力票NO)
VK-->>CEN: 回送マスター
CEN->>DDP: SEND 89バイト(エラーコード+回送内容)INVITE WAIT
DDP->>CEN: SEND 1バイト LAST WAIT
CEN->>CEN: RECEIVE(終了の確認)
CEN->>CEN: RETURN
DDP->>DDP: FREE
2. インターフェース
2.1 受信データ(IN_DATA:49バイト)
| 項目ID |
型 |
項目名 |
本プログラムでの扱い |
| SESS_TRID |
文字(4) |
トランザクションID('B15K') |
使わない |
| WBK2KSNO |
数字(8) |
回送入力票NO |
回送マスターのキー |
| WBK2NYKB |
数字(1) |
入力区分 |
使わない(DDP 側は 0 をセット) |
| WBK2ORN1・WBK2ORN2 |
数字 |
指令書NO 行き分 no1・no2 |
使わない |
| WBK2FKN1・WBK2FKN2 |
数字 |
指令書NO 帰り分 no1・no2 |
使わない |
レイアウトは DPCEB02K(回送・航空・域内入力(DDP~センター))。
2.2 送信データ(OUT_DATA:89バイト)
| 項目ID |
型 |
項目名 |
設定値 |
| SESS_ERR_FLG |
文字(1) |
エラーフラグ |
'0':通常(正常・業務エラーとも)、'2':CICS エラー |
| SESS_ERR_CODE |
文字(4) |
エラーコード |
3.3 参照 |
| UB02KSNO |
数字(8) |
回送入力票NO |
VSKJKINO |
| UB02INKB |
数字(1) |
入力区分 |
VSKJNYUK |
| UB02HTCD |
数字(4) |
発店 |
VSKJHTCD(回送発送店所コード) |
| UB02SYMD |
数字(6) |
発送 年月日 |
VSKJYMDH |
| UB02DHMM |
数字(4) |
発送 時分 |
VSKJHHMM |
| UB02TOCD |
数字(4) |
到着店 |
VSKJCHCD |
| UB02CYMD |
数字(6) |
到着 年月日 |
VSKJTYMD |
| UB02CHMM |
数字(4) |
到着 時分 |
VSKJHMHM |
| UB02ARCO |
数字(1) |
航空会社区分 |
VSKJKOKU |
| UB02SYAB |
数字(5) |
社番 |
VSKJKSBN(回送社番) |
| UB02JYCA・UB02JYCB |
数字(6) |
乗務員コードA・B |
VSKJCDAA・VSKJCDBB |
| UB02STKM |
数値(7) |
指示粁 出発時 |
VSKJSPTK |
| UB02TCKM |
数値(7) |
指示粁 到着時 |
VSKJTCHG |
| UB02SKOM |
数値(3) |
走行粁 |
3.2 参照 |
| UB02SRNO |
文字(16) |
スペース |
設定しない(空) |
| UB02TOKB |
数字(1) |
積卸区分 |
VSKJSKKB |
| UB02UNKB |
数字(2) |
運行車区分 |
13 |
レイアウトは CEDPB15K(回送・航空・域内照会到着(DD~セン))。項目名はレコードフォーマットの名称。
2.3 参照ファイル:VKKAISO(センター回送マスター、KAISOHBN)
| 項目 |
内容 |
| キー |
回送入力票NO(8桁) |
| 読込み長 |
170バイト |
| 判定に使う項目 |
VSKJSJKB(削除区分:0 初期値、9 削除)、VSKJNYUK(入力区分:1 店所間回送、2 航空、3 域内、4 ライナー、5 フェリー) |
3. 処理仕様
3.1 処理の流れ
flowchart TD
S([B15K 起動]) --> H[CICS エラー時の分岐先を登録]
H --> R1[DDP から 49バイト受信]
R1 --> CLR[送信エリアをクリア<br/>エラーフラグ '0'・コード '0000']
CLR --> RD{VKKAISO を読む}
RD -- 正常 --> DL{削除区分 = 9}
DL -- はい --> E9[コード '0009']
DL -- いいえ --> KB{入力区分 = 1 または 3}
KB -- いいえ --> E3[コード '0003']
KB -- はい --> OK[コード '0000' のまま]
E9 --> SET[回送マスターの内容を<br/>送信エリアにセット 3.2]
E3 --> SET
OK --> SET
RD -- 該当なし --> E1[コード '0001']
RD -- その他エラー --> E2[コード '0002']
SET --> SND[DDP に 89バイト送信<br/>INVITE WAIT]
E1 --> SND
E2 --> SND
SND --> R2[DDP からの終了を受信]
R2 --> RET([RETURN])
3.2 処理内容
- CICS コマンドがエラーになったときの分岐先(エラー処理 3.4)を登録する。
- DDP から受信データ(49バイト)を受け取る。
- 送信エリアをクリアし、エラーフラグ = '0'、エラーコード = '0000' にする。
- 回送入力票NO(WBK2KSNO)をキーに、センター回送マスター(VKKAISO)を 170バイトで読む。
- 読めた場合:
- 削除区分(VSKJSJKB)= 9 なら、エラーコード = '0009'(取消済み)。
- そうでなければ、入力区分(VSKJNYUK)が 1 または 3 以外なら、エラーコード = '0003'(入力区分エラー)。
- エラーコードにかかわらず、回送マスターの内容を送信エリアにセットする(2.2)。
- 走行粁は次のとおり計算する。
| 条件 |
走行粁(UB02SKOM) |
| 指示粁 出発時 > 到着時(メーターが一巡) |
(到着時 + 10,000,000) − 出発時 |
| 上記以外 |
到着時 − 出発時 |
- 読めなかった場合:該当なしならエラーコード = '0001'、それ以外のエラーなら '0002'(エラーフラグはどちらも '0')。送信エリアの回送内容は空のまま。
- 送信データ(89バイト)を DDP に送信し、応答を待つ(INVITE WAIT)。
- DDP からの最後のデータ(会話の終了)を受信する。
- 終了する(RETURN)。
3.3 エラーコード一覧
| エラーフラグ |
エラーコード |
意味 |
DDP 側(BK11500P)の表示 |
| '0' |
0000 |
正常(入力区分 1・3、取消されていない) |
照会内容を表示し、到着入力へ |
| '0' |
0001 |
回送マスターに該当なし |
ERR 3:回送未入力です。 |
| '0' |
0002 |
回送マスターの読込みエラー |
ERR 3:センターの回送マスターの I/Oエラー |
| '0' |
0003 |
入力区分が 1・3 以外 |
ERR 5:この回送票の入力区分がエラーです。再入力して下さい |
| '0' |
0009 |
取消済み |
ERR 9:この回送票は取消済みです。 再入力して下さい |
| '2' |
BU02 |
CICS コマンドのエラー(3.4) |
ERR ?:???????????? |
3.4 エラー処理(CICS ERROR 条件)
受信・送信などの CICS コマンドでエラーが起きた場合(回送マスターの読込みは RESP で判定するため対象外):
- 送信エリアをクリアする。
- エラーフラグ = '2'、エラーコード = 'BU02' にする。
- 3.2 の手順 7(送信)から処理を続ける。
4. 補足・留意事項
-
取消済み・入力区分エラーでも内容を返す:エラーコードが '0009'・'0003' の場合も、回送マスターの内容を送信エリアにセットして返す。DDP 側(BK11500P)はエラーコードだけを見て、内容は使わない。
-
走行粁の桁あふれ:走行粁(UB02SKOM)は3桁の数値項目。1,000km 以上になると上位の桁が失われ、正しい値が返らない。
-
送信時のエラーでループするおそれ:エラー処理の後は送信(手順 7)に戻る。送信そのものがエラーの場合は、再びエラー処理に入り、送信を繰り返すおそれがある。
-
受信データで使うのは回送入力票NOだけ:入力区分・指令書NOは受け取るが使わない。
-
航空会社区分・積卸区分:送信データにセットしているが、DDP 側(BK11500P)では使っていない。
-
使っていない領域:VKEY2(VKUNKSH 用のキー)、UB02SRNO は使っていない。