プロジェクト

全般

プロフィール

レビュー指摘 #12418 » 新オンライン共通仕様書ルール.md

幸塚 和久, 2026-10-28 03:04 午後

 

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

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

項目 内容
対象システム 3-Dオンラインシステム
対象範囲 オンライン機能(更新・照会・選択画面)の設計と実装に関わる共通ルール
対象外 バッチ処理、バッチ帳票、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(実行キー押下時の処理)
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 現行の項目の扱い

  • 現行で分割されていた番号項目(送り状NO 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)
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処理) チェック処理・データ処理がOKのときに表示する値をセットする。表示の詳細は画面項目仕様に書く

4.3 エラーコードの採用

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

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
全:全角日本語 × × × × × 〇(全種) ZS

入力部品は 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(店所基本情報DB2) DDTTNRNM 6 全
従業員名 オンライン用従業員氏名 OVJYUGY(DDP 従業員マスタ) VEJYJNM1 6 全
顧客名 顧客略名(漢字) VKCUSTM(顧客マスター(基本情報)) KNTNRGNM 6 全
顧客名カナ 顧客略名(カナ) VKCUSTM(顧客マスター(基本情報)) KNTNRCNM 14 半

6.9 標準的な入出力項目

項目 枠数 桁数 形式 編集 補足
送り状NO 1 11 C ZZZZZZZZZZZ 現行の 5-6 分割を1つにする
精算書NO・合計表NO 1 12 C ZZZZZZZZZZZZ 現行の 7-5 分割を1つにする
顧客コード7桁+連番5桁のNO 2 7+5 C ZZZZZZZ/ZZZZZ 現行画面と同じにする(分割なら分割のまま)
運転日報NO 1 8 C ZZZZZZZZ 現行の 4-4 分割を1つにする
訂正NO 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 を使う。
  • 明細行の選択などで別画面を表示する機能を設計するときは、次の手順で判断する。
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
POSリアル稼働日付/起動日付 POSリアル処理上の営業日/立ち上げ処理の実行日付 ―
POSダイレクト稼働日付/起動日付 POSダイレクト処理上の営業日/立ち上げ処理の実行日付 ―

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

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 処理時):オンラインログ

項目 セットする内容
日時 サーバー日時
端末店所コード 画面上の店所コード
端末名 端末名
ログイン従業員コード ログインで入力した従業員コード
機能ID 画面の機能ID
操作画面番号 操作している画面の番号(1~4)
作業選択1~4 画面までの選択番号
ログ内容 "OPEN"
ログレベル "INFO"
PGバージョン 実行したPGのバージョン番号

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

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

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

項目 開始時 終了時 ABEND時
処理開始機能ID 画面の機能ID 同左 同左
ログ出力機能ID クラスID 同左 同左
ログ内容 メソッド名 & " 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 REAL番号 NCHAR 1
SYUSDCTC 店所コード NCHAR 4
SYUSDCID 集信ID NCHAR 3
SYUSKADO 稼働日 NCHAR 8
SYUSDCFL 処理フラグ DECIMAL 1,0 0:未処理、9:処理済み
SYUSDCVD 集信データ NVARCHAR2 2000 集信IDごとのレイアウトを JSON 形式で格納
SYSCRDTS~SYSUPPID、VERSION 作成・更新の共通項目、Lockバージョン 15章 参照

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

出典:【共通】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 に使いそうな項目(マスタやテーブルの検索に使う項目)は、初期値を統一する。迷う場合はプロジェクトの担当者に確認する。

初期値 主な項目
スペース 3mコード、シリアル、ナンバープレート、インボイス、送り状NO、回送票NO、企業コード、機能ID、銀行、計画便、口座、高速・IC、顧客(顧客コード・荷主コード・委託会社コードなど)、雇用保険、支払報告書、年月日時分(年月日・年度を含む)、時分秒、社番(車号を含む)、従業員、住所、集信ID、集配班、集配票NO、指令書NO、精算・請求書NO、全角・カナ名、送付書NO、端末、訂正NO、訂正明細NO、デジタコ、電話番号、EDPNO.、店所、入金報告書NO、年金番号、パスワード、班、プレートNO、法人番号、マイナンバー、免許NO、郵便番号、輸送依頼書・指令書、傭車会社、リアル番号、支社区分、地区区分、入力画面区分、運行車区分(一部)、再振データ区分(POS)、商品コード、雑・締処理区分、レコード区分、配達指定日区分、ID、区域設定便コード、科目コード(7桁)、車番、職種コード
'0' サーチャジ料金区分、精算区分、委託端数区分、事業区分、符号+・ー、割増区分、保険の種類、代引・ローン形態区分、経費区分、コース、運用形態、計画便傭車使用形態、館内配送料区分、休日区分、手形種類
'00' 傭車形態、運行車区分(一部)、収入計上区分、扱方、日(締日・支払日など2桁の日)、エラーフラグ、科目コード(2桁)、科目ID、枝番
'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章)
⑤ プロパティ一覧 変数・データの定義
⑥ メソッド一覧 メソッドの一覧
⑦ メソッド詳細 メソッドの引数・戻り値・処理
⑧ DB更新仕様 テーブルへの登録・更新・削除の内容
⑨ マッピング仕様 クラスなどに渡す構造体へのセット内容

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

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

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

16.3 プロパティ一覧

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

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

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

16.5 DB更新仕様

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

16.6 マッピング仕様

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

16.7 設計書間の関係

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

出典:【作成】1.1~1.3・3.2~3.10


17. 設計書の記述ルール

17.1 改版履歴

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

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

  • 処理には可能な限り項番を書く(例:1.データ取得 1.1.送り状マスタNo1から取得)。
  • コメントは『』で囲む(例:『送り状復活データ特別 の場合』)。
  • 条件分岐は組み合わせが分かるように、繰り返し処理は範囲が分かるように、罫線(┌ ├ └ │)で示す。罫線の1つ右のセルに処理を書く。
  • 「以外の場合」の範囲が分かりにくい場合は、『END IF』『END SELECT』『分岐終了』などのコメントで分岐の終わりを示す(コメントなしは禁止)。
┌ 区分1 = 1 の場合               区分1で分岐                Y = 0 ~ 10 繰り返す
│   区分名 ← "A" をセット         ├ 1 の場合                 │ 『処理1』
├ 区分1 = 2 の場合               │   区分名 ← "A" をセット   │ 『処理2』
│   区分名 ← "B" をセット         ├ 以外の場合               └ 変数.件数 ← 変数.件数 + 1 をセット
└ 以外の場合                      │   区分名 ← "D" をセット
    区分名 ← "D" をセット         └ 『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].プロパティ.チェックデジット型式 ← 7DR をセット)

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

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

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

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

17.8 文字列の結合・計算

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

17.9 条件の書き方

  • 条件は日本語ではなく記号で書く(〇:変数.個数 = 0 の場合、×:変数.個数が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 POSリアル・POSダイレクトの日付の取得メソッド名 【共通】10.2
    (1-1/1)