# プログラム仕様書　BU10800P（配車修正入力（自社便）　検証）

| 項目 | 内容 |
|---|---|
| システムID | BU |
| 参考資料 | ・現行ソース BU10800P.pl1<br/>・画面イメージ MPBU070.jpg（配車修正入力）<br/>・現行の解析資料 BU0070_配車修正入力.xlsx（シート「資産一覧」「Link XCTL 一覧」「MPBU070」「レコードフォーマット」「SRC_BU10800P」）<br/>・前の画面の仕様書 [BU10700P_仕様書.md](BU10700P_仕様書.md) |
| 項目名の出典 | 画面項目は解析資料のシート「MPBU070」の日本語名、TSキューの項目（DEFPBU07）・マスターの項目はシート「レコードフォーマット」の日本語名称 |

---

## 1. 概要

| 項目 | 内容 |
|---|---|
| プログラムID | BU10800P（手続き名：BU10800） |
| プログラム名称 | 配車修正入力（自社便）　検証 |
| 言語 | PL/I（CICS コマンドレベル） |
| 処理形態 | オンライン（CICS 疑似会話型） |
| 動作環境 | SV（DDP 側） |
| トランザクションID | BU08 |
| パターンID | PPOD252P（1987/05/01）、業務 BUSHRE30。2000年対応済み |
| 使用画面（マップ） | MPBU070（配車修正入力）、MPDM010（共通ヘッダ画面）、ELEPHAN（終了画面） |
| 前の処理 | BU07（BU10700P：照会）。運行車区分が 02（傭車）以外の指令書を照会した後 |
| 次の処理 | チェックOK → BU09（BU10900P：センターへの更新依頼） |
| 参照ファイル | VPMORTR（ＤＤＰ 車両マスター）、VPTENMS（ＤＤＰ 店所マスター）、VPJYUGY（ＤＤＰ 従業員マスター）、VPCHINM（ＤＤＰ 地名マスター）、VPUNKEI（ＤＤＰ 運賃計算荷主マスター（１））、VPHCBKM（ＤＤＰ 発着地粁程マスター） |
| 呼出しモジュール | LSO0130（日付の経過日数の計算） |
| 起動するトランザクション | BV13（自社便の指令書印刷）、BV14（傭車便の指令書印刷）。テストプリント・印刷終了のときだけ |
| 一時記憶 | TSキュー（通信領域のキュー名。BU10700P が書いた「端末ID＋'BU07'」、長さ 520） |

センターとの通信はしない。照会結果（BU10700P が TSキューに書いたデータ）を画面の入力値で書き換えてチェックし、TSキューに書いて BU10900P に渡す。

### 1.1 機能概要

自社便の指令書の修正内容をチェックする画面。BU10700P で照会した指令書について、入力可になっている項目を修正して実行キーを押すと、各項目と項目間の関係をチェックする。

1. 照会結果を TSキューから読み、画面の入力値をチェックする。チェックOK になった項目は次回からチェックしない。
2. 入力区分に 'D'（増便の削除）・'9'（減便）・'R'（減便からの復活）を入れた場合は、ほかの項目をチェックせずに OK にする。
3. エラーがあれば、エラーの項目を入力可にして BU08 で待機する。
4. すべてOK なら、確認メッセージを表示し、チェック後のデータを TSキューに書いて BU09 で待機する（実行キーで BU10900P が更新を依頼する）。

```mermaid
flowchart LR
    BU07[BU07<br/>BU10700P 照会] -- 自社便 --> BU08[BU08<br/>本プログラム<br/>MPBU070]
    BU08 -- エラー --> BU08
    BU08 <--> TS[(TSキュー<br/>照会結果 520バイト)]
    BU08 -- チェックOK --> BU09[BU09<br/>BU10900P 更新依頼]
    BU08 -- PF2 --> BU07
```

---

## 2. 画面仕様（MPBU070：配車修正入力）

### 2.1 画面レイアウト

画面は BU10700P と同じ（[BU10700P_仕様書.md](BU10700P_仕様書.md) の 2.1）。

### 2.2 画面項目

「FLG」は TSキューのチェック結果の番号（4.2）。「入力可」は、チェックでエラーになったときに本プログラムが入力可にするか（そのときの属性）を示す。BU10700P が照会OK 時に入力可にした項目は、本プログラムでチェックOK になるまで入力可のまま。

| No | 項目ID | 項目名 | 属性・桁 | FLG | 本プログラムでの扱い |
|---|---|---|---|---|---|
| 1 | BU07031・BU07032 | 入力店所コード・入力店所名 | 数字 4・文字 16 | 1 | 入力不可（保護・変更フラグオン）。4.6 の 9 |
| 2 | BU07051・BU07052 | 指令書№（頭４桁）・（後５桁） | 数字 4・5 | | 本プログラムでは表示も属性も変えない |
| 3 | BU07053 | 入力区分 | 数字 1 | 2 | 入力値をチェック（4.3）。エラーなら入力可（変更フラグオン・輝度） |
| 4 | BU07054 | 入力区分名 | 文字 12 | | 入力区分の名称（4.5） |
| 5 | BU07061・BU07062 | 計画便コード・運行便名 | 文字 6・16 | | 便コード・便名（増便は本プログラムで編集。4.4 の 3） |
| 6 | BU07071・BU07072 | 運行車区分・運行車区分名 | 数字 2・文字 5 | 3 | エラーなら入力可（輝度） |
| 7 | BU07073・BU07074 | 運行車形態区分・運行車形態区分名 | 数字 1・文字 8 | 4 | エラーなら入力可（輝度） |
| 8 | BU07081 | 積載社番 | 数字 5 | 5 | 車種の組合せ（4.4 の 1） |
| 9 | BU07082 | トレーラー | 数字 5 | 6 | 同上 |
| 10 | BU07091・BU07092 | 発店コード・発店名称 | 数字 4・文字 16 | 7 | |
| 11 | BU07093・BU07094 | 出発予定日　月・日 | 数字 2×2 | 8 | |
| 12 | BU07095・BU07096 | 出発予定日　時・分 | 数字 2×2 | 9 | |
| 13 | BU07101・BU07102 | 乗継店１コード・乗継店１名 | 数字 4・文字 16 | 10 | 増便だけチェック |
| 14 | BU07111・BU07112 | 乗継店２コード・乗継店２名 | 数字 4・文字 16 | 11 | 増便だけチェック |
| 15 | BU07121・BU07122 | 最終卸店コード・最終卸店名 | 数字 4・文字 16 | 12 | |
| 16 | BU07123・BU07124 | 到着予定日　月・日 | 数字 2×2 | 13 | |
| 17 | BU07125・BU07126 | 到着予定日　時・分 | 数字 2×2 | 14 | |
| 18 | BU07131・BU07132 | 次運行便発店コード・次運行便発店名 | 数字 4・文字 16 | 15 | |
| 19 | BU07151・BU07152 | 乗務員Ａコード・乗務員Ａ名 | 数字 6・文字 16 | 16 | |
| 20 | BU07153・BU07154 | 乗務員Ｂコード・乗務員Ｂ名 | 数字 6・文字 16 | 17 | |
| 21 | BU07161～BU07174 | 乗継員１Ａ・１Ｂ・２Ａ・２Ｂ（コード・名） | 数字 6・文字 16 | 18～21 | チェックしない（常に OK。値は照会結果のまま） |
| 22 | BU07191 | 直配区分 | 文字 1 | 22 | |
| 23 | BU07192 | 直配　着地コード | 数字 5 | 23 | |
| 24 | BU07193 | フェリー会社コード | 数字 7 | 24 | |
| 25 | BU07201 | 連絡事項 | 文字 24 | 25 | チェックなし |
| 26 | BU07202 | 特定便コード | 文字 4 | 26 | |
| 27 | BU07203 | 鮮魚保険料 | 数字 4 | 27 | |
| 28 | BU07211～BU07224 | 傭車会社コード・名、傭車標屯、傭車形態区分・名、一車保険料、定額傭車料 | | | 本プログラムでは扱わない（自社便のため） |
| 29 | BU07PRT | 印刷装置 | 文字 4 | | 本プログラムではチェックしない |
| 30 | BU07241・BU07242 | エラーメッセージ・エラーコード | 文字 70・5 | | 5章 |

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

| キー | 機能 | 処理概要 |
|---|---|---|
| 実行（Enter） | 継続 | 入力値をチェックする |
| PF2 | 取消 | TSキューを削除し、BU10700P の初期画面（指令書ＮＯ の入力）を表示して BU07 で待機する |
| PF3 | 終了 | 印刷終了の処理をして、一つ前の画面に戻る |
| PF4 | 戻り | 印刷終了の処理をして、メインメニューに戻る |
| PF8・PF9 | テストプリント | 印刷装置が使用可（COMM_PRI_FLG '2'）の場合だけ、指令書のテスト印刷を起動する |
| PF11 | 印刷装置の再接続 | 印刷装置を強制解放し、再び接続する |
| CLEAR | 強制終了 | 印刷終了の処理をして、終了画面（ELEPHAN）を表示して終了 |
| 上記以外 | 再表示 | 画面のデータ部分を再送信し、BU08 で待機 |

チェックOK 後の確認メッセージにある「修正なら、ＰＦ５」は、次のトランザクション（BU09：BU10900P）で処理する。本プログラムの待機中に PF5 を押しても再表示になる。

---

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

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

| 項目ID | 本プログラムでの用途 |
|---|---|
| CRT_BACK_KOSU／CRT_BACK_DATA(5) | 戻り先画面のスタック |
| TSQ_ID・TSQ_LENGTH | TSキューの名前・長さ（BU10700P がセットした「端末ID＋'BU07'」、520） |
| COMM_TRM_CODE | 端末ID（TSキューの端末ＩＤ、印刷の入力端末ＩＤ） |
| COMM_TEN_CODE・COMM_TEN_NAME | 端末の店所コード・店所名（PF2 の初期画面） |
| COMM_RPOC_YMD | 処理日付。入力年月日、増便の出発日の基準 |
| COMM_PRINTER_ID・COMM_PRI_FLG | 印刷装置のID・状態（BU10700P でチェック済み） |
| COMM_YOS_FLG | 自社傭車フラグ（'1'：自社）。テストプリントの種類。PF2 で '0' |

### 3.2 TSキュー（CHK_DSP_WORK：520バイト）

| 項目ID | 内容 |
|---|---|
| LOOP_FLG・OKFLG | 初期化済み（'1'）・チェック結果（'2'：OK、それ以外：エラー） |
| FLG(34) | 項目ごとのチェック結果（'0'：未入力（OK扱い）、'1'：エラー、'2'：OK、'3'：関連エラー）。番号は 2.2 |
| BU07053B ほか（BACK_AREA） | 入力区分、表示する名称の保存域（運行便名、店所名、乗務員名など）、発店・最終卸店の店所所在地コード（先頭5桁。BUSTACD・BUENDCD）、変更前の傭車使用形態 |
| REVE_DATA（DEFPBU07） | 配車修正照会後、検証後データ。BU10700P がセンターから受け取った運行指令の内容を、本プログラムが入力値で書き換える（下表） |

本プログラムが書き換える主な項目（DEFPBU07）。

| 項目ID | 項目名 | セットする値 |
|---|---|---|
| DNKTERM | 端末ＩＤ | 端末ID |
| DNKIYMD | 入力年月日 | 処理日付 |
| DNKNYUK | 入力結果 | 通常 '0'。入力区分を 'D'・'9'・'R' にした場合 '9' |
| DNKINKB の入力値（BU07053B） | 入力区分 | 画面の入力区分（TSキューの BU07053B） |
| DNKKUBN・DNKKEIT | 運行車区分・運行形態区分 | 入力値 |
| DNKCARS・DNKTONS・DNKSYAS | 積載社番・積載車標屯・積載車種 | 入力値と車両マスターから決めた値（4.4 の 1） |
| DNKCART・DNKTONT・DNKSYAT | トレーラ頭・コンテナ車、標屯、車種 | 同上 |
| DNKSTID・DNKSTTC | 発支社区分・発店 | 入力値。支社区分は店所内部コードの1桁目 |
| DNKSTYY～DNKSTMI | 出発　年・月・日・時・分 | 入力値。年は日付の関連チェックで決める（4.4 の 4） |
| DNKNTI1・DNKNTC1、DNKNTI2・DNKNTC2 | 乗継店１・２（支社区分・コード） | 入力値（増便） |
| DNKENID・DNKENTC | 最終卸支社区分・最終卸店 | 入力値 |
| DNKENYY～DNKENMI | 最終卸店到着　年・月・日・時・分 | 入力値。年は日付の関連チェックで決める |
| DNKFUID・DNKFUTC | 次運行発支社・次運行発店 | 入力値 |
| DNKDRIA・DNKDRIB | 乗務員　Ａ・Ｂ | 入力値 |
| DNKGHKB・DNKGHCD・DNKGHTC | 直配区分・直配着地コード・直配着地最寄りの店所 | 入力値。最寄りの店所は地名マスターの扱店コード |
| DNKFRCD | フェリー、ライナーコード | 入力値 |
| DNKINFO | 連絡事項 | 入力値 |
| DNKKBID・DNKTKNO | 特定便区分・特定便ＮＯ | 入力値 |
| DNKFISH | 一車保険料（自社、鮮魚の場合） | 入力値 |
| DNKBNCD・DNKBNNM・DNKNAMC | 計画便コード・便名（漢字）・便名（カナ） | 増便の場合に編集（4.4 の 3） |
| DNKSEKM | 設定粁 | 増便の場合に粁程マスターから（4.4 の 3） |

### 3.3 参照するマスター

| ファイル | 日本語名 | キー | 使う項目 |
|---|---|---|---|
| VPMORTR | ＤＤＰ 車両マスター | 社番 | 車両現廃区分（VESYGHKB）、最大積載量（VESYHYTN）、車両車種（VESYSYAS） |
| VPTENMS | ＤＤＰ 店所マスター | 店所コード | 店所略名（漢字）（VETNSRNM）、店所名（カナ）（VETNKNNM）、店所区分（VETNGETA）、店所内部コード（VETNNTCD。1桁目が支社区分）、店所所在地コード（VETNADCD。先頭5桁） |
| VPJYUGY | ＤＤＰ 従業員マスター | 従業員コード | 採用・退職区分（VEJYSTKB）、従業員氏名（漢字）（VEJYJNM1） |
| VPCHINM | ＤＤＰ 地名マスター | 着地コード | 入力区分（VCHIIKUB）、扱店コード（VCHIATCD） |
| VPUNKEI | ＤＤＰ 運賃計算荷主マスター（１） | フェリー会社コード（7）＋'00000001' | フェリー会社区分（KDEXKBNN） |
| VPHCBKM | ＤＤＰ 発着地粁程マスター | 発店の所在地コード（5）＋着側のコード（5） | 標準粁程（１）（KNADABKM(1)） |

---

## 4. 処理仕様

### 4.1 処理の流れ

```mermaid
flowchart TD
    S([開始]) --> AID{押されたキー}
    AID -- CLEAR --> CLR[印刷終了の処理<br/>終了画面]
    AID -- PFキー --> PF[ファンクションキー処理 4.7]
    AID -- 実行 --> RCV[MPBU070 を受信<br/>TSキューを読む]
    RCV -- なし --> CLR
    RCV -- あり --> DEL[TSキュー削除<br/>前回OKなら初期化]
    DEL --> CHK[項目チェック 4.3<br/>関連チェック 4.4]
    CHK --> DSP[表示の編集 4.5]
    DSP -- エラー --> ERR[TSキュー保存<br/>エラー表示] --> W08([BU08 で待機])
    DSP -- OK --> OK[TSキュー保存<br/>確認メッセージ] --> W09([BU09 で待機])
```

### 4.2 初期化

1. 画面を受信し、TSキュー（通信領域のキュー名）を読む。読めなければ CLEAR と同じ処理（終了画面）にする。
2. 読めたら削除する。前回の OKFLG が '2'（BU10700P の照会OK、または本プログラムのチェックOK の後）なら、LOOP_FLG を '1'、OKFLG を '0'、FLG(1)～FLG(34) をすべて '1'（エラー）にして、全項目をチェックし直す。
3. 端末ＩＤ・入力年月日（処理日付）をセットする。増便（指令書ＮＯ の1桁目が 9）でなければ、乗継店１・２（FLG(10)・FLG(11)）を OK（'2'）にしてチェックしない。

### 4.3 項目チェック（CHECK_SUB_RTN_LVL1）

チェック結果が '2'（OK済み）の項目はチェックしない。「指令書ＮＯ の8桁目」は指令書の枚目、「発行枚数」は照会結果の指令書発行枚数。

| FLG | 項目 | 未入力のとき | チェック内容（満たさなければエラー） |
|---|---|---|---|
| 1 | 指令書NO | | チェックしない（常に OK） |
| 2 | 入力区分 | エラー | 照会時と同じ値なら OK。ただし照会時が 9（減便入力済）なら、ほかの項目をすべて OK にして入力区分だけエラーにする（'R' の入力を待つ）。違う値なら下表 |
| 3 | 運行車区分 | エラー | 数字で 01・03・04・05（02 は不可）。03～05 は発行枚数が 1 で8桁目が 1 のときだけ |
| 4 | 運行車形態区分 | エラー | '0'～'8' |
| 5・6 | 積載社番・トレーラー | 社番 0・標屯 0・車種空白 | 数字。車種を決める（4.4 の 1）。判定は関連チェックで行う |
| 7 | 発店コード | エラー（増便は便名の発店部分を空白に） | 数字で店所マスターにあり、店所区分が '1'（または店所 0641 で区分 '4'）。増便は支社区分をセット。定便は支社区分が照会時と同じこと（大阪第一（B）と大阪第二（C）は同一とみなす） |
| 8 | 出発予定日　月・日 | どちらか未入力ならエラー | 数字で、月 01～12、日 01～31 |
| 9 | 出発予定日　時・分 | どちらか未入力ならエラー | 数字で、時が 00 なら分 01～59、時が 01～23 なら分 00～59（00時00分は不可） |
| 10・11 | 乗継店１・２ | OK（コード 0） | 数字で店所マスターにあり、店所区分が '1' か '8'。支社区分をセット（増便だけ） |
| 12 | 最終卸店コード | エラー | 数字で店所マスターにあり、店所区分が '1' か '8'。支社区分の扱いは発店と同じ |
| 13 | 到着予定日　月・日 | どちらか未入力ならエラー | 出発と同じ |
| 14 | 到着予定日　時・分 | どちらか未入力ならエラー | 出発と同じ |
| 15 | 次運行便発店コード | 8桁目が発行枚数と違う、または増便ならエラー。それ以外（定便の最終枚）は OK | 8桁目が発行枚数と違う、または増便の場合だけ入力できる（定便の最終枚に入力するとエラー）。数字で店所マスターにあり、店所区分が '1' か '8'。支社区分は、8桁目 ＝ 発行枚数ならセット、それ以外は照会時と同じこと（B・C は同一） |
| 16・17 | 乗務員Ａ・Ｂ | 未入力（'0'） | 数字で従業員マスターにあり、採用・退職区分が 0。マスターになくても 999999 ならダミーコードとして OK。エラーなら名前を「？？？？？？」 |
| 18～21 | 乗継員１Ａ～２Ｂ | | チェックしない（常に OK） |
| 22 | 直配区分 | 未入力（'0'）、値 '0' | '0' か '1' |
| 23 | 直配　着地コード | 直配区分が '1' ならエラー（直配区分もエラー）、それ以外は未入力 | 数字で地名マスターにあり、入力区分が 1。直配区分が '1' でなければエラー（直配区分もエラー）。直配着地最寄りの店所に扱店コードをセット |
| 24 | フェリー会社コード | OK（コード 0） | 数字で 9950000～9989999、運賃計算荷主マスター（１）にあること。フェリー会社区分が、運行車区分 03・04 なら 2、運行車区分 05 または形態 4 なら 1。それ以外の運行車区分・形態はエラー |
| 25 | 連絡事項 | 未入力（空白） | チェックなし |
| 26 | 特定便コード | OK（区分空白・ＮＯ 000） | 1桁目が 'S'・'F'・'R'、2～4桁目が数字で 000 より大きい。'R' は発店が 0407・0405・0404・0326 のときだけ |
| 27 | 鮮魚保険料 | OK（0） | 数字 |

入力区分を変える場合（FLG 2）：

| 入力値 | 条件 | 意味 |
|---|---|---|
| D | 増便（1桁目が 9）で、8桁目が発行枚数または 1 | 増便の削除 |
| 9 | 定便（1桁目が 9 以外）で、8桁目が 1 | 減便 |
| R | 8桁目が 1 で、照会時の入力区分が 9 | 減便からの復活 |
| それ以外 | | エラー |

'D'・'9'・'R' が OK なら、FLG(1)～FLG(34) をすべて OK（'2'）にし、入力結果を '9' にする。ほかの項目のチェック・関連チェックは行わない。

### 4.4 関連チェック

関連チェックは、運行車区分・形態がOK（FLG(3)・FLG(4) が '2'）で、入力区分を変えていない（入力結果が '9' でない）場合に行う。

1. **運行車区分と形態**

| 形態 | 使える運行車区分 |
|---|---|
| 0（ﾌﾂｳ） | 制限なし |
| 8（ｸｳｼﾔ） | 01・03・04・05 |
| 4（ﾃｱﾃ ﾌｴﾘ） | 05 |
| 1・2・3・5・6・7 | 01 |

満たさなければ運行車区分・形態をエラーにする。

FLG(1)～FLG(4) のどれかが未入力・エラーなら「保護フラグ」を立て、ほかのエラー項目は入力不可のまま表示する（4.5）。

2. **積載社番・トレーラーと車種**（FLG(5)・FLG(6)。運行車区分・形態がエラーなら両方エラー）

車種は次のように決める。

| 項目 | 条件 | 標屯 | 車種 |
|---|---|---|---|
| 積載社番 | 運行車区分 03 | 13.8 | '1' |
| 積載社番 | 運行車区分 04 | 5.0 | '5' |
| 積載社番 | それ以外：車両マスターにあり、車両現廃区分 ≦ 1 | 最大積載量 ÷ 1000 | 車両車種 14・26（リース）：最大積載量 0 なら 'X'、2000 以下 '2'、4000 以下 '4'（運行車区分 04 なら '5'）、それ以外 'T'。01：'R'、02：'S'、03・07：'T'、04：'G'、91：標屯 13.8・'1'（運行車区分 04 なら 5.0・'5'）、92：標屯 5.0・'5'、それ以外：'X' |
| 積載社番 | 車両マスターにない、現廃区分 2 以上、数字でない | | 'X' |
| トレーラー | 車両マスターにあり、現廃区分 ≦ 1 | 最大積載量 ÷ 1000 | 01：'R'、03：'F'、04：'G'、それ以外：'X' |
| トレーラー | それ以外 | | 'X' |

組合せのチェック（満たさなければ積載社番・トレーラーをエラー）。

| 運行車区分 | OK の組合せ（積載の車種＋トレーラーの車種） |
|---|---|
| 01・05 | 'F'・'T'・'2'・'4' ＋ なし、'S' ＋ 'R'、'G' ＋ 'F' |
| 03 | '1' ＋ なし |
| 04 | '5' ＋ なし |
| それ以外 | エラー |

積載社番が未入力なら車種が空白のため、組合せのチェックでエラーになる。

3. **乗継店**（運行車区分・形態がOK で、乗継店１・２が OK の場合）
   - 形態が 1（ﾉﾘﾂｷﾞ）・2（ﾄﾞﾂｷﾝｸﾞ）：乗継店１が必要（0 なら乗継店１・２をエラー）。
   - それ以外の形態：乗継店１・２に値があればエラー。
   - 運行車区分・形態がエラーなら、乗継店１・２をエラーにする。
4. **出発・到着の日付**（FLG(8)・(9)・(13)・(14) がすべて OK の場合）

| 項目 | 増便（1桁目が 9） | 定便 |
|---|---|---|
| 基準日 | 処理日付 | 計画出発年月日 |
| 基準日から出発日までの日数 | －10～＋10 日 | －1～＋3 日 |
| 出発日から到着日までの日数 | 0～3 日 | 計画最終卸経過日数が 0 なら －1～2 日、それ以外は（経過日数－1）～経過日数 |

   - 出発の年は基準日の年。ただし基準日が12月で出発月が1月なら翌年、基準日が1月で出発月が12月なら前年。到着の年は出発の年（出発12月・到着1月なら翌年）。日数は LSO0130 で計算する。
   - 出発日と到着日が同じ日なら、出発時分 ＜ 到着時分であること（満たさなければ出発・到着の月日・時分をすべてエラー）。
   - 日数が範囲外、または日数の計算でエラーなら、出発・到着の月日をエラーにする。
   - OK なら、出発年・到着年をセットする。
5. **乗務員**（FLG(16)・FLG(17) のどちらかが OK でない場合）
   - 運行車区分・形態がエラーなら、乗務員Ａ・Ｂをエラーにする（チェックもしない）。
   - 運行車区分が 01、または形態が 4：乗務員Ａが必要。乗務員ＡとＢが同じコード（999999 を除く）ならエラー。
   - それ以外：乗務員Ａ・Ｂとも未入力であること（どちらかを入れるとエラー）。
6. **フェリー会社**（運行車区分・形態・フェリー会社が OK の場合）：フェリー会社コードを入れられるのは、運行車区分が 03・04・05 か形態が 4 のときだけ。それ以外で入れると運行車区分・フェリー会社をエラーにする（未入力はどの区分でも OK）。
7. **特定便と鮮魚保険料**（特定便・鮮魚保険料・運行車区分が OK の場合）
   - 特定便区分が 'R'：運行車区分が 01 なら、鮮魚保険料は 0～3000（超えると鮮魚保険料を関連エラー）。01 以外なら特定便・鮮魚保険料を関連エラー。
   - それ以外：鮮魚保険料は 0 であること（0 でなければ特定便・鮮魚保険料を関連エラー）。
8. **増便の便コード・便名・設定粁**（増便の場合）
   - 発店・最終卸店がOK なら、便コードを「9＋発店の上2桁＋最終卸店の上2桁＋1」にする。
   - 便名（漢字）を「＊＋発店の店所略名（漢字）の先頭3文字＋～＋最終卸店の店所略名の先頭3文字」、便名（カナ）を「発店の店所名（カナ）の先頭7桁＋'-'＋最終卸店の店所名（カナ）の先頭7桁」にする。店所 2303・2304 は店所略名を「名古南　支店」「名古西　支店」に読み替える。
   - 全体がOK なら、発着地粁程マスターを「発店の所在地コード（5桁）＋直配なら直配着地コード、それ以外は最終卸店の所在地コード（5桁）」で読み、設定粁に標準粁程（１）をセットする（なければ 0）。
9. FLG(1)～FLG(27) に '1'（エラー）か '3'（関連エラー）があれば全体エラー（OKFLG '1'）、なければ OK（'2'）。

### 4.5 表示の編集（DISPLAY_SUB_RTN_LVL1）

1. 各項目の表示と属性

| チェック結果 | 表示 | 属性 |
|---|---|---|
| OK（'2'）・未入力（'0'） | チェック後の値（0 は空欄）と名称 | 入力不可 |
| エラー（'1'） | 入力値のまま | 保護フラグが立っていれば入力不可（保護・変更フラグオン）、なければ入力可（輝度）でカーソルを置く |
| 関連エラー（'3'。鮮魚保険料・特定便） | チェック後の値 | エラーと同じ |

   - 運行車区分・形態・入力区分は、エラーなら保護フラグに関係なく入力可（輝度）にしてカーソルを置く。
   - 特定便・連絡事項は、エラーなら入力可（変更フラグオン・輝度）。
   - 運行車区分名・運行車形態区分名をチェック後の値で表示する。運行便名は保護（輝度）で表示する。
2. 入力区分名：0：配車未入力、1：配車入力済、2：出発点呼済、5：到着入力済、9：減　　便、R：減便　復活、D：削　　除、それ以外：？？？？？。入力区分が '0'～'8' なら通常表示、それ以外（9・R・D）は反転表示。
3. メッセージ

| 結果 | エラーコード | メッセージ |
|---|---|---|
| エラー | ERR 1 | エラー項目あり，再入力して下さい。 |
| OK（入力区分 1・2・5） | OK  2 | 確認ＯＫなら実行キーを押して下さい。修正なら、ＰＦ５ |
| OK（入力区分 9） | OK  2 | 減便になります。　　　　　　　　　　修正なら、ＰＦ５ |
| OK（入力区分 D） | OK  2 | このＮＯのマスターを削除します。　　修正なら、ＰＦ５ |
| OK（入力区分 R） | OK  2 | 減便から復活します！　復活しないなら、ＰＦ２で取消してください |
| OK（それ以外） | OK  2 | ？？？？？？？？？？？？？？？？ |

4. エラーなら、TSキューを書き、画面のデータ部分を送信して（カーソル指定）BU08 で待機する。
5. OK なら、TSキュー（520バイト）を書き（書込みエラーなら CLEAR と同じ処理）、画面のデータ部分を送信して BU09 で待機する。

### 4.6 補足（表示の細部）

- 出発・到着の月日と時分は、それぞれ同じチェック結果（月日は FLG 8・13、時分は FLG 9・14）で属性を決める。
- 直配区分が '0' のときは、OK なら空欄、エラーなら空白を表示する。

### 4.7 ファンクションキー・例外処理

| キー・条件 | 処理 |
|---|---|
| PF2 | 画面をクリアし、印刷装置の状態が '0'・空白なら印刷装置を空欄、それ以外は印刷装置のIDを表示（入力不可）。自社傭車フラグを '0'、TSキューを削除。日時・入力店所（端末の店所コード・店所名、入力不可）をセットし、修正項目をすべて入力不可にして、メッセージ「指令書№を入力して実行キー」（反転）を表示、指令書NO にカーソルを置いて画面を消去して送信する。BU07（BU10700P）で待機 |
| PF8・PF9 | 印刷装置の状態が '2' なら、印刷情報（店所・端末ID・印刷装置・処理日付、キュー名 端末ID＋'MMSS'）と、入力端末ＩＤ・データ個数 1 だけの印刷データを TSキューに書き、自社傭車フラグが '1' なら 端末ID＋'SHTS'（318バイト）に書いて BV13、それ以外は 端末ID＋'SHYT'（144バイト）に書いて BV14 を印刷装置で START する。画面のデータ部分を送信し BU08 で待機 |
| PF11 | 印刷装置の状態が '2' なら、印刷装置を強制解放（PURGE）し、正常なら再接続（ACQUIRE・INSERVICE）する。画面のデータ部分を送信し BU08 で待機 |
| PF3 | 印刷装置の状態が '2' なら印刷終了の処理をする。TSキューを削除し、戻り先画面のスタックから一つ前の画面に戻る（BU10700P と同じ） |
| PF4 | 印刷装置の状態が '2' なら印刷終了の処理をする。TSキューを削除し、メインメニューに戻る（BU10700P と同じ） |
| CLEAR | 印刷装置の状態が '2' なら印刷終了の処理をする。TSキューを削除し、終了画面（ELEPHAN）を表示して終了 |
| その他のキー | 画面のデータ部分を再送信し、BU08 で待機 |
| TSキューが読めない、画面データなし・レコードなし・ファイルの終わり | CLEAR と同じ |

印刷終了の処理（PRINTER_FREE）は BU10700P と同じ（印刷終了レコードを2回書いて BV13 を START し、印刷装置の状態を空白にする）。

---

## 5. メッセージ一覧

| No | エラーコード | メッセージ | 表示するとき |
|---|---|---|---|
| 1 | ERR 1 | エラー項目あり，再入力して下さい。 | いずれかの項目がエラー・関連エラー |
| 2 | OK  2 | 確認ＯＫなら実行キーを押して下さい。修正なら、ＰＦ５ | チェックOK（入力区分 1・2・5） |
| 3 | OK  2 | 減便になります。　　　　　　　　　　修正なら、ＰＦ５ | 入力区分を 9 にした |
| 4 | OK  2 | このＮＯのマスターを削除します。　　修正なら、ＰＦ５ | 入力区分を D にした |
| 5 | OK  2 | 減便から復活します！　復活しないなら、ＰＦ２で取消してください | 入力区分を R にした |
| 6 | OK  2 | ？？？？？？？？？？？？？？？？ | チェックOK でそれ以外の入力区分 |
| 7 | （PF2） | 指令書№を入力して実行キー | 初期画面に戻る |

---

## 6. 画面遷移

```mermaid
flowchart LR
    BU07[BU07<br/>BU10700P] -- 照会OK 自社便 --> BU08[BU08<br/>本プログラム]
    BU08 -- 実行（エラー） --> BU08
    BU08 -- 実行（チェックOK） --> BU09[BU09<br/>BU10900P]
    BU08 -- PF2 --> BU07
    BU08 -- PF8・PF9・PF11・その他 --> BU08
    BU08 -- PF3 --> PREV[一つ前の画面]
    BU08 -- PF4 --> MAIN[メインメニュー]
    BU08 -- CLEAR --> END[ELEPHAN 終了]
```

---

## 7. 補足・留意事項

1. **センターとの通信なし**：本プログラムはチェックだけを行い、センターの運行指令マスターは更新しない。チェック後のデータを TSキューで BU10900P に渡し、BU10900P がセンター（BU20900P）に更新を依頼する。
2. **TSキュー名は BU10700P のもの**：TSキューの名前・長さは通信領域の値（BU10700P がセットした「端末ID＋'BU07'」、520）をそのまま使う。
3. **OK済みの項目は再チェックしない**：一度 OK になった項目は、次の実行で値を変えてもチェックしない（入力不可で表示するため、通常は変えられない）。チェックOK の後（BU09 待機中）に PF5 などで戻った場合は、BU10900P の処理による。
4. **乗継員はチェックしない**：乗継員１Ａ～２Ｂは常に OK 扱いで、画面の入力値も取り込まない（照会結果の値のまま）。BU10700P でも入力可にしていない。
5. **乗継店のチェックは増便だけ**：定便では乗継店１・２をチェックせず、照会結果の値を使う。ただし関連チェック（形態 1・2 は乗継店１が必要、それ以外は乗継店があればエラー）は定便でも行う。定便で照会結果の乗継店と形態が合わない場合はエラーになる。
6. **入力区分の変更はほかのチェックを省く**：入力区分を 'D'・'9'・'R' にすると、ほかの項目に何を入れても全項目が OK になる。
7. **指令書NO の表示部分**：指令書NO のチェック結果（FLG(1)）で属性を変える処理が、指令書NO ではなく入力店所（BU07031・BU07032）の属性を変えている。FLG(1) は常に OK のため、入力店所が入力不可（変更フラグオン）になる。
8. **運行車区分・形態のエラー表示**：運行車区分・形態は、エラーになると保護フラグに関係なく入力可になる。BU10700P で入力不可にしていた場合（定便の運行車区分など）でも、形態との関連エラーになると入力できるようになる。
9. **積載社番の車両マスター**：運行車区分が 03・04 のときは、積載社番を車両マスターで確認しない（数字なら標屯・車種を固定値にする）。
10. **00時00分は入力できない**：時が 00 のときは分が 01～59 でないとエラーになる。
11. **PF8・PF9 の違い**：本プログラムでは PF8・PF9 のどちらでも、自社傭車フラグ（BU10700P で '1'）に従って自社便のテスト印刷になる。印刷装置のチェックは行わない（使用可の場合だけ印刷する）。
12. **PF12 なし**：本プログラムでは PF12 は「その他のキー」として再表示になる。
