プログラム・パーツの概要

プログラム・パーツは、1 つのエントリー・ポイントを持つ、メインの論理パーツです。プログラム・パーツは、ランタイム・プログラムの中心となるロジックを定義します。

各プログラム・パーツには、プログラムの開始時に実行するロジックを表す main() 関数が含まれます。プログラムには、他の関数を含めることができ、プログラムの外部の関数にアクセスできます。 関数 main() は、これらの他の関数を呼び出すことができます。任意の関数が他のプログラムに制御を渡すことができます。

プログラム・パーツでは、ステレオタイプを使用して、ユーザー・インターフェースに合わせてコードを特殊化します。 BasicProgram は、コア EGL パッケージのパーツである唯一のステレオタイプです。BasicProgram は、データベースやファイルにアクセスし、計算を実行し、ほとんどの EGL ステートメントを使用することができます。一部の UI テクノロジーは、追加のステレオタイプを提供します。

コードの振る舞いに影響する多数のプロパティーをプログラム・レベルで使用できます。使用可能なプロパティーは、UI およびデータ・アクセス・テクノロジーによって異なります。

メインプログラムと呼び出し先プログラム

メインプログラム は、パラメーターを使用せずに定義されるプログラムです。メインプログラムは、システム・コマンドによって、また他のメインプログラムからの移動によって開始した場合に実行されます。呼び出し先プログラムは、パラメーターを使用して定義されるプログラムです。呼び出し先プログラムは call 文を介して他のプログラムから呼び出します。 呼び出し先プログラムは、プログラム・レベルでパラメーターを処理します。呼び出し先プログラムは、パラメーターを持たない main() 関数を必要とします。次の例は、呼び出し先プログラムです。
  Program custProcessing1 type basicProgram (customerNum INT)
  
    // 必要な main() 関数
    function main()
      // 渡された顧客番号に基づいて
      // 正しい顧客名を取得
      
      customerName = getCustName(customerNum);
      ...
    end

    // 別の関数
    Function getCustName(customerNum INT) returns (CHAR(25))
      ...
    end

  end
プログラム宣言の形式により、そのプログラムがメインプログラムまたは呼び出し先プログラムのいずれであるかが判別されます。宣言にパラメーター (または、空の括弧) が含まれている場合は、呼び出し先プログラムを宣言します。呼び出し先プログラムをメインプログラムに変更するには、パラメーター・リスト (括弧を含む) を除去します。例えば、以下の行では呼び出し先プログラムを宣言します。
program custProcessing1 type basicProgram (customerNum INT)
program custProcessing1 type basicProgram ()
次のコードはメインプログラムを宣言します。
program custProcessing1 type basicProgram
プログラムの呼び出し時に使用する引数の長さは、 プログラム宣言内の同等のパラメーターの長さと一致する必要があります。以下の例を考えてください。
customerName CHAR(30)
...
call custProcessing1(customerName);
呼び出し先プログラムが次のように宣言されたとします。
program custProcessing1 type basicProgram (custName CHAR(80) inout)

EGL はポインターを customerName 変数に渡すことから、custName 変数の実際の長さは 30 文字になります。custName 変数の桁 31 から 80 に書き込む場合、これはプログラムでは正しい操作ですが、ランダム・メモリーを上書きすることがあります。 このような未定義の振る舞いが発生する場合には、EGL デバッガーから警告が出される点に注意してください。

呼び出し先プログラムの詳細については、プログラム間での制御の移動を参照してください。


フィードバック