メインプログラムとコンポーネント

メインプログラムは、[コール]処理コマンドでは実行できないので、コンポーネントの一部として出力することはできません。

プログラム、テーブル、イベントなど、別のコンポーネントのオブジェクトを使用する場合は、まずそのオブジェクトが定義されているプロジェクトのメインプログラムが実行されます。つまり、最初に別のMagicコンポーネントのオブジェクトを使用する時には、そのメインプログラムの[タスク前]が実行され、その変数が初期化されます。

ただし、コンポーネントをすぐに使用する場合(即時有効=Yes)、つまり、 コンポーネントを実際に使用する時ではなく、プロジェクトを開いた時にコンポーネントを読み込む場合は例外です。このようなコンポーネントの場合は、読み込まれるとすぐにコンポーネントのメインプログラムが実行されます。

実行タスク用スタックは、コンポーネントのメインプログラムの実行による影響を受けません。このコンポーネントのプログラムは、メインプログラムではなく、親プログラムによって呼び出されます。 コンポーネントのメインプログラムは、プロジェクトのメインプログラムの直後、その他の全てのプログラムの前に実行タスク用スタックに挿入されます。

Magicコンポーネントのプログラムを実行すると、コンポーネントアプリケーションのメインプログラムは、Magic uniPaaSの実行タスクツリーの一部として動作します。しかし、Levelや、StateまたはEOFのような関数を使用してタスクのリソースや情報を参照する場合、コンポーネントのメインプログラムはタスクの世代対象には入りません。

例:タスクAがコンポーネントのタスクBを呼び出す場合、関数 Level(1)はタスクAを参照し、コンポーネントのメインプログラムは参照しません。

メインプログラムの[タスク後]が実行される前にプロジェクトを終了すると、[タスク後]は、[タスク前]の実行と逆の順序で実行されます。