# プログラム仕様書　BU10400P（配車入力（自社増便・傭車定便／増便）照会）

| 項目 | 内容 |
|---|---|
| システムID | BU |
| 参考資料 | ・現行ソース BU10400P.pl1<br/>・画面イメージ MPBU040.jpg（配車入力（増便・傭車））<br/>・現行の解析資料 BU0040_配車入力（自社増）.xlsx（シート「MPBU040」「BU10400P_参考」「レコードフォーマット」「資産一覧」） |
| 項目名の出典 | 画面項目は解析資料のシート「MPBU040」の日本語名、センター送受信・マスターの項目はシート「レコードフォーマット」の日本語名称 |

---

## 1. 概要

| 項目 | 内容 |
|---|---|
| プログラムID | BU10400P（手続き名：BU10400） |
| プログラム名称 | 配車入力（自社増便、傭車増・定便）照会 |
| 言語 | PL/I（CICS コマンドレベル） |
| 処理形態 | オンライン（CICS 疑似会話型） |
| 動作環境 | SV（DDP 側） |
| トランザクションID | BU04 |
| パターンID | PPOD250P（1987/05/01）、業務 BUSHRE30。冒頭コメントに「２０００年対応済み」とある |
| 使用画面（マップ） | MPBU040（配車入力）、MPDM010（共通ヘッダ画面）、ELEPHAN（終了画面） |
| 次の処理 | 照会OK後、傭車は BV05、自社増便は BU05 で同じ画面の入力を続ける（4.6） |
| センター照会 | あり。APPC で CIC1 のトランザクション B04U に照会（4.5） |
| 参照ファイル | VPTENMS（ＤＤＰ 店所マスター）、VPJYUGY（ＤＤＰ 従業員マスター）、VPUNKEI（ＤＤＰ 運賃計算荷主マスター（１））。いずれも参照のみ |
| 呼出しモジュール | LSO0020（チェックデジット）、LSO0130（日数計算）、SL11100P（印刷装置チェック、LINK） |
| 起動する印刷 | BV13（BV11300P、自社）、BV14（BV11400P、傭車）。テスト印刷・印刷装置の解放で START する |
| 一時記憶 | TSキュー（キュー名＝端末ID＋'BU04'）。エラー時は 44バイトのチェック結果、照会OK時は 724バイトの照会結果を書く |

### 1.1 機能概要

配車入力の1画面目（照会）。指令書をセンターに照会し、結果を画面に表示して、配車内容の入力（次のトランザクション）に引き継ぐ。通信領域の照会区分（COMM_INQ_KBN）で、次の2つの業務を切り替える。

| 照会区分 | 業務 | 画面見出し | 照会の方法 |
|---|---|---|---|
| '10' | 傭車配車入力（定便・増便） | 傭　車　配　車　入　力（定・増） | 定便：計画便コード＋発送日（月日）、または指令書NO を入力して実行<br/>増便：何も入力せずに PF10 |
| '10' 以外 | 自社増便配車入力 | 自　社　増　便　配　車　入　力 | 何も入力せずに PF10 |

1. 指令書NO・計画便コード・発店・発送日（月日）、印刷装置・枝番の印刷をチェックする。
2. センターに照会する。PF10 のときは新しい指令書NO の採番、それ以外は既存の指令書データの照会になる。
3. 照会結果（指令書の内容、名称）を画面に表示し、入力区分（UNKINKB）で入力できる指令書かを判定する。
4. 入力できる場合は、照会結果を TSキューに保存し、入力項目を入力可にして、傭車は BV05、自社増便は BU05 で待機する。
5. PF9 でテスト印刷、PF11 で印刷装置のリセットができる。

```mermaid
flowchart LR
    MENU[メニュー等] --> BU04[BU04<br/>本プログラム<br/>MPBU040]
    BU04 -- 照会OK（傭車） --> BV05[BV05<br/>傭車配車入力]
    BU04 -- 照会OK（自社増便） --> BU05[BU05<br/>自社増便配車入力]
    BU04 -- エラー --> BU04
    BU04 <-- APPC B04U --> CIC1[(センター CIC1)]
```

---

## 2. 画面仕様（MPBU040）

### 2.1 画面レイアウト（画面イメージより）

```
 日付  時刻                配車入力（増便・傭車）
 指令書ＮＯ ____-_____   発行枚数 _   運行形態 _
 運行車区分 __ XXXXX XXXXXXX           計画便コード ______ OOOOOOOO
 傭車会社コード _______ XXXXXXXX           標屯 __._ トン
 傭車形態 _ XXXXXX   一車保険料 ____円   定額傭車料 ______円
 積載車番 _____   トレーラー _____
 乗務員－Ａ ______ 氏名          乗務員Ｂ ______ 氏名
 発店       ____ 店所名   (__/__ __:__)
 最終卸店   ___  店所名   (__/__ __:__)
 最終着店   ___  店所名   ==> 次運行発店（仮眠、応援店）
 直配区分 _   直配着地 ____   フェリー会社 ____
 連絡事項 ____________   携帯管理№ ___   鮮魚保険 ____円
 ── 次の指令書の情報 ＊自社増便＊ ──（3行）
   発店 0000 店所名 (__/__)  運行形態 _   最終卸店 ___ 店所名 (__/__)
   次運行発店／最終着店 ___ 店所名        指令書NO 0000-00000
 実行：継続 2：取消 3：終了 4：戻り   印刷装置 ____  枝番の印刷 _ 1:ｱﾘ
 メッセージ                                              コード
```

### 2.2 画面項目一覧

入出力の **I** は本プログラムでチェックする入力項目。**O** は照会結果の表示。照会OK後に入力可にする項目（4.6）の入力・チェックは次のトランザクション（BV05・BU05）で行う。

| No | 項目ID | 項目名 | 属性・桁 | 入出力 | 内容 |
|---|---|---|---|---|---|
| 1 | BU04HED | ヘッダータイトル | 文字 34 | O | 1.1 の見出し（PF2・PF12 でセット） |
| 2 | BU04011 | システム日付 | 文字 8 | O | `YY/MM/DD` |
| 3 | BU04021 | システム時刻 | 文字 8 | O | `HH:MM:SS` |
| 4 | BU04031 | 指令書№（頭４桁） | 数字 4 | I／O | 照会キー（傭車の定便）。照会結果の指令書ＮＯ（UNKSHNO）の頭4桁を表示 |
| 5 | BU04032 | 指令書№（後５桁） | 数字 5 | I／O | 同上（後5桁） |
| 6 | BU04033 | 発行枚数 | 数字 1 | O | 指令書発行枚数（UNKSHCN）。PF10 の新規は傭車 1、自社 2 |
| 7 | BU04034 | 運行形態 | 数字 1 | O | 運行形態区分（UNKKEIT、2.3） |
| 8 | BU04041 | 運行車区分 | 数字 2 | O | 運行車区分（UNKKUBN、2.3） |
| 9 | BU04042 | 運行車区分名 | 文字 5 | O | 2.3 |
| 10 | BU04043 | 運行車形態名 | 文字 7 | O | 運行形態区分の名称（2.3） |
| 11 | BU04044 | 計画便コード | 数字 6 | I／O | 照会キー（傭車の定便）。照会結果の計画便コード（UNKBNCD、0 なら表示しない） |
| 12 | BU04045 | 便名 | 文字 16 | O | 便名（漢字）（UNKBNNM） |
| 13 | BU04051 | 傭車会社コード | 数字 7 | O | 傭車会社コード（UNKYOSC） |
| 14 | BU04052 | 傭車会社名 | 文字 16 | O | 運賃計算荷主マスター（１）の顧客略名（漢字） |
| 15 | BU04053 | 標屯（整数） | 数字 2 | O | 積載車標屯（UNKTONS）の整数部。運行車区分が 2（傭車）のときだけ表示 |
| 16 | BU04054 | 標屯（少数） | 数字 1 | O | 同上の小数部 |
| 17 | BU04061 | 傭車形態 | 数字 1 | O | 傭車使用形態（UNKYOSK、2.3）。0・1 は表示しない |
| 18 | BU04062 | 傭車形態名 | 文字 6 | O | 2.3 |
| 19 | BU04063 | 一車保険料 | 数字 4 | O | 一車保険料（傭車の場合）（UNKYOSH）。前ゼロを除いて左詰め |
| 20 | BU04064 | 定額傭車料 | 数字 6 | O | 定額傭車料（UNKYSRY）。前ゼロを除いて左詰め |
| 21 | BU04071 | 積載車番 | 数字 5 | O | 積載車番（UNKCARS）。解析資料の表記は「積載社番」 |
| 22 | BU04072 | トレーラー | 数字 5 | O | トレーラ頭・コンテナ車（UNKCART） |
| 23 | BU04081 | 乗務員Ａコード | 数字 6 | O | 乗務員Ａ（UNKDRIA） |
| 24 | BU04082 | 乗務員Ａ名 | 文字 14 | O | 999999 は「ダミーコード」、それ以外は従業員マスターの従業員氏名（漢字） |
| 25 | BU04083 | 乗務員Ｂコード | 数字 6 | O | 乗務員Ｂ（UNKDRIB） |
| 26 | BU04084 | 乗務員Ｂ名 | 文字 14 | O | 乗務員Ａ名と同じ |
| 27 | BU04091 | 発店コード | 数字 4 | **I**（必須）／O | 照会キー。通常は端末の店所で入力不可、PF12 で入力可。照会結果は発店（UNKSTTC） |
| 28 | BU04092 | 発店名 | 文字 14 | O | 店所マスターの店所略名（漢字） |
| 29 | BU04093 | 発送日　月 | 数字 2 | **I**（必須）／O | 照会キー。初期値は処理日付の月。照会結果は出発 月（UNKSTMM） |
| 30 | BU04094 | 発送日　日 | 数字 2 | **I**（必須）／O | 照会キー。初期値は処理日付の日。照会結果は出発 日（UNKSTDD） |
| 31 | BU04095 | 発送日　時 | 数字 2 | O | 出発 時（UNKSTHH）。時・分とも 0 なら表示しない |
| 32 | BU04096 | 発送日　分 | 数字 2 | O | 出発 分（UNKSTMI） |
| 33 | BU04101 | 最終卸店コード | 数字 4 | O | 最終卸店（UNKENTC） |
| 34 | BU04102 | 最終卸店名 | 文字 14 | O | 店所マスターの店所略名（漢字） |
| 35 | BU04103 | 最終卸店着日　月 | 数字 2 | O | 最終卸店到着 月（UNKENMM） |
| 36 | BU04104 | 最終卸店着日　日 | 数字 2 | O | 最終卸店到着 日（UNKENDD） |
| 37 | BU04105 | 最終卸店着日　時 | 数字 2 | O | 最終卸店到着 時（UNKENHH）。時・分とも 0 なら表示しない |
| 38 | BU04106 | 最終卸店着日　分 | 数字 2 | O | 最終卸店到着 分（UNKENMI） |
| 39 | BU04111 | 最終着店コード | 数字 4 | O | 次運行発店（UNKFUTC） |
| 40 | BU04112 | 最終着店名 | 文字 14 | O | 店所マスターの店所略名（漢字） |
| 41 | BU04121 | 直配区分 | 文字 1 | O | 直配区分（UNKGHKB） |
| 42 | BU04122 | 直配着地コード | 数字 5 | O | 直配着地コード（UNKGHCD） |
| 43 | BU04123 | フェリー会社 | 数字 7 | O | フェリー、ライナーコード（UNKFRCD） |
| 44 | BU04131 | 連絡事項 | 文字 20 | O | 連絡事項（UNKINFO、26バイト）の先頭20バイト。シフトコードの対応を補正 |
| 45 | BU04132 | 携帯管理№ | 文字 4 | O | 特定便区分＋特定便ＮＯ を表示する処理がコメントアウトされており、本プログラムではセットしない |
| 46 | BU04133 | 鮮魚保険 | 数字 4 | O | 一車保険料（自社、鮮魚の場合）（UNKFISH）。前ゼロを除いて左詰め |
| 47～60 | BU04141～BU04164 | ２－発送店コード・発送店名、２－出発日付 月・日、２－運行形態、２－最終卸店コード・最終卸店名、２－最終卸店到着日 月・日、２－次回運行便出発店所コード・名、２－指令書№（頭４桁・後５桁） | | ― | 次の指令書の情報（2枚目）。本プログラムでは値をセットせず、自社増便の新規のときに入力可にする（4.6）。２－運行形態は '0' を表示して入力不可 |
| 61～73 | BU04171～BU04194 | ３－（2枚目と同じ項目） | | ― | 次の指令書の情報（3枚目）。同上（３－運行形態は BU04175） |
| 74～86 | BU04201～BU04224 | ４－（2枚目と同じ項目） | | ― | 次の指令書の情報（4枚目）。同上（４－運行形態は BU04205） |
| 87 | BU04PRT | 印刷装置番号 | 文字 4 | I | 印刷装置の端末ID。任意 |
| 88 | BU04EDA | 枝番の印刷 | 数字 1 | I | '1'：あり。任意 |
| 89 | BU04241 | エラーメッセージ | 文字 69 | O | |
| 90 | BU04242 | エラーコード | 文字 5 | O | |

次の指令書の情報で自社増便の新規のときに入力可にするのは、各行の出発日付 月・日、最終卸店コード、最終卸店到着日 月・日、次回運行便出発店所コード（2枚目は BU04143・BU04144・BU04151・BU04153・BU04154・BU04161）。運行形態は '0' を表示して入力不可、発送店コード・名と指令書№は入力不可のまま。

### 2.3 コードと表示名

| 項目 | コード：表示名 |
|---|---|
| 運行車区分（UNKKUBN） | 1：ｼﾞｼﾔ、2：ﾖｳｼﾔ、3：10Tｺﾝ、4：5Tｺﾝ、5：ﾌｴﾘｰ、その他：??? |
| 運行形態（UNKKEIT） | 0：ﾌﾂｳ（入力区分が 6 のときは ?????）、1：ﾉﾘﾂｷﾞ、2：ﾄﾞﾂｷﾝｸﾞ、3：ﾏﾙﾆｳﾝｺｳ、4：ﾃｱﾃ ﾌｴﾘ、5：ｶｲｿｳ、6：ｵｳｴﾝ ｶﾗ、7：ｵｳｴﾝ ﾂﾐ、8：ｸｳｼﾔ、その他：????? |
| 傭車形態（UNKYOSK） | 0・1：表示なし、2：ﾄﾝ ｱﾀﾘ、3：ﾃｲｶﾞｸ、4：* ﾘﾖｳ（1992/03/03 追加）、その他：???? |

### 2.4 ファンクションキー

| キー | 機能 | 処理概要 |
|---|---|---|
| 実行（Enter） | 継続 | 照会キーをチェックしてセンターに照会する（傭車の定便） |
| PF2 | 取消 | 初期画面を表示する（4.8） |
| PF3 | 終了 | 印刷装置を解放し、一つ前の画面に戻る |
| PF4 | 戻り | 印刷装置を解放し、メインメニューに戻る |
| PF9 | テスト印刷 | 印刷装置にテスト印刷を出す（4.9） |
| PF10 | 新規（増便） | 新しい指令書NO を採番する照会を行う |
| PF11 | 印刷装置リセット | 印刷装置を強制解除して再接続する（4.9） |
| PF12 | 発店変更 | 発店を入力可にして初期画面を表示する（4.8） |
| CLEAR | 強制終了 | 印刷装置を解放し、終了画面（ELEPHAN）を表示して終了 |
| 上記以外 | 再表示 | 画面のデータ部分を再送信し、BU04 で待機 |

---

## 3. インターフェース

### 3.1 通信領域（COMMAREA：256バイト）

| 項目ID | 型 | 本プログラムでの用途 |
|---|---|---|
| CRT_BACK_KOSU／CRT_BACK_DATA(5) | | 戻り先画面のスタック。照会OK時に本画面（MPBU040／BU04）を積む。PF3・PF4 で使う |
| TSQ_LENGTH・TSQ_ID | | TSキューの長さ・名前 |
| COMM_TRM_CODE | 文字(4) | 端末ID。センター照会・印刷に使う |
| COMM_TEN_CODE・COMM_TEN_NAME | 数字(4)・文字(14) | 端末の店所。初期画面の発店に表示 |
| COMM_RPOC_YMD | 数字(6) | 処理日付（YYMMDD）。初期画面の発送日（月日）、日付チェック、印刷に使う |
| COMM_PRINTER_ID | 文字(4) | 印刷装置の端末ID |
| COMM_RETURN_CD | 文字(1) | SL11100P（印刷装置チェック）の戻り値 |
| COMM_INQ_KBN | 文字(2) | 照会区分。'10'：傭車、それ以外：自社増便（呼出し元がセット） |
| COMM_START_YMD | 文字(6) | 出発年月日。PF10 の新規は処理日付、既存の指令書は出発年月日、それ以外は 000000 |
| COMM_END_YY／MM／DD | 文字(2)×3 | 最終卸の年月日。既存の指令書のときだけセット、それ以外は 00 |
| COMM_PRI_FLG | 文字(1) | 印刷装置のチェック結果（'0'：指定なし、'2'：OK、'1'・'3'～'7'：エラー、4.4） |
| COMM_YOS_FLG | 文字(1) | '1'：自社、'2'：傭車。照会OK時・PF9 でセット |
| COMM_EDA | 文字(1) | 枝番の印刷（'0'：なし、'1'：あり） |
| COMM_PRTB_FLG・COMM_EDAB_FLG | 文字(1) | 印刷装置・枝番の印刷の項目チェック結果 |
| COMM_YOSRY | 10進(7) | 傭車料。TSキュー初期化時に 0 にする |
| COMM_PF5 | 文字(1) | TSキュー初期化時に空白にする |

### 3.2 TSキュー：エラーチェック用（CHK_DSP_WORK：44バイト）

キュー名は「端末ID＋'BU04'」。エラー時に保存し、次の入力で読んで削除する。

| 項目ID | 型 | 内容 |
|---|---|---|
| LOOP_FLG | 文字(1) | 使用しない |
| OKFLG | 文字(1) | 全体チェック結果（'1'：エラー、'2'：OK） |
| FLG(5) | 文字(1) | 項目ごとのチェック結果（'0'：未入力、'1'：エラー、'2'：OK）。1：指令書NO、2：計画便コード、3：発店コード、4：発送日 月、5：発送日 日 |
| BU04031B・BU04032B | 文字(4)・(5) | 指令書NO |
| BU04044B | 文字(6) | 計画便コード |
| BU04091B・BU04092BBB | 文字(4)・(14) | 発店コード・店所名 |
| BU04093B・BU04094B | 文字(2) | 発送日（月・日） |

### 3.3 TSキュー：照会結果（TS_DATA：724バイト）

照会OK時に、エラーチェック用のキューを削除してから同じ名前（端末ID＋'BU04'）で書く。次のトランザクション（BV05・BU05）が読む。

| 項目 | 内容 |
|---|---|
| TS_DATA_LOOPFLG・TS_DATA_OKFLG | '0'・'2' |
| BACK_AREA | 画面に表示した名称（便名、傭車会社名、乗務員Ａ名・Ｂ名、発店名・最終卸店名・最終着店名）。他（BUSTACD・BUENDCD・次の指令書の情報 NEXT_SHIR(3)）は空 |
| REVE_DATA | センターからの受信データ（419バイト、CEDPBU04）。データ区分（UNKDTKB）が 'N' なら指令書ＮＯ以降の項目（UNKGRP1）と次の指令書情報（UNKNEXT）を、それ以外は次の指令書情報を空にし、入力年月日（UNKIYMD）に処理日付をセットする |

### 3.4 センター照会

| 項目 | 内容 |
|---|---|
| 接続先 | SYSID 'CIC1'、プロセス名（トランザクション）'B04U' |
| 送信（35バイト） | トランザクションID（4）＋予備（1）＋DPCEB04U（30） |
| 受信（419バイト） | トランザクションID（4）＋エラーフラグ（1）＋エラーコード（4）＋CEDPBU04（410） |

送信項目：

| 項目 | 内容 |
|---|---|
| UNQTERM | 端末ID |
| UNQDTID | 空白 |
| UNQSTYM | 出発月日（MMDD）。画面の発送日 月・日 |
| UNQSTTC | 発店コード |
| UNQSHIN | 指令書NO（4桁＋5桁）。未入力なら 0 |
| UNQBINC | 計画便コード。未入力なら 0 |

受信項目（CEDPBU04：配車入力照会後、検証後データ（増、傭））のうち本プログラムで使うもの：入力区分（UNKINKB、4.6）、指令書ＮＯ（UNKSHNO）、データ区分（UNKDTKB）、2.2 の各表示項目、出発 年（UNKSTYY）、最終卸店到着 年（UNKENYY）。

### 3.5 参照ファイル

| ファイル | 内容 | キー | 取得項目 |
|---|---|---|---|
| VPTENMS | 店所マスター | 店所コード（4） | 店所略名 VETNSRNM、店所区分 VETNGETA |
| VPJYUGY | 従業員マスター | 従業員コード（6） | 氏名 VEJYJNM1 |
| VPUNKEI | ＤＤＰ 運賃計算荷主マスター（１）（DDPUNK10） | 傭車会社コード（7）＋'00000001' | 顧客略名（漢字） KNTNRGNM |

---

## 4. 処理仕様

### 4.1 処理の流れ

```mermaid
flowchart TD
    S([開始]) --> AID{押されたキー}
    AID -- CLEAR --> CLR[印刷装置解放・TSキュー削除<br/>終了画面]
    AID -- PF2/3/4/9/11/12/その他 --> PF[ファンクションキー処理 4.8・4.9]
    AID -- 実行/PF10 --> RCV[MPBU040 を受信<br/>TSキュー読込・なければ初期化]
    RCV --> CHK[入力チェック 4.3・4.4]
    CHK -- エラー --> ERR[TSキュー保存<br/>エラー表示] --> W04([BU04 で待機])
    CHK -- OK --> INQ[センター照会 4.5]
    INQ -- 通信エラー --> ERR
    INQ -- OK --> DSP[照会結果の表示<br/>入力区分の判定 4.6]
    DSP -- 入力不可 --> ERRQ[TSキュー保存<br/>ERR Q 表示] --> W04
    DSP -- 入力可 --> OK[照会結果を TSキューへ<br/>スタックに本画面を積む]
    OK -- 傭車 --> WV([BV05 で待機])
    OK -- 自社増便 --> WU([BU05 で待機])
```

### 4.2 開始時の処理

1. 例外条件の分岐先を登録する（画面データなし・レコードなし・ファイルの終わり → CLEAR と同じ終了処理）。
2. 押下キーの分岐先を登録する（CLEAR → 終了処理、PF10 → 新規の照会、それ以外のPFキー → ファンクションキー処理）。
3. 画面 MPBU040 を受信する。実行キーのときは PF10 フラグを '0'（既存の照会）、PF10 のときは '1'（新規の照会）にする。
4. TSキュー（端末ID＋'BU04'、44バイト）を読む。
   - 読めた場合：キューを削除する（前回のチェック結果を引き継ぐ）。
   - キューがない場合：次のように初期化する。

| 項目 | 初期値 |
|---|---|
| LOOP_FLG・OKFLG・FLG(1～5) | '1'・'0'・'0' |
| COMM_PRI_FLG | '0'～'9' 以外なら '0' |
| COMM_YOS_FLG | '1'・'2' 以外なら '0' |
| COMM_EDA | '0'・'1' 以外なら '0' |
| COMM_PRTB_FLG・COMM_EDAB_FLG | '0'～'3' 以外なら '0' |
| 指令書NO・計画便コード | LOW-VALUE |
| 発店コード・発送日 月・日 | 空白 |
| COMM_YOSRY・COMM_PF5 | 0・空白 |

### 4.3 照会キーのチェック（CHECK_SUB_RTN_LVL1）

すでにOK（FLG ＝ '2'）の項目はチェックしない。

| No | 項目 | 未入力 | チェック内容（満たさなければエラー） |
|---|---|---|---|
| 1 | 指令書NO（4＋5桁） | 未入力（'0'）。どちらかが入力されていればチェックする | 9桁とも数字。チェックデジット（LSO0020、区分 '07'、タイプ 'C'）が正しい。1桁目が 0・6・9 のいずれか、8桁目が 1 |
| 2 | 計画便コード（6桁） | 未入力（'0'） | 数字。1桁目が 6・9 のいずれか、6桁目が 1 |
| 3 | 発店（4桁） | エラー | 数字。店所マスターにある（店所名を取得、なければ「？？？？？？」）。店所区分（VETNGETA）が 0・1、または 区分 4 かつ店所 0641 |
| 4 | 発送日 月 | エラー | 数字、01～12 |
| 5 | 発送日 日 | エラー | 数字、01～31 |
| 6 | 発送日（月日）（関連） | ― | 発送日（月・日）がともにOKのとき、処理日付との差が ±30日以内（LSO0130）。年は処理日付の年とし、処理月が12月で発送日の月が1月なら翌年、処理月が1月で発送日の月が12月なら前年とする。範囲外なら発送日（月・日）ともエラー |

照会の種類による判定：

| 場合 | 判定 |
|---|---|
| PF10（新規） | 指令書NO・計画便コードがともに未入力ならOK。どちらかが入力されていて、発店・発送日（月・日）がOKなら、入力された方をエラー、未入力の方をOKとし、「増便の場合は、入力せずにＰＦ１０を押してください」を表示 |
| 実行・傭車 | 指令書NO と計画便コードの**どちらか一方**だけを入力する。両方未入力、または両方OKなら、両方エラー |
| 実行・自社増便 | 常にエラー。「増便の場合は、入力せずにＰＦ１０を押してください」 |

FLG(1)～FLG(4) のどれかがエラーなら全体エラー（OKFLG ＝ '1'）。また、印刷装置のチェック結果（4.4）が '0'・'2' 以外の場合も全体エラーにする。

### 4.4 印刷装置・枝番の印刷のチェック

COMM_PRI_FLG が '2'（チェック済みOK）なら行わない。

| 項目 | 未入力 | チェック内容 |
|---|---|---|
| 印刷装置番号 | '0'（指定なし） | 4桁で入力されていれば SL11100P を LINK して印刷装置かを確認する。4桁でなければエラー（'1'） |
| 枝番の印刷 | '0'（なし） | '1' ならOK（'2'）、それ以外はエラー（'1'） |

SL11100P の戻り値と結果：

| 戻り値 | 結果（COMM_PRTB_FLG） | メッセージ |
|---|---|---|
| 'O' | '2'：OK | ― |
| 'R' | '3' | 印刷装置　使用不可能です。！！ |
| 'C' | '4' | このＩＤは、印刷装置ではありません。 |
| 'N' | '5' | このＩＤは、存在しません。！！ |
| 'P' | '6' | プリンターを確認し、３０秒後に実行キーを押して下さい。 |
| 'U' | '7' | プリンターは現在使用中です。しばらくお待ち下さい。 |
| その他 | '1' | エラー項目あり，再入力して下さい |

印刷のチェック結果（COMM_PRI_FLG）：

| 印刷装置・枝番の印刷 | COMM_PRI_FLG |
|---|---|
| OK・OK、指定なし・なし、OK・なし | 印刷装置の結果（'2' または '0'） |
| 上記以外で、印刷装置の結果が '4' 以上 | 印刷装置の結果 |
| 上記以外 | '1'。印刷装置が指定なしで枝番の印刷が入力されている場合は、両方エラー（'1'） |

### 4.5 センター照会（INQUIRE_SUB_RTN）

1. 送信データ（3.4）を組み立てる。
2. CIC1 とのセッションを確保（ALLOCATE）し、B04U に接続（CONNECT PROCESS）して、送信・応答待ち（SEND INVITE）、受信（RECEIVE）する。
3. 受信できたら、終了を送信（SEND LAST）してセッションを解放する。
4. エラーの場合は次のとおり。エラーなら全体エラーにして、4.7 の表示に戻る。

| 発生箇所 | 条件 | エラーコード | エラーフラグ | メッセージ |
|---|---|---|---|---|
| ALLOCATE | 回線混雑（SYSBUSY） | ASYSB | ― | 回線が混雑しています！！　実行キーをもう一度押して下さい（画面を送信し、次の入力を受信して照会をやり直す） |
| ALLOCATE | SYSIDERR | ASYSI | 7 | 照会不可能！！回線不通の可能性あり　センターに連絡して下さい |
| ALLOCATE | その他 | A9999 | 8 | 照会不可能！！サポート外ＥＲＲＯＲ　センターに連絡して下さい |
| CONNECT | TERMERR／その他 | CTERM／C9999 | 7／8 | 同上（7・8 のメッセージ） |
| SEND | TERMERR／その他 | STERM／S9999 | 7／8 | 同上 |
| RECEIVE | TERMERR／LENGERR／その他 | RTERM／RLENG／R9999 | 7／9／8 | 9：照会不可能！！ＬＥＮＧＥＲＲ |

### 4.6 照会結果の表示と入力区分の判定

名称の表示欄（便名・傭車会社名・乗務員Ａ名・Ｂ名・発店名・最終卸店名・最終着店名）をクリアしてから、次のように表示する。

**PF10（新規）の場合**

| 照会区分 | 表示 |
|---|---|
| 傭車 | 発行枚数 1、運行形態 0、運行車区分 2「ﾖｳｼﾔ」「ﾌﾂｳ」 |
| 自社増便 | 発行枚数 2、傭車形態名を空白 |

センターが採番した指令書NO を表示する。入力区分が 0 以外ならエラー（9：「チェックデジット生成モジュール　エラー」、7：「運行指令ＮＯ管理マスター　Ｉ／Ｏエラー」、その他：「？？？？？？？？？？」）。

**実行（既存の指令書、傭車）の場合**

2.2 のとおり照会結果を表示する（0 の項目は表示しない）。名称はマスターから取得し、ない場合は「？？？？？」等を表示する。続けて入力区分で判定する。

| 入力区分 | 意味 | メッセージ |
|---|---|---|
| 0 | 入力可。ただし指令書NO で照会した場合（計画便コード未入力）は、次の2つを確認する<br/>・出発日（UNKSTYY・MM・DD）が処理日付の ±30日以内でなければ区分 4<br/>・出発店所（UNKSTTC）が画面の発店と違えば区分 8 | 4：出発日付エラー！！　取消してから入力してください。<br/>8：出発店所エラー！！　取消してから入力してください。 |
| 1 | 入力済み | 入力済みです！！　取消してから入力してください。 |
| 3 | 自社定便 | 自社定便の画面で入力！！　取消してから入力してください。 |
| 5 | 指令書マスター重複 | 指令書マスター重複！！　取消して指令ＮＯで入力してください。 |
| 6 | 指令書マスターになし | 指令書マスターに無し |
| 7 | I/O エラー | Ｉ／Ｏエラー |
| 9 | 減便入力済み | 減便入力済みです。 |
| その他 | | ？？？？？？？？？？ |

指令書NO（UNKSHNO）が 0 でなければ指令書NO 欄に表示する。COMM_START_YMD・COMM_END_YMD を 0 にする。

**入力区分が 0 の場合（入力可）**

| 場合 | 通信領域 | 画面の属性 |
|---|---|---|
| PF10・傭車 | 出発年月日 ＝ 処理日付 | 指令書№・発店コード・発行枚数・運行形態・運行車区分・計画便コードは入力不可。発送日 月・日・傭車会社コード・標屯（整数・少数）・傭車形態・一車保険料・定額傭車料・積載車番・トレーラー・乗務員Ａコード・Ｂコード・発送日 時・分・最終卸店コード・最終卸店着日 月・日・時・分・直配区分・直配着地コードは入力可（数字）、連絡事項は入力可。カーソルは傭車会社コード |
| PF10・自社増便 | 出発年月日 ＝ 処理日付 | 指令書№・発店コードは入力不可。発送日 月・日・発行枚数・運行形態・運行車区分・積載車番・トレーラー・乗務員Ａコード・Ｂコード・発送日 時・分・最終卸店コード・最終卸店着日 月・日・時・分・最終着店コード・直配区分・直配着地コード・フェリー会社・鮮魚保険・次の指令書の情報（２－～４－、2.2 参照）は入力可（数字）、連絡事項は入力可。２－～４－運行形態は '0' を表示して入力不可。カーソルは運行形態 |
| 実行（既存の指令書） | 出発年月日 ＝ 出発 年・月・日（UNKSTYY・MM・DD）、最終卸年月日 ＝ 最終卸店到着 年・月・日（UNKENYY・MM・DD） | 発店コード・発行枚数・運行形態・運行車区分・計画便コードは入力不可。指令書№・傭車会社コード・傭車形態・一車保険料・定額傭車料・発送日 月・日・最終卸店コード・最終卸店着日 月・日・積載車番・トレーラー・乗務員Ａコード・Ｂコード・標屯（整数・少数）・発送日 時・分・最終卸店着日 時・分・直配区分・直配着地コードは入力可（数字）、連絡事項は入力可。カーソルは指令書№（頭４桁） |

その後、次の処理を行う。

1. エラーチェック用の TSキューを削除し、照会結果を TSキューに書く（3.3）。
2. COMM_YOS_FLG を自社 '1'、傭車 '2' にする。
3. 戻り先画面のスタックの最上位が「MPBU040／BU04」でなければ、件数を1増やして積む（最大5件。超える場合は5件目を上書き）。
4. システム日付・時刻をセットして画面のデータ部分を送信し（入力項目を消去、カーソル指定）、傭車は BV05、自社増便は BU05 で待機する。

**入力区分が 0 以外の場合（入力不可）**

| 条件 | 処理 |
|---|---|
| 入力区分 1～5・8、または PF10 | 指令書NO・計画便コード・発店・発送日（月日）を入力不可にする（取消して入力し直す） |
| 上記以外（6・7・9 等、既存の照会） | 全項目のチェック結果をエラーにし、指令書NO・計画便コード・発送日（月日）を入力可・高輝度にする（発店は入力不可）。カーソルは指令書NO（未採番なら計画便コード） |

エラーコードに「ERR Q」をセットし、TSキュー（44バイト）を保存して、画面のデータ部分を送信し、BU04 で待機する。

### 4.7 チェック結果の表示（DISPLAY_SUB_RTN_LVL1）

1. 印刷装置・枝番の印刷：OK・指定なしなら入力不可、エラーなら入力可・高輝度でカーソルを置く。
2. 発送日 日・月：OK・未入力なら入力不可、エラーなら入力可・高輝度でカーソルを置く。
3. 発店：OK・未入力なら入力不可、エラーなら入力不可・高輝度（属性 '9'）。
4. 計画便コード・指令書NO：OKなら値を表示して入力不可、未入力なら入力不可、エラーなら入力可・高輝度でカーソルを置く。
5. メッセージ・エラーコード：

| 状態 | エラーコード | メッセージ |
|---|---|---|
| 通信エラー | 4.5 のコード | 4.5 のメッセージ |
| 増便なのに照会キーを入力 | ERR 1 | 増便の場合は、入力せずにＰＦ１０を押してください |
| 項目エラー | ERR 1 | 印刷のチェック結果（4.4）に応じたメッセージ。'0'～'2' は「エラー項目あり，再入力して下さい」 |
| OK | OK  2 | 各項目を入力して実行キーを押して下さい |

エラーの場合は、TSキュー（44バイト）を保存し、システム日付・時刻をセットして画面のデータ部分を送信し（入力項目を消去、カーソル指定）、BU04 で待機する。

### 4.8 ファンクションキーの処理（画面の切替え）

| キー | 処理 |
|---|---|
| PF2：取消 | 初期画面（下表）を表示し、BU04 で待機 |
| PF12：発店変更 | PF2 と同じ初期画面を、発店を入力可（数字）にして表示する |
| PF3：終了 | 印刷装置がOK（COMM_PRTB_FLG ＝ '2'）なら印刷装置を解放する。TSキューを削除し、戻り先画面のスタックから一つ前の画面を決め、共通ヘッダ画面（MPDM010）に日時をセットして送信し、戻り先の画面をデータなしで送信して、そのトランザクションで待機 |
| PF4：戻り | PF3 と同じく印刷装置を解放し、スタックの1件目（メインメニュー）に戻る |
| その他 | 画面のデータ部分を再送信し、BU04 で待機 |

初期画面（PF2・PF12）：

| 項目 | 傭車 | 自社増便 |
|---|---|---|
| 見出し | 傭　車　配　車　入　力（定・増） | 自　社　増　便　配　車　入　力 |
| 発店 | 端末の店所コード・店所名。入力不可（PF12 は入力可） | 同左 |
| 発送日（月日） | 処理日付の月・日。入力可（数字） | 処理日付の月・日。入力不可 |
| 指令書NO・計画便コード | 入力可。カーソルは計画便コード | 入力不可 |
| メッセージ（反転表示） | 定便＝＞便コード・発送日（月日）、又は指令ＮＯ　　増便＝＞ＰＦ１０ | ＰＦ１０を押して、指令書ＮＯを表示してください。 |
| 印刷装置・枝番の印刷 | 前回の値（通信領域）を表示。入力不可 | 同左 |
| その他の項目 | 入力不可 | 同左 |

画面を消去して送信し（カーソル指定）、TSキューを削除する。

PF3 の戻り先：

| 条件 | 戻り先 |
|---|---|
| スタックが空 | なし（終了画面を表示して終了） |
| 最上位が MPBU040 以外 | 最上位の画面（1件取り除く） |
| 最上位が MPBU040 で、その下がない | なし（終了画面を表示して終了） |
| 最上位が MPBU040 で、その下がある | その下の画面（2件取り除く） |

PF4 の戻り先：スタックが空、または1件目が MPBU040 なら終了画面、それ以外は1件目の画面（スタックを全件消去）。

### 4.9 印刷関係の処理

**PF9：テスト印刷**

1. COMM_YOS_FLG を自社 '1'、傭車 '2' にする。
2. 印刷装置・枝番の印刷を 4.4 と同じくチェックし、属性・メッセージを表示する（印刷装置の結果が '3' 以上ならその結果、それ以外のエラーは '1'）。
3. 印刷のチェック結果が OK（'2'）なら、印刷情報（店所コード、端末ID、印刷装置ID、処理日付、TSキュー名＝端末ID＋'MMSS'）と印刷データ（端末ID、データ件数 1）を作り、TSキューに書いて印刷を起動する。

| 照会区分 | TSキュー名 | 長さ | 起動トランザクション |
|---|---|---|---|
| 自社増便 | 端末ID＋'SHTS' | 318 | BV13（印刷区分 '4'） |
| 傭車 | 端末ID＋'SHYT' | 144 | BV14 |

4. 画面のデータ部分を送信し、BU04 で待機する。

**PF11：印刷装置リセット**

印刷のチェック結果が OK（'2'）なら、印刷装置の端末を強制解除（PURGE）し、正常なら再接続（ACQUIRE、INSERV）する。画面のデータ部分を送信し、BU04 で待機する。

**印刷装置の解放（PRINTER_FREE）**

PF3・PF4・CLEAR で印刷装置がOKの場合に行う。2回繰り返して、終了データ（データ件数 0、終了フラグ 'E'、14バイト）を TSキュー（端末ID＋現在の分を変えた時刻 MMSS）に書き、BV13 を印刷装置で起動する。印刷のチェック結果を空白にする。

### 4.10 システム日付・時刻の設定（TIMESET_SUB_RTN）

現在の日時を `YY/MM/DD`・`HH:MM:SS` に編集して日付・時刻欄にセットする（入力不可・変更フラグオン）。

### 4.11 共通の編集処理

| 処理 | 内容 |
|---|---|
| NUM_SHIFT_RTN | 数字の前ゼロを除いて左詰めにし、後ろを LOW-VALUE にする（すべて 0 なら '0'） |
| SOSI_EDIT_RTN | 項目の末尾でシフトアウト（漢字開始）が閉じていない場合に、シフトイン（漢字終了）の位置を補正する |

### 4.12 例外処理

| 発生条件 | 処理 |
|---|---|
| CLEAR キー | 印刷装置がOKなら解放し、TSキューを削除して、終了画面（ELEPHAN）を表示して終了 |
| 画面データなし（MAPFAIL）・レコードなし（NOTFND）・ファイルの終わり（ENDFILE） | CLEAR キーと同じ |

---

## 5. メッセージ一覧

| No | エラーコード | メッセージ | 表示するとき |
|---|---|---|---|
| 1 | ― | 定便＝＞便コード・発送日（月日）、又は指令ＮＯ　　増便＝＞ＰＦ１０ | 初期画面（傭車） |
| 2 | ― | ＰＦ１０を押して、指令書ＮＯを表示してください。 | 初期画面（自社増便） |
| 3 | OK  2 | 各項目を入力して実行キーを押して下さい | チェックOK（照会前の表示） |
| 4 | ERR 1 | エラー項目あり，再入力して下さい | 照会キー・印刷項目のエラー |
| 5 | ERR 1 | 増便の場合は、入力せずにＰＦ１０を押してください | 自社増便で実行キー、PF10 で照会キーを入力 |
| 6 | ERR 1 | 印刷装置　使用不可能です。！！ | 印刷装置チェック 'R' |
| 7 | ERR 1 | このＩＤは、印刷装置ではありません。 | 印刷装置チェック 'C' |
| 8 | ERR 1 | このＩＤは、存在しません。！！ | 印刷装置チェック 'N' |
| 9 | ERR 1 | プリンターを確認し、３０秒後に実行キーを押して下さい。 | 印刷装置チェック 'P' |
| 10 | ERR 1 | プリンターは現在使用中です。しばらくお待ち下さい。 | 印刷装置チェック 'U' |
| 11 | ASYSB | 回線が混雑しています！！　実行キーをもう一度押して下さい | センターが混雑 |
| 12 | ASYSI・A9999・CTERM・C9999・STERM・S9999・RTERM・R9999 | 照会不可能！！回線不通の可能性あり　センターに連絡して下さい／照会不可能！！サポート外ＥＲＲＯＲ　センターに連絡して下さい | センター通信エラー（4.5） |
| 13 | RLENG | 照会不可能！！ＬＥＮＧＥＲＲ | 受信長エラー |
| 14 | ERR Q | 出発日付エラー！！　取消してから入力してください。 | 指令書NO の照会で出発日が ±30日を超える |
| 15 | ERR Q | 出発店所エラー！！　取消してから入力してください。 | 指令書NO の照会で出発店所が画面の発店と違う |
| 16 | ERR Q | 入力済みです！！　取消してから入力してください。 | 入力区分 1 |
| 17 | ERR Q | 自社定便の画面で入力！！　取消してから入力してください。 | 入力区分 3 |
| 18 | ERR Q | 指令書マスター重複！！　取消して指令ＮＯで入力してください。 | 入力区分 5 |
| 19 | ERR Q | 指令書マスターに無し | 入力区分 6 |
| 20 | ERR Q | Ｉ／Ｏエラー | 入力区分 7（既存の照会） |
| 21 | ERR Q | 減便入力済みです。 | 入力区分 9（既存の照会） |
| 22 | ERR Q | チェックデジット生成モジュール　エラー | 入力区分 9（PF10） |
| 23 | ERR Q | 運行指令ＮＯ管理マスター　Ｉ／Ｏエラー | 入力区分 7（PF10） |
| 24 | ERR Q | ？？？？？？？？？？ | 上記以外の入力区分 |

---

## 6. 画面遷移

```mermaid
flowchart LR
    MENU[メニュー等] --> BU04[BU04<br/>本プログラム]
    BU04 -- 実行/PF10（エラー） --> BU04
    BU04 -- 照会OK・傭車 --> BV05[BV05 傭車配車入力]
    BU04 -- 照会OK・自社増便 --> BU05[BU05 自社増便配車入力]
    BU04 -- PF2/PF9/PF11/PF12 --> BU04
    BU04 -- PF3 --> PREV[一つ前の画面]
    BU04 -- PF4 --> MAIN[メインメニュー]
    BU04 -- CLEAR --> END[ELEPHAN 終了]
```

---

## 7. 補足・留意事項

1. **出発店所のチェックが「テスト用」のまま**：指令書NO で照会したときの出発店所チェックは、端末の店所（COMM_TEN_CODE）との比較がコメントアウトされ、「テスト用」として画面の発店と比較している。発店は PF12 で変更できるため、他店の指令書でも発店を合わせれば入力できる。
2. **携帯管理No は表示しない**：傭車の場合に特定便コードを携帯管理No に表示する処理と、入力可にする処理がコメントアウトされている。
3. **発送日 日だけのエラーが全体エラーにならない**：全体エラーの判定は FLG(1)～FLG(4) だけを見ており、FLG(5)（発送日 日）を見ていない。発送日 月が正しく日だけが範囲外（00・32 以上・数字以外）の場合、±30日のチェックも行われず、そのまま照会に進む。照会の発送日（月日）（UNQSTYM）は、このとき前回の値または未設定のまま送られる。
4. **自社増便では実行キーが使えない**：自社増便は常に PF10（新規）で照会する。実行キーを押すと「増便の場合は、入力せずにＰＦ１０を押してください」になる。
5. **発店エラーは画面で直せない**：発店がエラーのときは、入力不可・高輝度（属性 '9'）で表示され、カーソルも置かれない。直すには PF12 で発店を入力可にする必要がある。
6. **印刷のチェック結果の判定がPF9 と違う**：実行キーでは印刷装置の結果が '4' 以上のときだけその結果を使い、'3'（使用不可）は「エラー項目あり」になる。PF9 では '3' 以上でその結果を使うため、「印刷装置　使用不可能です。！！」が表示される。
7. **テスト印刷のTSキュー名**：印刷情報の TSキュー名は端末ID＋固定文字 'MMSS' で、実際に書く TSキュー（端末ID＋'SHTS'／'SHYT'）とは名前が違う。
8. **印刷装置の解放は常に BV13**：傭車でも、印刷装置の解放は BV13 を起動している。
9. **運行形態「?????」**：運行形態が 0 で入力区分が 6（指令書マスターに無し）のときは、運行形態名に「?????」を表示する。
10. **回線混雑時の再照会**：回線混雑（SYSBUSY）では、メッセージを送信した後に画面を受信して照会をやり直すため、疑似会話でなく会話型の待ちになる。
11. **照会結果の TSキュー**：照会OK時は、エラーチェック用（44バイト）と同じキュー名に照会結果（724バイト）を書き、次のトランザクション（BV05・BU05）に引き継ぐ。
12. **使っていない領域**：HELP画面コントロールエリア、LOOP_FLG、BUSTACD・BUENDCD・NEXT_SHIR（本プログラムでは空のまま）、TANERR、KBIDWK、COMM_SPAC 等は使っていない。
