式におけるネーム解決

EGL 式内の名前は、次のいずれかを参照することができます。

式の存在する位置 (その式が代入文、関数呼び出し、または他の位置にあるかどうか) に関係なく、ネーム解決のプロセスは同じです。 パーツ名の解決に関する規則は異なります。EGL パーツの解決規則を参照してください。

式内の名前を解決するため、EGL は以下の宣言を順番に参照します。
  1. ローカル変数およびパラメーター。関数内で宣言された変数です。参照対象には、関数のパラメーター・リスト、すべてのレコード変数名 (これらのレコード内のフィールド名を除く) が含まれます。このカテゴリーでは、重複名は禁止されています。
  2. ローカル I/O オブジェクト。関数に特定した入出力オブジェクトとその他のフィールドです。入出力オブジェクトには、get 文で参照される SQL レコードの配列などが含まれます。同じレベルでは、関数にパラメーターとして宣言されたり渡されるレコード変数内のフィールドがあります。 関数レベルで宣言されたレコード変数は、ステップ 1 にあります。 プログラム・レベルで宣言されたレコード変数は、このステップにあります。 このカテゴリー内では、名前の重複は許可されています。

    例えば、2 つのレコード変数が同じ CustomerRecord 定義を基にしており、それぞれが customerNumber フィールドを持っている場合などです。この場合、あいまいさを避けるために、名前 customerNumber をレコード変数の名前で修飾します。

    別の例として、プログラム・レベルのレコード変数、および同じ名前の関数レベルのフィールドがあるとします。 この場合は、以下のアクションを 1 つ以上実行します。
    • キーワード this を使用してプログラム・レベルのレコード変数の名前を修飾する。
    • allowUnqualifiedItemReferences プロパティーを YES に設定する。
    • フィールドが含まれる DataTable、フォーム、または構造化レコードの名前でそのフィールドを修飾する。 非構造化レコード内のフィールド名は、レコード名で修飾する必要があります。
  3. プログラム変数。プログラム・レベルで宣言された変数です。 これらには、パラメーター・リスト (呼び出し先プログラムの場合)、すべてのレコード変数名 (これらのレコード内のフィールド名を除く) が含まれます。このカテゴリーでは、重複名は禁止されています。
  4. フォーム名。これらのフォーム名は、以下のいずれかの方法で宣言されます。
    • use 宣言。
    • inputForm プロパティーで指定。
    • プログラムのパラメーター・リスト内で宣言。
    • プログラム内の任意の関数にあるいずれかの入出力文で宣言。
    use 宣言が FormGroup を参照する時、EGL は、グループ内のすべてのフォーム名を参照します。このカテゴリーでは、重複名は禁止されています。
  5. データ・テーブル名。EGL は、use 宣言内のデータ・テーブル名を参照します。 このカテゴリーでは、重複名は禁止されています。
  6. フィールド。EGL は、今の時点で、手順 3 から 5 のレコード、フォーム、データ・テーブル内のすべてのフィールドを参照します。あいまいさを避けるため、このカテゴリー内の重複名は修飾されます。
  7. ライブラリー変数。use 宣言内で指定したユーザー・ライブラリー内の変数です。このカテゴリー内の重複名は、ライブラリーの名前で修飾する必要があります。
  8. システム変数。最後に EGL は、EGL システム・ライブラリー内の変数を参照します。 このカテゴリー内には重複名はありません。

フィードバック