# 新オンライン共通仕様書ルール

３－Ｄオンラインシステム（リビルド後）のオンライン機能について、プロジェクト共通資料に散らばっているルールを1冊にまとめたもの。

| 項目 | 内容 |
|---|---|
| 対象システム | ３－Ｄオンラインシステム |
| 対象範囲 | オンライン機能（更新・照会・選択画面）の設計と実装に関わる共通ルール |
| 対象外 | バッチ処理、バッチ帳票、CSV出力など、オンラインに関係しないルール |
| 構成 | Java（APサーバ）が HTML を生成し、クライアント端末のブラウザで表示する |

### 出典

| 略称 | 資料名 | 版 | 更新日 |
|---|---|---|---|
| 【共通】 | 共通仕様書 | 第64版 | 2026/10/01 |
| 【作成】 | 設計書作成ルール | 第52版 | 2026/09/11 |
| 【COMM】 | COMM_AREA仕様書 | 第174版 | 2026/09/24 |
| 【命名】 | オブジェクトネーミングルール | 第10版 | ― |

本文の各節の末尾に、元の資料と章番号を `出典：【共通】2.1` のように記す。元の資料に変更前の記述（グレー・取り消し線）が残っている箇所は、最新版の記述を採用した。

---

## 目次

1. 基本方針
2. 現行（PL/I・CICS）からのリビルド方針
3. ネーミングルール
4. オンライン標準処理フロー
5. 画面共通仕様
6. 画面項目のルール
7. 入力チェックのルール
8. 機能間・mode間の値の受け渡し（COMM_AREA）
9. 日付・日時
10. トランザクション
11. ログ出力
12. エラー処理・セッションタイムアウト
13. 集信ログの出力
14. オンライン帳票
15. テーブルカラムの初期値
16. オンライン設計書の構成と書き方
17. 設計書の記述ルール
18. 未確定事項

---

## 1. 基本方針

1. 設計書は、読めばプログラマーがプログラミングできるレベルまで書く。
2. プログラマーの裁量に任せるべきところ（変数の物理名など）までは書かない。
3. システム全体で統一する仕様は、個別の設計書ではなく共通仕様書に書く。
4. 必要最低限のことをシンプルに書く。

出典：【作成】2.1

---

## 2. 現行（PL/I・CICS）からのリビルド方針

### 2.1 プログラムの対応

現行では、1つの画面を複数のオンラインプログラム（DDP 側の SV PG、CIC1 側の PG）で処理している。リビルド後は、これらを**1つの機能（機能ID）**にまとめ、画面の段階ごとに mode と disp で表す。

| 現行 | リビルド後 |
|---|---|
| オンラインプログラム（DDP：JJ1xxxxG、CIC1：JJ2xxxxG） | Java Class（機能ID＝JJXnnnn）。DDP と CIC1 を1つの機能とする |
| マップ（MPttiin） | HTML（MPttiii.html）。マップ名は現行のまま |
| モジュール（Lxm9999G） | Java Class（クラスID）。名前は現行のまま |
| 画面を送信して入力を待つ単位 | disp（画面表示）と mode（実行キー押下時の処理） |

```mermaid
flowchart LR
    subgraph 現行
        A1[SV PG1 / CIC1 PG1] --> M1[MAP]
        M1 --> A2[SV PG2]
        A2 --> M2[MAP]
        M2 --> A3[SV PG3 / CIC1 PG2]
    end
    subgraph リビルド後（1機能）
        B1[mode1<br/>初期表示処理] --> D1[disp1]
        D1 --> B2[mode2<br/>disp1で実行キー押下時]
        B2 --> D2[disp2]
        D2 --> B3[mode3<br/>disp2で実行キー押下時]
        B3 --> D3[disp3]
        D3 --> B4[mode4<br/>disp3で実行キー押下時]
    end
```

### 2.2 PL/I のルーチンとの対応

現行の標準パターン（PPOD800P など）のルーチンは、mode の各処理に対応する。

| 現行 PL/I のルーチン | リビルド後（modeY の処理） |
|---|---|
| MAIN_RTN_START／MAIN_RTN_RESTART（画面受信・TS読込） | mode の開始（画面入力の受取り） |
| CHECK_RTN_START（項目チェック） | validateModeY（チェック処理） |
| DISPLAY_RTN_START（エラー表示の編集） | エラーコードがあれば disp に戻ってメッセージを表示 |
| INQUIRE_SUB_RTN_START（照会） | getDataModeY／dataProcessModeY |
| OK_DATA_PROCESS_RTN_START（正常時処理） | dataProcessModeY／okProcessModeY |
| NEXT_SENDMAP_RTN（次画面送信） | 次の disp を表示 |

### 2.3 現行の項目の扱い

- 現行で分割されていた番号項目（送り状ＮＯ 5-6 など）は、原則として1つの入力枠にまとめる（6.9 参照）。
- 現行の「高輝度」表示は対応不要とする（5.4 参照）。
- 画面項目仕様には、対応する現行マップの変数名を「旧マップ変数名」として書く（6.1 参照）。

出典：【作成】3.1、【命名】2.1、【共通】2.4・2.6

---

## 3. ネーミングルール

### 3.1 プログラムオブジェクト

| オブジェクト | 名前 | 構成 |
|---|---|---|
| 画面（HTML） | `MPttiii`（7桁）＋`.html` | tt＝業務区分、iiii＝シーケンス番号。現行のマップ名をそのまま使う |
| オンライン機能（Java Class） | 機能ID `JJXnnnn`（7桁） | JJ＝業務区分、X＝処理形態（オンラインは `1`）、nnnn＝業務区分ごとの連番（0010、0020…。下1桁は予備） |
| クラス（共通部品） | クラスID `Lxm9999`（7桁） | x＝業務区分（システム共通は `S`）、m＝`O`：オンライン、`B`：バッチ、`S`：システム共通、`R`：印刷、9999＝連番 |

- ツール系で使う業務区分は `SO`。
- 処理形態 X の値：1：オンライン、3：リアル、4：日次、5：随時、6：請求書、7：週次、8：月次、9：四半期・半期・年次、C：コンバージョン、M：マスタメンテ、P：関数。
- ソースは SVN（3-DOS_ProjectSource）で管理する。オンラインの Java Class は「Web」、クラスは「Common」に置く。

出典：【命名】2.1・2.2

### 3.2 Java のコーディング上の名前

| 種類 | 記法 | 例 |
|---|---|---|
| クラス名 | Pascal記法（単語の先頭を大文字） | `PermissionsIntro`、`FileCopy` |
| メソッド名 | camelCase記法（先頭は小文字、単語の区切りを大文字） | `fileSend()`、`checkVersion()` |
| 値の取得・設定メソッド | 先頭を `get`／`set` | `getCount()`、`setDate()` |
| 論理値を返すメソッド | `is`＋形容詞、`has`＋過去分詞、`can`＋動詞 | `isEmpty()`、`hasChanged()`、`canAccess()` |
| 定数名 | すべて大文字、区切りはアンダースコア | `MIN_VALUE`、`DATABASE_PATH` |
| 変数名（フィールド名） | 先頭は小文字、単語の区切りを大文字 | `count`、`startDate`、`errMsg` |

- 対になる処理は、英単語の対称性を意識して命名する（add/remove、insert/delete、get/set、start/stop、begin/end、send/receive、open/close、show/hide、lock/unlock、old/new、next/previous など）。
- ローマ字で命名する場合は、音ではなく字面を優先する（経理：〇 keiri、× keeri）。

出典：【共通】1.1～1.5、資料_ローマ字

### 3.3 データオブジェクト（オンラインに関係するもの）

| 現行 | リビルド後の格納先 | テーブル名 |
|---|---|---|
| DB2（RD＋XXXX） | RDB のテーブル | 現行と同じ |
| VSAM KSDS（VK・VH・VE＋XXXXXX） | RDB のテーブル | 現行と同じ |
| TSキュー | RDB のテーブル（新規作成） | `OS＋XXXXXX` |
| TDキュー | RDB に JSON 形式で格納（新規作成） | `OJ＋XXXXXX` |
| COMM_AREA | COMM_AREA／COMM_AREA_DETAIL（8章 参照） | ― |

新しく作るデータオブジェクト：

| 種類 | 名前 | 備考 |
|---|---|---|
| 構造化データ（可変長データを含まない） | テーブル `OT＋XXXXXX` | カラム名は `AAAAXXXX` の8文字まで。頭4桁は固定文字（例：テーブル名の下4桁） |
| 可変長データを含むデータ | テーブル `OJ＋XXXXXX` | 可変長部分を JSON 形式にして格納 |
| システムで必要なデータ | テーブル `OS＋XXXXXX` | |
| 疑似表 | `OV＋XXXXXX` | |
| 構造体（クラス間の受け渡し用） | `ST＋XXXXXX` | Java のコーディングルールに従う |
| JSON データのビュー | `ZV_テーブル名_JSON構造体名` | カラム名は JSON 構造体のカラム名 |

テーブル名・カラム名には英大文字、数字、アンダースコアだけを使い、先頭に数字は使わない。

出典：【命名】1.1

---

## 4. オンライン標準処理フロー

### 4.1 mode と disp

| 用語 | 意味 |
|---|---|
| mode1 | 初期表示処理。Java で HTML を生成する |
| dispX | 画面表示。直前の mode でセットした内容が表示され、利用者が入力する |
| modeY | dispX で実行キーが押されたときの処理（Y＝X＋1） |

```mermaid
flowchart TD
    M1[mode1：初期表示処理] --> D1[disp1：画面表示・入力]
    D1 -- 実行キー --> M2[mode2]
    M2 -- エラーコードあり --> D1
    M2 -- OK --> D2[disp2]
    D2 -- 実行キー --> M3[mode3]
    M3 -- エラーコードあり --> D2
    M3 -- OK --> D3[disp3]
```

- mode の処理は、必ず disp（画面表示）で終わる。
- エラーコードがセットされた場合は、元の disp に戻って modeY のメッセージを表示する。

### 4.2 mode の中の処理の順番

「初期表示」と「実行：継続」の処理は、次の4つのメソッドの順で書く。

| 順 | メソッド | 書く内容 |
|---|---|---|
| 1 | getDataModeX（データ取得処理） | チェック処理で使うデータの取得など |
| 2 | validateModeX（チェック処理） | 詳細はデータチェック仕様に書く。チェックがNGでも表示する値（例：店所コードの存在チェック時に取得した店所略名）はここでセットする |
| 3 | dataProcessModeX（データ処理） | 画面表示に必要なデータの取得と、データ更新。更新内容は DB更新仕様、構造体にセットする値はマッピング仕様に書く。データ処理がNGでも表示する値はここでセットする |
| 4 | okProcessModeX（ＯＫ処理） | チェック処理・データ処理がOKのときに表示する値をセットする。表示の詳細は画面項目仕様に書く |

### 4.3 エラーコードの採用

1. 画面レイアウトのチェック処理に書いたエラーコードは、処理の順にセットされる（後からセットしたもので上書き）。
2. データチェック仕様に書いたチェックは、最初にエラーになった項目のエラーコードを採用する。
3. どこでもエラーコードがセットされずに異常となった場合は、次を表示する。
   - エラーコード：`"EDPM" & Y`（Y は出力先の画面番号）
   - エラーメッセージ：「処理ＥＲＲＯＲ　センターに連絡して下さい」

### 4.4 PGフローのパターン

| パターン | フロー |
|---|---|
| 入力①　登録前に確認メッセージあり | mode1 → disp1（ヘッダー入力）→ mode2（チェック、詳細部に必要な情報を取得）→ disp2（詳細入力）→ mode3（チェック）→ disp3（登録確認）→ mode4（登録） |
| 入力②　登録前に確認メッセージなし | mode1 → disp1（ヘッダー入力）→ mode2（チェック、詳細部の情報取得）→ disp2（詳細入力）→ mode3（チェック、登録） |
| 入力③　登録のみ | mode1 → disp1（入力）→ mode2（チェック、登録） |
| 照会①　別詳細画面なし | mode1 → disp1（条件入力）→ mode2（照会内容をセット）→ disp2（照会内容表示） |
| 照会②　別詳細画面あり | 照会① の disp2 で別詳細を選択 → mode3 → disp3／disp4／disp5 → mode4／mode5／mode6 |

出典：【共通】6.4、【作成】3.1・3.2・3.3・3.オンライン設計(補足)

---

## 5. 画面共通仕様

### 5.1 画面のブロック構成

| ブロック | 内容 |
|---|---|
| 【共通ヘッダー部】 | タイトルなど、全画面共通の項目 |
| 【ヘッダー部】 | 検索条件など、一覧表示以外で上部に表示する項目 |
| 【明細部（ヘッダー）】 | 一覧表示の見出しなど |
| 【明細部】 | 一覧表示の内容 |
| 【明細部（フッター）】 | 合計など、一覧表示の最下部 |
| 【フッター部】 | 一覧表示以外で下部に表示する項目 |
| 【共通フッター部】 | メッセージ、ファンクションキー |

### 5.2 共通ヘッダー部

1行目に現在日時、2行目に所属店所コード・所属店所略名・従業員名を表示する。

| No | 項目名 | 変数名（Thymeleaf） | 備考 |
|---|---|---|---|
| 1 | 機能ID | `map_id` | |
| 2 | 機能名 | `title` | |
| 3 | 現在日時 | `system_date` | |
| 4 | 所属店所コード | `tensyo_cd` | |
| 5 | 所属店所略名 | `tensyo_nm` | |
| 6 | 従業員名 | `user_nm` | |
| 7 | Windowsキー | `WINDOWS_KEY` | デバッグ時のみ |
| 8 | CommAreaId | `COMM_AREA_ID` | デバッグ時のみ |

変数は Controller で `model.addAttribute` する。

### 5.3 共通フッター部

メッセージ部とファンクションボタン部で構成する。

| 項目名 | 変数名（Thymeleaf） | 備考 |
|---|---|---|
| エラーコード | `error_code` | |
| エラーメッセージ | ― | |
| ファンクションボタン1～12 | `fb1`～`fb12` | POST時の method の値は `f1`～`f12`（F1 は各画面で設定） |
| ファンクションボタン13～24 | `fb13`～`fb24` | Shift＋F1～F12 で実行する（F13～F24） |

- ボタンはファンクションキーに割り当てる。
- 割り当てのないボタンは非活性にし、ファンクションキーも効かないようにする。
- 活性制御は `functionEnabledList`（文字列の配列）に `"f1"` などを設定して行う。
- ファンクションボタン1 は、右 Ctrl またはテンキーの Enter でも動作する。

### 5.4 デザイン（文字色・表示効果）

| 設計書での表記 | CSS | 反転表示の CSS |
|---|---|---|
| 青 | `font-blue` | `invert-blue` |
| 赤 | `font-red` | `invert-red` |
| ピンク | `font-magenta` | `invert-magenta` |
| 緑 | `font-green` | `invert-green` |
| ターコイズ | `font-turquoise` | `invert-turquoise` |
| 黄 | `font-yellow` | `invert-yellow` |
| 黒（既定） | `font-black` | `invert` |
| 点滅（文字） | `font-blink` | ― |
| 点滅（背景） | `blinking` | ― |

- 現行 PL/I の「高輝度」は対応不要とする。
- エラー表示は、赤枠・赤文字とする。
- 上記以外の表示方法は要相談。

### 5.5 スクロールと入力枠

- 入力系の画面は、横・縦ともスクロールしない。入りきらない場合は相談する。
- 照会系の画面は、項目数に応じて横・縦のスクロールを許可する。縦スクロール時、ヘッダー項目（検索条件など）は固定表示とする。
- 入力枠の幅は最大文字数に合わせる。スクロールの制限などで最大文字数より狭い枠にする場合は、文字サイズは変えずに後半を隠し、「...」を表示する（フォーカス時に全文字を確認できる）。

出典：【共通】2.1～2.4、【作成】3.11

---

## 6. 画面項目のルール

### 6.1 画面項目仕様の項目

| 項目 | ルール |
|---|---|
| ID | 【共通ヘッダー部】【共通フッター部】以外で、画面で入力する項目・PGで値をセットする項目に、ユニークなIDを付ける（6.2） |
| 項目名 | 画面で入力する項目・PGでセットする項目はユニークな名前を書く。PGでセットしない固定の項目は、表示する文字列を書く |
| タイプ | 表示内容が固定の項目は `label`（PGで値をセットする項目は label にしない）。入力内容を隠す項目は `password`。選択入力は `select`。それ以外は `input`。IDを付けた項目は input・password・select に限る |
| 行、列 | 画面の左上から何行目・何列目か。行番号は共通ヘッダー部を除いて1から始める連番（デザイン上の行間があっても連番） |
| 形式 | input・password の項目にだけ書く（6.3） |
| 文字数 | 全角・半角を問わず最大文字数。カンマ、小数点、日時のスラッシュ・コロンは含めない |
| 表示文字数 | 画面表示の最小表示文字数。文字数と同じなら空白 |
| 編集 | 入力項目は入力データ取得時、表示項目は表示時に適用するフォーマット（6.4） |
| 制御 | modeX 取得先：mode の OK処理でセットする内容。dispX：初回表示時の制御（6.5） |
| 旧マップ変数名 | 現行オンライン画面の項目ID |

- 項目一覧は、画面の左上から右下への配置順に書く。変更があった場合は行を入れ替えるが、IDは変えない。
- 一覧表示の明細部は、1行分だけ項目仕様に書く。画面レイアウトの処理には「件数分セットする。」と書く（横方向の繰り返しは「横方向」と明記）。

### 6.2 ID（name・id）の命名

`XX0009999`（9桁）

| 桁 | 内容 |
|---|---|
| 1～5桁目 | マップIDの3桁目～7桁目（例：MPBR180 → `BR180`） |
| 6～9桁目 | 画面に対する項目の連番（4桁） |

PG開発の開始後はIDを変更しない。追加する項目には、連番の最後に続くIDを付ける。

### 6.3 入力可能形式

| 形式 | 半角 数字 | 半角 英小 | 半角 英大 | 半角 記号 | 半角 カナ | 全角 | InputManJS の format |
|---|---|---|---|---|---|---|---|
| C：数字（左寄せ） | 〇 | × | × | × | × | × | `9` |
| 9：数字（右寄せ） | 〇 | × | × | × | × | × | `9` |
| T：数字・記号（左寄せ） | 〇 | × | × | 〇 | × | × | `9@` |
| H：英字（大文字/半角）・数字 | 〇 | × | 〇 | × | × | × | `9A` |
| X：英字（大文字/半角）・数字・記号 | 〇 | × | 〇 | 〇 | × | × | `A9@S` |
| N：日本語 | 〇 | 〇 | 〇 | 〇 | 〇 | 〇（全種） | `''` |
| ｱ：半角英字・数字・カナ | 〇 | 〇 | 〇 | 〇 | 〇 | × | `HS` |
| 全：全角日本語 | × | × | × | × | × | 〇（全種） | `ＺＳ` |

入力部品は GcTextBox（InputManJS）を使う。

### 6.4 編集フォーマット

| 用途 | 書き方 |
|---|---|
| 0埋め5桁 | `99999` |
| 0埋め5桁、オール0なら空にする（送り状NO、着地コードなど） | `ZZZZZ` |
| カンマ編集7桁 | `#,###,##0` |
| 必ず符号付きのカンマ編集 | `±#,###,##0` |
| マイナスのみ符号付きのカンマ編集 | `（－）#,###,##0` |
| 小数点表示 | `#9.9` |
| 先頭から4文字だけ表示 | 「5文字以上の場合、左から4文字」と書く |

日時のフォーマット：

| 項目 | 書き方 | 例（2024/01/02 13:05:07.089） |
|---|---|---|
| 年（4桁／2桁） | `yyyy`／`yy` | 2024／24 |
| 月（2桁固定／可変） | `MM`／`M` | 01／1 |
| 日（2桁固定／可変） | `dd`／`d` | 02／2 |
| 時 24時間制（2桁固定／可変） | `HH`／`H` | 13 |
| 時 12時間制（2桁固定／可変） | `hh`／`h` | 01／1 |
| 分（2桁固定／可変） | `mm`／`m` | 05／5 |
| 秒（2桁固定／可変） | `ss`／`s` | 07／7 |
| ミリ秒 | `SSS` | 089 |

### 6.5 制御

| 制御 | 入力 | input の場合 | label の場合 |
|---|---|---|---|
| 1：表示のみ | × | 入力できず通常表示（タブストップしない） | 通常表示 |
| 2：任意入力項目 | 〇 | 入力可能 | 使用不可 |
| 3：必須入力項目 | 〇 | 入力可能 | 使用不可 |
| 8：項目名 | × | 使用不可 | クリックすると、同じ項目名の input にフォーカスする |
| 9：固定 | × | 入力できず通常表示 | 使用不可 |
| -：非活性 | × | 入力できずグレーアウト（タブストップしない） | 使用不可 |
| 0：非表示 | × | 表示しない | 表示しない |

### 6.6 共通フッター部のメッセージ

- modeY でエラーになったときに表示するメッセージを、エラーコードごとに書く。
- OK時にメッセージを表示する場合は、画面レイアウトなどに書く。

### 6.7 複数レイアウト

1つの機能で複数のレイアウトを持つ場合（処理は同じで表示だけが違う場合）：

- 画面レイアウトには、複数の画面イメージをマップIDを添えて並べる。初期処理・OK処理で、どのマップIDを使うかを書く。
- 画面項目仕様は、シート名を「画面項目仕様_マップID」とする。制御と旧マップ変数名は1つのシートにだけ書き、他のシートにはレイアウトの内容だけを書く。

### 6.8 標準的な表示項目

| 項目 | 表示内容 | テーブル | 物理名 | 桁数 | 形式 |
|---|---|---|---|---|---|
| 店所名 | 店所略称 | RDTENS（店所基本情報ＤＢ２） | DDTTNRNM | 6 | 全 |
| 従業員名 | オンライン用従業員氏名 | OVJYUGY（ＤＤＰ　従業員マスタ） | VEJYJNM1 | 6 | 全 |
| 顧客名 | 顧客略名（漢字） | VKCUSTM（顧客マスター（基本情報）） | KNTNRGNM | 6 | 全 |
| 顧客名カナ | 顧客略名（カナ） | VKCUSTM（顧客マスター（基本情報）） | KNTNRCNM | 14 | 半 |

### 6.9 標準的な入出力項目

| 項目 | 枠数 | 桁数 | 形式 | 編集 | 補足 |
|---|---|---|---|---|---|
| 送り状ＮＯ | 1 | 11 | C | `ZZZZZZZZZZZ` | 現行の 5-6 分割を1つにする |
| 精算書ＮＯ・合計表ＮＯ | 1 | 12 | C | `ZZZZZZZZZZZZ` | 現行の 7-5 分割を1つにする |
| 顧客コード7桁＋連番5桁のＮＯ | 2 | 7＋5 | C | `ZZZZZZZ`／`ZZZZZ` | 現行画面と同じにする（分割なら分割のまま） |
| 運転日報ＮＯ | 1 | 8 | C | `ZZZZZZZZ` | 現行の 4-4 分割を1つにする |
| 訂正ＮＯ | 1 | 7 | C | `ZZZZZZZ` | 現行の 3-4 分割を1つにする |
| 西暦（2000年以降のみ入力） | 入力：2（上2桁・下2桁）／出力：1 | 2＋2／4 | 9 | `99`／`yyyy` | |
| 西暦（1999年以前も入力） | 1 | 4 | 9 | `yyyy` | |

### 6.10 入力項目への値のセット

画面の入力項目に値をセットするときは、セットする値の右側の半角スペースを削除する。

出典：【共通】2.3・2.5～2.7、【作成】3.4・3.11・3.13

---

## 7. 入力チェックのルール

### 7.1 チェックの種類と記述順

各項目は、**未入力チェック → 形式チェック → 文字数チェック**を必ず最初に書き、その後に共通チェック・範囲チェック・存在チェックなどを書く。

| チェック | 内容 |
|---|---|
| 未入力チェック | 入力されているか |
| 形式チェック | 入力可能形式（6.3）に合っているか |
| 文字数チェック | 最大文字数を超えていないか |
| 共通チェック | 共通関数で定義されたチェック |
| 範囲チェック | 入力値が正しい範囲内か |
| 妥当性チェック | チェックディジットなど、入力値が妥当か |
| 存在チェック | マスタデータなどに存在するか |
| 必須チェック | 必須項目が入力されているか |
| 整合性チェック | 複数の項目の間で整合が取れているか |

未入力・形式・文字数チェックの内容は画面項目仕様で分かるため、チェック内容欄には書かない。

### 7.2 項目チェックと関連チェック

| 区分 | ルール |
|---|---|
| 項目チェック | 入力される項目をすべて書く（チェックのない項目も「チェック内容なし」で書く）。チェック内容がすべてOKの場合、その入力項目はロック（入力不可）になる |
| 関連チェック | 複数の項目を組み合わせたチェック。いずれかがNGの場合、No でまとめた項目すべてのロックを解除する。「エラー項目としてまとめる項目群」を書く（チェック内容で使う項目ではない）。1行に1チェックで書く |

### 7.3 エラーコード

- チェック内容に該当したときに表示するエラーコードを書く。エラーコードは画面項目仕様のメッセージとリンクする。
- エラーコードを書かないチェックは、エラーとして扱わない。
- 採用の順番は 4.3 のとおり。

### 7.4 共通チェック

- データチェック仕様で共通チェックとした項目は、**LSS0001** クラスでチェックする。戻り値はエラーコードで、空文字ならエラーなし。
- プロシージャでチェックする場合、引数が1つで対象の項目も1つであれば、設計書への引数の記載を省略してよい。
- 画面の入力必須チェックと、その機能にしかない特別な入力チェック（選択画面の選択番号の範囲チェック、使用端末による選択番号のチェックなど）は、機能ごとに行う。

### 7.5 禁止文字

- オンライン画面の入力項目では、`,`（半角カンマ）を禁止する。データチェック仕様の形式チェックでエラーにする。
- 外部からの受信データや半角変換などで禁止文字に該当した場合は、`.`（ピリオド）に置き換える。

### 7.6 年の入力範囲

オンライン画面から入力できる年は、最大で 1901年～2099年 とする。

出典：【共通】3.1～3.3、【作成】3.5・3.オンライン設計(補足)

---

## 8. 機能間・mode間の値の受け渡し（COMM_AREA）

### 8.1 COMM_AREA（全機能共通）

| 項目 | 項目名 | 型 | 桁数 | 備考 |
|---|---|---|---|---|
| ID | ID（連番） | NUMBER | | プライマリーキー |
| WINDOW_KEY | ウィンドウ識別キー | VARCHAR2 | 2000 | ユニークキー |
| COMMJGCD | 従業員コード | NCHAR | 6 | |
| CRT_BACK_KOSU | 要素数 | INT | | 戻り先画面の件数 |
| CRT_BACK_FUNC_ID_1～5 | 遷移元機能ID1～5 | NCHAR | 7 | 現行の CRT_BACK_DATA に当たる |
| COMM_TRM_CODE | PC名 | NCHAR | 15 | 端末ID |
| COMM_TEN_CODE | 事業所コード | NCHAR | 4 | 店所コード |
| COMM_PROC_YMD | オンライン稼働日付 | NCHAR | 8 | `yyyyMMdd` |
| LAST_UPDATE_DATE | 最終更新日時 | TIMESTAMP | 6 | |

### 8.2 COMM_AREA_DETAIL（機能ごとの受け渡し領域）

グループキー（20桁）＋キー（20桁）で値を持つ。

| グループキー | 用途 |
|---|---|
| `COMM_USER` | ユーザー情報。複数の機能で共通に使う値（集配ID、選択番号、作業選択番号、照会画面処理区分など） |
| 機能ID（例：`BR10050`） | その機能の受け渡し用の値。mode間で引き継ぐワーク項目もここに置く（例：BR10050 のワーク顧客略名漢字 `BR18RGNM`、ワーク電話番号 `BR18TLNO`） |

- 属性が JSON の場合は、備考に構造体名を必ず書く。
- 新しい項目は COMM_AREA仕様書（2.GROUP_KEY仕様、3.COMM_AREA_DETAIL仕様）に登録する。

### 8.3 受け渡しの方針

- 機能間の値の受け渡しは COMM_AREA_DETAIL を使う。
- 明細行の選択などで別画面を表示する機能を設計するときは、次の手順で判断する。

```mermaid
flowchart TD
    A[遷移先は別の機能IDの画面か] --> B{他の機能からも<br/>その遷移先を表示するか<br/>（PL/I ソースで確認）}
    B -- ない --> C[遷移元の機能に含めて<br/>1つの設計書で設計する<br/>COMM_AREA_DETAIL を使わなくてもよい]
    B -- ある --> D{遷移先は設計済みか<br/>（リビルド設計・開発管理表）}
    D -- 設計済み --> E[遷移先の設計書の<br/>受け渡し方法に合わせる]
    D -- 未設計 --> F[遷移元の PL/I ソースから<br/>受け渡す値を判断し<br/>COMM_AREA_DETAIL に入れる]
    F --> G[機能IDがなければ<br/>設計リーダーに附番を依頼]
```

### 8.4 設計書での書き方

| 対象 | 書き方 | 例 |
|---|---|---|
| COMM_AREA | `COMM_AREA.[項目 または 項目名]` | `COMM_AREA.COMM_TEN_CODE`、`COMM_AREA.事業所コード` |
| COMM_AREA_DETAIL | `COMM_AREA_DETAIL.[グループキー または グループキー名].[キー または 項目名]` | `COMM_AREA_DETAIL.COMM_USER.COMM_SHU_ID`、`COMM_AREA_DETAIL.ユーザー情報.集配ID` |

出典：【COMM】1～3、【作成】2.10・3.12

---

## 9. 日付・日時

### 9.1 日付の種類

| 種類 | 内容 | 取得メソッド |
|---|---|---|
| オンライン稼働日付 | オンライン処理上の営業日 | `getOnlineSysytemDate` |
| オンライン起動日付 | オンラインの立ち上げ処理を実行した日付 | `getOnlineBootDate` |
| バッチ処理日付 | バッチ処理上の営業日 | `getBatchSystemDate` |
| システム日付 | 現在日付 | `getSystemDate` |
| ＰＯＳリアル稼働日付／起動日付 | ＰＯＳリアル処理上の営業日／立ち上げ処理の実行日付 | ― |
| ＰＯＳダイレクト稼働日付／起動日付 | ＰＯＳダイレクト処理上の営業日／立ち上げ処理の実行日付 | ― |

日付は共通関数のメソッドで取得する。

### 9.2 現在日時の取得

| 種類 | メソッド |
|---|---|
| システム日時 | `getSystemDate("yyyyMMddHHmmss")` |
| システム日付 | `getSystemDate("yyyyMMdd")` |
| システム時刻 | `getSystemDate("HHmmss")` |

出典：【共通】10.1～10.3

---

## 10. トランザクション

設計書に特別な記述がない場合、オンライン処理は**最初にトランザクションを開始し、最後にコミット**する。

出典：【共通】5.1.1

---

## 11. ログ出力

### 11.1 ログの種類

| ログ | テーブル | 用途 |
|---|---|---|
| システムログ | OSMLOGSY（システムメッセージログ） | オンライン・バッチ共通。ABEND やクラス処理の開始・終了 |
| オンラインログ | OSMLOGON（オンライン処理ログ） | オンライン処理専用。機能の開始と ABEND |
| 貨物追跡ログ | OTCTKLOG（貨物追跡照会ログ） | 貨物追跡の照会履歴 |

### 11.2 出力のタイミングと内容（オンライン処理）

**機能の開始時（mode1 処理時）：オンラインログ**

| 項目 | セットする内容 |
|---|---|
| 日時 | サーバー日時 |
| 端末店所コード | 画面上の店所コード |
| 端末名 | 端末名 |
| ログイン従業員コード | ログインで入力した従業員コード |
| 機能ＩＤ | 画面の機能ＩＤ |
| 操作画面番号 | 操作している画面の番号（1～4） |
| 作業選択１～４ | 画面までの選択番号 |
| ログ内容 | `"OPEN"` |
| ログレベル | `"INFO"` |
| ＰＧバージョン | 実行したＰＧのバージョン番号 |

**ABEND 発生時：システムログとオンラインログの両方**

| 項目 | システムログ | オンラインログ |
|---|---|---|
| 日時 | サーバー日時 | サーバー日時 |
| 機能ＩＤ | 処理開始機能ＩＤ＝画面の機能ＩＤ、ログ出力機能ＩＤ＝エラーが発生したクラスＩＤ | 画面の機能ＩＤ |
| 端末・従業員 | 端末名、ログインした従業員コード | 端末店所コード、端末名、ログインした従業員コード |
| 操作画面番号・作業選択 | ― | 開始時と同じ |
| ログ内容 | エラー内容 | プロシージャ名 & エラー内容 |
| ログレベル | `"ERROR"` | `"ERROR"` |
| ＰＧバージョン | 実行したＰＧのバージョン番号 | 同左 |

**クラス処理の開始・終了・ABEND：システムログ**

| 項目 | 開始時 | 終了時 | ABEND時 |
|---|---|---|---|
| 処理開始機能ＩＤ | 画面の機能ＩＤ | 同左 | 同左 |
| ログ出力機能ＩＤ | クラスＩＤ | 同左 | 同左 |
| ログ内容 | メソッド名 & `" Start"` | メソッド名 & `" End  Result ="` & リターンコード | エラー内容 |
| ログレベル | `"INFO"` | `"INFO"` | `"ERROR"` |

共通関数・共通チェック関数・消費税計算・運賃計算など、モジュールをクラス化したクラスは、開始時・終了時のログを出力しない。

出典：【共通】4.1～4.4・4.6

---

## 12. エラー処理・セッションタイムアウト

### 12.1 エラー処理（共通）

1. エラーが発生したらエラーページに遷移する。
2. デバッグ用のエラーログを残す。
3. サーバーが稼働中、またはログイン状態を判定できる場合は、「戻る」ボタンで前の画面を表示する。
4. サーバーが停止中、またはログイン状態を判定できない場合は、「閉じる」ボタンで画面を閉じ、認証アプリで再度ログインする。

| 環境 | エラーページの表示内容 |
|---|---|
| 本番環境 | HTTPステータスのみ |
| テスト環境（開発など） | HTTPステータスと、デバッグ用のエラーログ |

### 12.2 セッションタイムアウト

- セッションタイムアウトは XX分とする（未確定）。
- タイムアウト時はタイムアウトエラー画面を表示し、閉じたら再度ログイン画面を表示する。

### 12.3 アクセス制御とエラーページ

| 状態 | ログインページ | 通常ページ | 不正なURL | static |
|---|---|---|---|---|
| 初回アクセス | 〇 | 認証エラー | 認証エラー | 〇 |
| セッション有効・ログイン済み | 〇 | 〇 | エラーページ（404） | 〇 |
| セッション有効・未ログイン | 〇 | 未認証 | 未認証 | 〇 |
| セッションタイムアウト | 〇 | セッションタイムアウト | セッションタイムアウト | セッションタイムアウト |

エラーページにも共通ヘッダー部（5.2）を表示する。

### 12.4 主な HTTP ステータス

| コード | 意味 |
|---|---|
| 403 Forbidden | ページの閲覧権限がない |
| 404 Not Found | ページの URL が見つからない |
| 500 Internal Server Error | サーバー内部エラー（プログラムミスなど） |
| 503 Service Unavailable | サービス利用不可（メンテナンス中、アクセス集中など） |

出典：【共通】6.1～6.3、資料 エラーコード

---

## 13. 集信ログの出力

オンライン処理から集信ログを登録する場合は、**LSS1030（集信ログ登録処理）**を使う。リアル処理への振り分けは LSS1030 が行うため、各機能は書き込み先を意識しなくてよい。

集信ログテーブルの共通レイアウト：

| 物理名 | 論理名 | データ型 | 桁数 | 備考 |
|---|---|---|---|---|
| ID | サロゲートキー | DECIMAL | | 自動採番 |
| SYUSRENO | ＲＥＡＬ番号 | NCHAR | 1 | |
| SYUSDCTC | 店所コード | NCHAR | 4 | |
| SYUSDCID | 集信ＩＤ | NCHAR | 3 | |
| SYUSKADO | 稼働日 | NCHAR | 8 | |
| SYUSDCFL | 処理フラグ | DECIMAL | 1,0 | 0：未処理、9：処理済み |
| SYUSDCVD | 集信データ | NVARCHAR2 | 2000 | 集信ＩＤごとのレイアウトを JSON 形式で格納 |
| SYSCRDTS～SYSUPPID、VERSION | 作成・更新の共通項目、Lockバージョン | | | 15章 参照 |

集信ＩＤごとのレイアウトは、共通仕様書のリアル集信ログ一覧に定義する。

出典：【共通】8.1・8.2・8.5

---

## 14. オンライン帳票

オンラインからの帳票出力は、PDF を作成して別画面で表示するか、電子帳票の印刷とする。

出典：【共通】12.1

---

## 15. テーブルカラムの初期値

### 15.1 共通の管理項目

テーブルには次の共通項目を持つ。DB更新仕様には書かない。

| 物理名 | 論理名 |
|---|---|
| ID | サロゲートキー（自動採番） |
| SYSCRDTS／SYSCRTID／SYSCRJCD／SYSCRPID | 作成日時／作成端末／作成ユーザー／作成処理ID |
| SYSUPDTS／SYSUPTID／SYSUPJCD／SYSUPPID | 更新日時／更新端末／更新ユーザー／更新処理ID |
| VERSION | Lockバージョン（楽観的排他制御に使用） |

### 15.2 初期値の基本ルール

JOIN に使いそうな項目（マスタやテーブルの検索に使う項目）は、初期値を統一する。迷う場合はプロジェクトの担当者に確認する。

| 初期値 | 主な項目 |
|---|---|
| スペース | ３ｍコード、シリアル、ナンバープレート、インボイス、送り状NO、回送票NO、企業コード、機能ID、銀行、計画便、口座、高速・IC、顧客（顧客コード・荷主コード・委託会社コードなど）、雇用保険、支払報告書、年月日時分（年月日・年度を含む）、時分秒、社番（車号を含む）、従業員、住所、集信ID、集配班、集配票NO、指令書NO、精算・請求書NO、全角・カナ名、送付書NO、端末、訂正NO、訂正明細NO、デジタコ、電話番号、ＥＤＰＮＯ.、店所、入金報告書NO、年金番号、パスワード、班、プレートNO、法人番号、マイナンバー、免許NO、郵便番号、輸送依頼書・指令書、傭車会社、リアル番号、支社区分、地区区分、入力画面区分、運行車区分（一部）、再振データ区分（ＰＯＳ）、商品コード、雑・締処理区分、レコード区分、配達指定日区分、ＩＤ、区域設定便コード、科目コード（7桁）、車番、職種コード |
| `'0'` | サーチャジ料金区分、精算区分、委託端数区分、事業区分、符号＋・ー、割増区分、保険の種類、代引・ローン形態区分、経費区分、コース、運用形態、計画便傭車使用形態、館内配送料区分、休日区分、手形種類 |
| `'00'` | 傭車形態、運行車区分（一部）、収入計上区分、扱方、日（締日・支払日など2桁の日）、エラーフラグ、科目コード（2桁）、科目ＩＤ、枝番 |
| `'000'` | 品目コード、特定便コード |
| `'0000'` | 時分（時分だけの項目）、業種コード |
| 0（数値） | サイト（日数） |

### 15.3 補足ルール

上の表にない項目（特に論理名が「～区分」の項目）は、現行と新システムの型で決める。論理名に「～区分」がなく、JOIN に使いそうな項目は、初期値を確認する。

| 現行の型 | 新システムの型 | 初期値 |
|---|---|---|
| PIC型 | NCHAR型 | `'0'` |
| PIC型 | DECIMAL型 | 0 |
| DECIMAL型 | NCHAR型 | `'0'` |
| DECIMAL型 | DECIMAL型 | 0 |
| CHAR型 | NCHAR型 | スペース（現行のデータ値も加味して決める） |

### 15.4 変数の初期値

個別の設計書に初期値の指定がない場合、文字型は `""`（空文字）、整数型・数値型は 0 とする。

出典：【共通】1.6・8.2.1・11、【作成】3.9

---

## 16. オンライン設計書の構成と書き方

### 16.1 オンライン設計書のシート構成

| No | シート | 書く内容 |
|---|---|---|
| ① | PGフロー図 | mode・disp の流れと、各 mode の処理名（4.4 のパターン） |
| ② | 画面レイアウト | 画面イメージ、処理概要（呼出元でセットする値も含む）、使用テーブル、画面ごとの初期表示とキーごとの処理（4.2 の4メソッドの順） |
| ③ | 画面項目仕様 | 画面項目の一覧（6章） |
| ④ | データチェック仕様 | mode ごとの項目チェック・関連チェック（7章） |
| ⑤ | プロパティ一覧 | 変数・データの定義 |
| ⑥ | メソッド一覧 | メソッドの一覧 |
| ⑦ | メソッド詳細 | メソッドの引数・戻り値・処理 |
| ⑧ | ＤＢ更新仕様 | テーブルへの登録・更新・削除の内容 |
| ⑨ | マッピング仕様 | クラスなどに渡す構造体へのセット内容 |

設計書は SVN（3-DOS_DesignDocument）の「20.オンライン設計」に保存する。

### 16.2 画面レイアウトの処理の書き方

- 画面の初期表示と、押下キーごとに枠を書く。
- 各処理には次を書く。
  - 変数：処理内で使う変数（同じ mode で処理をまたぐ場合はプロパティに宣言する）。変数名は処理内でユニーク、型は 17.10 に従う。初期値が `""`・0・false の場合は書かない。
  - 処理内容

### 16.3 プロパティ一覧

| 項目 | ルール |
|---|---|
| 変数 | 同じ mode 内でメソッドをまたぐ場合に使う変数 |
| データ | データベースから取得するデータ |
| プロパティ（物理名） | 実装時に命名規則どおり付けるため、設計時は書かない |
| プロパティ名 | 論理名をユニークに定義する |
| 型 | 17.10 に従う |
| 初期値 | `""`・0・false の場合は書かない |
| GET／SET | 他の機能IDの PG から取得・設定がある場合に〇 |
| データ論理名 | データの論理名をユニークに定義する |
| テーブル論理名・物理名 | ＥＲ図で使う RDB のテーブル名、またはストアド名 |
| ＥＲ図・条件 | 使う ＥＲ図の番号と、条件に対する値 |

### 16.4 メソッド一覧・メソッド詳細

| 項目 | ルール |
|---|---|
| メソッド名（物理名） | 実装時に付けるため、設計時は書かない |
| 機能名 | メソッドの論理名をユニークに定義する |
| アクセス修飾子 | 他の機能IDの PG から使う場合は public、使わない場合は private |
| 引数 | 論理名（ユニーク）、型、IN/OUT（Java は参照渡しができないため IN） |
| 戻り値 | 論理名と型を必ず書く。区分や論理型の場合は意味も書く。型は文字型・整数型・数値型・論理型・構造体。基本型だけなら複数項目にできるが、構造体との混在は不可 |
| 処理内容・エラー処理 | メソッドの処理と、エラー発生時の処理 |

### 16.5 ＤＢ更新仕様

- テーブルの全カラムを一覧に書く（15.1 の共通項目は書かない）。
- ＤＢ更新定義名は機能内でユニークにする（例：送り状マスタＮｏ２　新規登録時）。
- 処理は INSERT・UPDATE・DELETE のいずれか。更新・削除の条件は表の最後に書く（削除時は「削除条件」とし、編集内容欄は不要）。
- 編集内容・条件には、項目にセットする内容だけを書く。データ取得の処理は画面レイアウトかメソッド詳細に書く。
- セットする値がない項目は「設定なし」と書き、背景をグレーにする（新規は初期値、更新は更新前の値を意味する）。
- JSON 形式のテーブルは、カラム部と JSON 部に分け、JSON 部の項目名はインデントをずらして書く。

### 16.6 マッピング仕様

- 構造体の全プロパティを一覧に書く。
- マッピング定義名は機能内でユニークにする（例：受付時運賃計算コール時プロパティ）。
- プロパティ名または変数名、構造体名（論理名）、構造体（物理名）、項目名、物理名、編集内容・条件を書く。
- セットする値がない項目は「設定なし」と書き、背景をグレーにする（初期値を意味する）。
- JSON 形式のテーブル用の構造体は、ＤＢ更新仕様と同じくカラム部と JSON 部に分ける。

### 16.7 設計書間の関係

画面項目仕様、データチェック仕様、プロパティ一覧、ＤＢ更新仕様、マッピング仕様は、画面レイアウトで指定したタイミングで使われる。表形式のほうが見やすいため、チェック処理、データ更新・構造体・画面項目への値のセットは、基本的に別シートで定義する。

出典：【作成】1.1～1.3・3.2～3.10

---

## 17. 設計書の記述ルール

### 17.1 改版履歴

- レビュー完了直後を第1版とする。レビュー後の変更は必ず改版履歴に書き、変更箇所が分かるように書く（例：mode2 validateMode2（チェック処理）No.1 範囲チェックを変更）。
- 変更した行の右欄外に「第2版　変更」「第3版　追加」「第4版　削除」のように書く（版数は半角数字）。行ごとに最新の版数だけを書く。
- 次のシートは変更前を残さず、最新の内容だけにする（変更前を残すことは禁止。変更内容は改版履歴に書く）：画面レイアウトの画面イメージ・処理概要・使用テーブル、PGフロー図、画面項目仕様、データチェック仕様、プロパティ一覧、ＤＢ更新仕様、マッピング仕様。
- それ以外のシートの変更・削除は、設計書から消さずに、セルの背景をグレーにし、取り消し線を付けて残す。

### 17.2 項番・コメント・条件分岐

- 処理には可能な限り項番を書く（例：1.データ取得　1.1.送り状マスタＮｏ１から取得）。
- コメントは『』で囲む（例：『送り状復活データ特別 の場合』）。
- 条件分岐は組み合わせが分かるように、繰り返し処理は範囲が分かるように、罫線（┌ ├ └ │）で示す。罫線の1つ右のセルに処理を書く。
- 「以外の場合」の範囲が分かりにくい場合は、『END IF』『END SELECT』『分岐終了』などのコメントで分岐の終わりを示す（コメントなしは禁止）。

```
┌ 区分１ = 1 の場合               区分１で分岐                Y = 0 ～ 10 繰り返す
│   区分名 ← "Ａ" をセット         ├ １ の場合                 │ 『処理１』
├ 区分１ = 2 の場合               │   区分名 ← "Ａ" をセット   │ 『処理２』
│   区分名 ← "Ｂ" をセット         ├ 以外の場合               └ 変数.件数 ← 変数.件数 + 1 をセット
└ 以外の場合                      │   区分名 ← "Ｄ" をセット
    区分名 ← "Ｄ" をセット         └ 『END SELECT』
```

### 17.3 ループの変数・添え字

- 論理名以外でループ変数を書く場合は Y、X、Z を使う。
- 配列・データの開始添え字は 0 とする（例：X = 0 ～ 配列件数 - 1 で繰り返す）。「件目」と表現する場合は1件目から数える。

### 17.4 値のセットと名前の表記

| ルール | 書き方 |
|---|---|
| 値のセットは「＝」ではなく「←」 | `変数.店所コード ← COMM_AREA.事業所コード[COMM_TEN_CODE]` |
| メソッドで宣言した変数 | `変数.` を付ける（例：`変数.傭車会社コード ← "000000" をセットする`） |
| プロパティで宣言した変数 | `プロパティ.` を付ける（`プロパティ.変数.` とは書かない） |
| データで宣言したデータ | `データ.` を付ける（`プロパティ.データ.` とは書かない） |
| 画面項目 | `画面.[項目名]` |
| 論理名にスペースや句点を含む場合 | 中括弧（角括弧）で囲む（例：`運賃計算.運計用データ.[発取手、歩引　金額]`） |
| 同じデータに同じ論理名がある場合 | 物理名まで書く（例：`データ.顧客基本マスタ.[顧客正式名（漢字）][KNTNSGNM]`） |

### 17.5 データ取得の書き方

- 書き方は `データ.送付書集計データ を取得する　※プロパティ一覧を参照` とし、「取得」以外の表現は使わない。
- RDB から取得した件数が 0件でもエラーとしない。「取得成功」「取得失敗」という表現は禁止する。
- 「取得できた場合」「取得できなかった場合」は、SQL エラーなしで取得件数 ≧ 1／＝ 0 の意味でだけ使う。
- SQL 実行エラーは共通仕様でエラー処理するため、「エラーの場合」を書かなくてよい。特別な処理をする場合だけ「取得エラーの場合」と書く。

### 17.6 メソッド（関数）の呼び出し

| 対象 | 書き方 |
|---|---|
| 外部のメソッド | `共通関数[LSS1000].通算日数計算 をコールする。`（クラス名[クラスID].メソッド名。「コール」または「実行」と書く） |
| 内部のメソッド | `バッチ間データ出力処理をコールする。` |
| 引数 | メソッド呼び出しの次の行の1つ右のセルに「引数」と書き、`日付：画面.出発年月日` のように値を書く |
| 戻り値 | `変数.出発通算日数 ← 共通関数[LSS1000].通算日数計算.戻り値 をセット` |
| プロパティ | 呼び出し前にセットする（例：`チェックデジット[LSO0020].プロパティ.チェックデジット型式 ← ７ＤＲ をセット`） |

### 17.7 コードマスタからの取得

コードマスターＤＢ２のデータ部は、コードマスタ[LSS1100] で取得する。

```
変数.名称 ← コードマスタ[LSS1100].データ部取得("VKFIXNW" , "1" , "VBKKUNWO_Z") をセット
```

引数は分類キー、データキー、変数名の順にカンマで区切る（変数や画面項目で指定してもよい）。

### 17.8 文字列の結合・計算

- 文字列の結合は `&` を使う（`+`、`||` は使わない）。例：`画面.住所 ← 変数.県名 & 変数.市町村名 をセット`
- 四則演算は `+`、`-`、`*`（または ×）、`/`（または ÷）で書く。除算では丸め方を書く（例：小数第1位を切り捨て）。余りは「～ の余りをセット」と書く。

### 17.9 条件の書き方

- 条件は日本語ではなく記号で書く（〇：`変数.個数 = 0 の場合`、×：`変数.個数が０の場合`）。
- 複数条件の結合には記号を使わない。`&` は文字列の結合と紛らわしいため禁止。

| 記号・文字 | 意味 |
|---|---|
| `=` | 同じ |
| `<>` | 異なる |
| `>`／`>=` | より大きい／以上 |
| `<`／`<=` | 未満／以下 |
| and、AND、And、且つ、かつ | 積集合 |
| or、OR、Or、又は、または | 和集合 |

### 17.10 型

プロパティ、引数、変数の型は、構造体名、構造体ID、文字型、整数型（整数のみ）、数値型（小数部あり）、論理型、論理テーブル名、物理テーブル名のいずれかで書く。

- テーブル名を型にした場合は、テーブル定義のレコードと同じ構成の構造体を指す。
- 同じ構成であれば、別のテーブルのデータをセットできる（注釈を付けて同じレイアウトであることを書く）。

### 17.11 実行環境ごとの動作

実行環境によって動作が違う場合は「〇〇環境の場合」と書く。実行環境は次の2つとする。

- 本番環境
- テスト環境（ステージング・検証・開発の3環境をまとめた呼び方）

### 17.12 その他

- ブックをまたぐリンクは禁止する。

出典：【作成】2.2～2.21

---

## 18. 未確定事項

元の資料で「TODO」「（仮）」「未」となっており、まだ決まっていない事項。

| No | 事項 | 出典 |
|---|---|---|
| 1 | セッションタイムアウトの時間（XX分） | 【共通】6.1 |
| 2 | タイムアウト画面・エラー画面のデザイン（仮） | 【共通】6.1・6.3 |
| 3 | タイムアウトを 403 などのエラーとして扱うか | 【共通】6.1 |
| 4 | エラーページへの遷移方法、アクセス制御の詳細 | 【共通】6.2・6.3 |
| 5 | 共通フッター部のエラーコード表示（「未」の記載あり） | 【共通】2.2 |
| 6 | ＰＯＳリアル・ＰＯＳダイレクトの日付の取得メソッド名 | 【共通】10.2 |
