前のトピック: ループするオペレータの中断次のトピック: その他の目的のためのループ回数へのインデックス設定


データセット フィールドのインデックス付き要素のループ処理

ビルトインの CurrentLoopIteration および OverallLoopDuration システム変数を使用する代わりに、カスタム ループ変数を作成し、それらを独自に管理できます。 CA Process Automation の以前のバージョンでは、この方法が必要でした。 たとえば、ループの最初の繰り返しの開始時刻から、各ループの現在の時刻までの期間を計算するロジックを作成できます。 また、実行前処理コードと実行後処理コードを使用して、以下のようなループへの入力をセットアップできます。

インデックス付きデータセット フィールドのすべての要素をループ処理するには、まずユーティリティ グループの[JavaScript の実行]オペレータを使用して、データセット フィールドの CurrentIndex 要素を 0 に初期化します (たとえば、次の式は、プロセス変数 XCurrentIndex 要素を 0 に初期化します)。

Process.X.CurrentIndex=0;

データセット フィールドのインデックス付き要素をループ処理する方法

  1. [JavaScript の実行]オペレータから、ループで処理する必要のあるオペレータに、「成功」終了リンクを接続します。
  2. ループ処理するオペレータの[データセット]パレットで、インデックス付きフィールドの[サイズ]要素設定を、[ループ]タブの[繰り返し回数]の値として使用します。 例:
    Process.X.Size
    
  3. ループの各繰り返しが完了した後に CurrentIndex 設定を増やすには、実行後処理コードの式を使用します。 例:
    Process.X.CurrentIndex=Process.X.CurrentIndex+1;
    

    この場合、CurrentIndex 要素は、ループのカウンタとして働きます。 CurrentIndex の設定を使用して、計算式でインデックス付きフィールドの要素にアクセスできます。 例:

    Process.X[Process.X.CurrentIndex];
    

    注: Visual BASIC などの、1 から始まる配列を使用するプログラミング言語に慣れている場合、インデックス付きデータセット フィールドは 0 から始まる配列なので、注意してください。 1 から始まる配列では、最初の要素には 1 のインデックスが付けられ、最後の要素には要素の数のインデックスが付けられます。 インデックス付きデータセット フィールドの最初の要素はインデックスとして 0 が付けられ、最後の要素はインデックスとしてフィールドの Size 要素の値から 1 を引いた数が付けられます。

インデックス付きデータセット フィールドの要素にアクセスすることに加えて、ループ処理中の繰り返しの数を他の目的のために追跡できます。 インデックス変数として、process.i などのプロセス変数を使用します。 ループ処理されるオペレータに先行するインタープリタ モジュール計算オペレータで、プロセス変数をループの開始値に初期化します (process.i=1 など)。 ループ処理の繰り返しが 1 回完了するごとにインデックス変数を加算するには、オペレータの実行後処理コードで式を使用します。 例:

Process.i=Process.i+1;

注: このトピックの手順は不要になったと考えられますが、レガシー コードのリファレンスとして含まれています。 新しいシステム変数を使用する場合、手順 2 のみが適用され、手順 3 は以下のように置き換えられます。 ループするオペレータの CurrentLoopIteration 変数を使用して、計算式でインデックス付きフィールドの要素にアクセスします。 例:

Process.X[Process[OpName].CurrentLoopIteration];