Java 用の EGL システム・ランタイム・メッセージのカスタマイズ

Java™ ランタイムにエラーが発生すると、デフォルトで EGL システム・メッセージが 表示されます。これらのシステム・メッセージごとに、またはサブセットに対して、 カスタマイズされたメッセージを指定することができます。

カスタマイズしたメッセージは、vgj.messages.file Java ランタイム・プロパティーで識別するプロパティー・ファイルに保存されます。このプロパティーは、userMessageFile ビルド記述子オプションで設定します。Javaプロパティー・ファイルの形式について詳しくは、プログラム・プロパティー・ファイルを参照してください。

メッセージが必要な場合、EGL はまず、vgj.messages.file で指定 したプロパティー・ファイルを検索します。EGL は、必要なメッセージのメッセージ ID と、プロパティー・ファイルのメッセージの ID とを比較します。 一致する ID を持つメッセージを、EGL がプロパティー・ファイルで見つけた場合は、そのメッセージを使用します。 一致する ID を持つメッセージがプロパティー・ファイルにない場合、EGL はデフォルトのシステム・メッセージを使用します。 sysLib.getMessage システム関数を使用して、vgj.messages.file で 指定されたプロパティー・ファイルからメッセージを戻すこともできます。

多くの場合、システム・メッセージには、EGL が実行時に検索するメッセージ挿入用のプレースホルダーが含まれています。 例えば、ご使用のコードがシステム関数に無効な日付マスクを提示する場合、メッセージには 2 つのプレースホルダーがあります。 1 つは日付マスク自体のためのプレースホルダー 0 であり、もう 1 つは、システム関数の名前用のプレースホルダー 1 です。 プロパティー・ファイル形式では、デフォルト・メッセージのエントリーは次のとおりです。
  EGL0049E = {0} の {1} への割り当てでのオーバーフローです。
メッセージの語句を変更して、すべてまたは一部のプレースホルダーを任意の順序で組み込むことができますが、プレースホルダーの追加または番号付けの変更は行うことができません。 有効な例は、次のとおりです。
  EGL0049E = {0} を {1} に割り当てようとしましたが、失敗しました。

  EGL0049E = {1} = {0} : 割り当てでのオーバーフローです。

vgj.messages.file プロパティーで識別されるファイルを開くことができない場合は、プログラムが終了します。

COBOL 用に生成されるシステム・メッセージの場合、最初のプレースホルダーは {0} ではなく {1} であることに注意してください。

その他の詳細情報は、Java 言語資料で入手できます。

カスタマイズされたメッセージ・ファイルの作成

Java ランタイムでエラーが発生 したときに表示される、カスタマイズされたメッセージが含まれるプロパティー・ファイルを作成することができます。これらのメッセージによって、デフォルトのシステム・メッセージが置き換えられます。

  1. カスタマイズされたメッセージ用のプロパティー・ファイルを作成するには、以下を実行します。
    1. 「プロジェクト・エクスプローラー」ビューで、EGL プロジェクトの「Java リソース」フォルダーを右クリックする。
    2. 「新規」 > 「その他」とクリックする。
    3. 「新規」ウィンドウで、「一般」を展開し、「ファイル」をクリックします。
    4. 「次へ」をクリックします。
    5. 「親フォルダーを入力または選択」フィールドで、 プロジェクトの Java リソース・フォルダーが選択されていることを確認します。
    6. 「ファイル名」フィールドで、末尾が .properties のプロパティー・ファイルの 名前を入力する。 有効なファイル名は、例えば messages.properties です。
    7. 「終了」をクリックします。新規ファイルが作成されてエディターで開きます。
  2. カスタマイズされたメッセージをメッセージ・ファイルに追加するには、以下を実行します。
    1. 置き換えたいシステム・メッセージのメッセージ ID を検索する。 新規メッセージを追加する場合は、新規メッセージ ID を作成する。

      文書には、 システム・メッセージ、そのメッセージ ID、およびメッセージのすべてのプレースホルダーに関する情報が含まれています。 ../../com.ibm.egl.messages.doc/topics/rjavrun0001.htmlを参照してください。

    2. メッセージ・ファイルに、以下の形式で 1 行追加する。
      messageID = customMessage
      messageID
      システム・メッセージの ID。
      customMessage
      メッセージ内のプレースホルダーを含む、システム・メッセージの代わりに表示するカスタム・メッセージ。

      例えば、以下のプロパティー・ファイルの行は、 システム・メッセージ ID EGL0049E (デフォルトでは、「{{0} の {1} への割り当てでのオーバーフローです。」) を置き換えます。

      EGL0049E = {0} を {1} に割り当てようとしましたが、失敗しました。

      この例で、コード・ストリング {0} および {1} は、EGL が実行時に 取得する、メッセージ挿入のためのプレースホルダーです。 これらのプレースホルダーの指定は、カスタマイズされたメッセージではオプションです。

    3. メッセージの追加を完了したら、保存してメッセージ・ファイルを閉じる。
  3. genProperties ビルド記述子オプションを、GLOBAL または PROGRAM に設定します。
  4. 以下のいずれかの方法を使用して、メッセージ・ファイルを指定します。
    • userMessageFile ビルド記述子オプションを設定して、.properties 拡張子なしの メッセージ・ファイルの名前を指定する。 例えば、メッセージ・ファイルの名前が messages.properties であれば、userMessageFile ビルド記述子オプションを messages に設定します。

      userMessageFile ビルド記述子オプションは、 メッセージ・ファイルを指定するランタイム・プロパティーである vgj.messages.file Java ランタイム・プロパティーを設定します。この方法は、どのタイプの EGL プロジェクトにも適用できます。

    • J2EE デプロイメント記述子 (EGL デプロイメント記述子ではありません) に vgj.messages.file Java ランタイム・プロパティーを設定して、 メッセージ・ファイルの名前を指定する。この方法は、J2EE フレームワーク内で使用されるプロジェクトにのみ適用されます。J2EE デプロイメント記述子に vgj.messages.file ランタイム・プロパティーを 設定するには、以下のステップに従います。
      1. 「プロジェクト・エクスプローラー」ビューで、プロジェクトの J2EE デプロイメント記述子をダブルクリックする。そのデプロイメント記述子が、デプロイメント記述子エディターで開きます。
      2. 「変数」タブをクリックする。
      3. 「環境変数」の下で、「追加」をクリックする。 「環境エントリーの追加 (Add Environment Entry)」ウィンドウが開きます。
      4. 「名前」フィールドに vgj.messages.file を入力する。
      5. 「タイプ」フィールドで「ストリング」を選択する。
      6. 「値」フィールドに、メッセージ・ファイルの名前を .properties 拡張子なしで 入力する。 例えば、メッセージ・ファイルの名前が messages.properties であれば、messages と 入力します。
      7. 「終了」をクリックします。
    • ファイル rununit.properties に vgj.messages.file プロパティーを設定して、メッセージ・ファイルの名前を指定する。 この方法は、J2EE フレームワーク内で使用されるプロジェクトにのみ適用されます。ファイル rununit.properties に vgj.messages.file ランタイム・プロパティーを 設定するには、以下のステップに従います。
      1. Java リソース・フォルダーにあるファイル rununit.properties を開きます。このファイルは、genProperties プロパティーを GLOBAL に設定して最初に ファイルを生成すると作成されます。genPropertiesPROGRAM に 設定して生成すると、プロパティー・ファイルの名前は pgmNameOrAlias.properties になり、 生成されたプログラムの Java パッケージ内に配置されます。
      2. プロパティー・ファイルに、以下のコードを追加する。
        vgj.messages.file = messageFileName
      3. messageFileName を、.properties 拡張子なしのメッセージ・ファイルの名前と 置き換える。 例えば、メッセージ・ファイルの名前が messages.properties で あれば、vgj.messages.file = messages と入力します。
      4. 保存して、プロパティー・ファイルを閉じる。
  5. メッセージを別の言語にローカライズしたい場合は、その言語に合わせて追加のプロパティー・ファイルを作成します。
    1. 提供したい言語ごとに新規プロパティー・ファイルを作成し、言語を表すロケール接尾部を新規ファイルに追加します。例えば、 元のプロパティー・ファイルの名前が messages.properties である場合、ドイツ語のメッセージを持つファイルの名前は messages_de.properties となります。 ロケールについて詳しくは 、リソース・バンドルのロケールを参照してください。
    2. 新規ファイルごとに、最初のプロパティー・ファイルで使用したメッセージ ID を 繰り返し使用します。
    3. 新規ファイルで、メッセージ ID を変更せずに、メッセージのテキストを 翻訳します。
    4. 指定した言語を使用するように、アプリケーションを設定します。targetNLS ビルド記述子オプションを言語名に設定して 生成するか、もしくは sysLib.setLocale() システム関数を使用して言語を設定するか、いずれかを行ってください。
  6. プロジェクト内の EGL ファイルをすべて生成します。

フィードバック