プロジェクト

全般

プロフィール

レビュー指摘 #12086 » BK11700P_仕様書.md

幸塚 和久, 2026-10-26 11:21 午前

 

プログラム仕様書 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 機能概要

回送到着入力の確認画面で、利用者がキーを押したときに動く。

  1. 実行キー・PF3・PF4 の場合は、到着情報を登録する。
    • 照会元がDDP回送マスターなら、DDP回送マスターに到着情報を書き込む。
    • 発送鑑データと到着鑑データを集信データ(TDキュー SYUS)に出力する。
  2. 登録後、実行キーなら空の画面を表示して次の回送入力票NOの照会(BK15)に戻る。PF3・PF4 なら戻り先の画面に移る。
  3. 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 開始時の処理

  1. 例外条件の分岐先を登録する(画面データなし・レコードなし・ファイルの終わり → いずれも終了処理)。
  2. 押下キーの分岐先を登録する。
キー 分岐先
PF3・PF4 画面を受信せずに、TSキューの読込み(登録処理)へ
CLEAR 終了処理(4.7)
実行・PF3・PF4・CLEAR 以外 ファンクションキー処理(4.6)
実行 画面 MPBK150 を受信して、TSキューの読込み(登録処理)へ
  1. TSキュー(通信領域の TSQ_ID・TSQ_LENGTH)を読む。
    • キューがない場合:登録せずに終了処理(4.7)を行う。
    • 読めた場合:キューを削除する。

4.3 DDP回送マスターの更新

照会元(COMM_ITEM_DDP)が '1'(DDP回送マスターから照会)の場合だけ行う。

  1. 回送入力票NOをキーに、DDP回送マスター(VPKAISO)を更新用に読む。
  2. 読めた場合、3.4 の項目を設定して書き換える。
  3. 読めなかった場合・書換えエラーの場合は、何もせずに次の処理に進む。

照会元が '2'(センターから照会)の場合は、DDP回送マスターの更新も新規登録も行わない。

4.4 集信データの出力(OK_DATA_RTN)

  1. 発送鑑データをクリアし、3.5 のとおり編集する。
    • システム日付・時刻を取得し、入力年月日時分秒に設定する。
    • 発地コード:発店コードで店所マスターを読み、店所所在地コードの先頭5桁(なければ 0)。
    • 標屯:社番で車両マスターを読み、最大積載量 ÷ 1000(なければ空)。
  2. TDキュー SYUS に発送鑑データ(384バイト)を出力する。
  3. 到着鑑データをクリアし、3.5 のとおり編集する。
  4. 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. 補足・留意事項

  1. PF3・PF4 でも登録される:確認画面で PF3(終了)・PF4(戻り)を押すと、実行キーと同じく登録してから戻る。登録せずに抜けるには PF2(取消)か CLEAR を使う。
  2. センター照会の回送票はDDP回送マスターに登録されない:照会元がセンター('2')の場合、DDP回送マスターの更新も新規登録もせず、集信データだけを出力する。
  3. 回送マスターの更新エラーを無視する:DDP回送マスターの読込み・書換えがエラーになっても、メッセージを出さずに集信データを出力する。マスターと集信データが食い違うおそれがある。
  4. 集信データの出力エラーを想定していない:TDキューへの書込みに戻りコードの判定がなく、エラー時は CICS の異常終了になる。発送鑑データだけが出力され、到着鑑データが出力されない状態も起こりうる。
  5. 登録完了のメッセージがない:実行キーで登録した後は空の画面になるだけで、登録したことを示すメッセージは表示しない。
  6. 同じ回送票の再登録を防いでいない:到着済みの回送票でも、BK15 で照会して再度登録すると、回送マスターを上書きし、集信データを再出力する。
  7. 発送鑑データの着地コード:着地コードは到着店ではなく、入力した端末の事業所の所在地コードから作る。到着店と入力店が異なる場合は、到着店の所在地と一致しない。
  8. データ区分の更新:回送マスターのデータ区分が 1(出発)なら 3(両方)に変える。2(到着のみ)・3 はそのまま。
  9. 使っていない領域:HELP画面コントロールエリア、日付計算用の作業域(YMD・JYMD・WK_YMD1~3・WK_JDATEA/B・WK_KM など)、PF5_SW、END_MSG、CNT_MAX、TSQ_LENGTH_W 等は使っていない。
(1-1/5)