TEMPSTATコマンドは、FORループ内またはREPORT文によって生成されるループ内でループ処理されているディメンションを制限するコマンドです。ステータスはTEMPSTATに続く文の実行後にリストアされます。DO ...DOEND句がTEMPSTATの後に続く場合、ステータスは、一致するDOENDか、BREAK文またはGOTO文が検出された時点でリストアされます。TEMPSTATは、プログラム内でのみ使用できます。
パラメータ
FORループまたはREPORT文によって生成される自動ループ内でそのステータスが一時的に変更される1つ以上のディメンション。
ディメンションのステータスを変更する1つ以上の文。一時的なステータスの下で複数の文を実行するには、それらをDO ... DOENDで囲みます。
使用上の注意
TEMPSTAT文のネスト
TEMPSTATコマンドは、一方のコマンド内にもう一方のコマンドをネストでき、ネストされたTEMPSTATコマンド内では同じディメンションを繰り返すことができます。
TEMPSTATの配置
REPORTがループ処理する間にディメンションのステータスを変更する場合、TEMPSTAT文は、REPORT文の前ではなくそのREPORTのループ内に配置する必要があります。たとえば、month
のステータスを変更するmonthly_sales
というユーザー定義ファンクションを作成し、monthly_sales
がmonth
をループ処理するREPORT文の一部であるとします。この場合、ステータスの変更が行われるように、TEMPSTAT文をmonthly_sales
ファンクション内に配置する必要があります。(TEMPSTATEはmonthly_sales内に配置する必要があり、これは、REPORT文がMONTHをループ処理するFORループ内のTEMPSTAT DO/DOENDの間にある場合でも同様です。)
POPおよびPOPLEVELコマンド
TEMPSTAT文ブロックのDO/DOENDの間では、対応するPUSH文がブロックにないかぎり、POP文を使用してブロックのTEMPSTATで保護されているディメンションをポップすることはできません。
同様にTEMPSTAT文ブロックのDO/DOENDの間では、次の2つの条件のいずれかが満たされないかぎり、POPLEVEL文を使用してブロックのTEMPSTATが保護しているディメンションをポップできません。1つは、対応するPUSHLEVEL文もブロックにある場合、もう1つはPUSHLEVEL文の指定以降にディメンションのプッシュのみがブロック内にある場合です。
LIMITおよびCONTEXTコマンドのみの使用
TEMPSTAT文のDO/DOENDの間において、ディメンションのループ処理の中でディメンションのステータスを変更する唯一の方法は、LIMITまたはCONTEXT APPLYコマンドを使用することです。(詳細はLIMITコマンドおよびCONTEXTコマンドを参照してください。)POPまたはPOPLEVELを使用して、ディメンションのステータスを変更することはできません。さらに、値の追加によってもディメンションのステータスがALLに変更されるため、ディメンションに値を追加する演算を実行することもできません。たとえば、MAINTAIN ADD、FILEREAD APPENDおよびIMPORT(EIFファイルの新しい値を使用)は、ディメンションに値を追加します。