IBM Tivoli NetView for z/OS バージョン 6.2

IF-THEN ステートメント

IF-THEN ステートメントを使用すると、NetView® 自動操作で代行受信 および処理させたいメッセージや MSU を指定できます。このステートメントは、自動操作のために選択されるメッセージまたは MSU が 満たさなければならない条件や、メッセージまたは MSU がこれらの条件を 満たしている場合に NetView プログラムで行うアクションを コーディングするために使用できます。

NetView プログラムは、IF ステートメントの演算子の前後に示された式を評価します。この条件が真であれば 、NetView プログラムはそのステートメントの THEN 部分を処理します。論理 AND (&) 演算子、 論理 OR (|) 演算子、および括弧を使用すると、複数の条件を組み合わせられます。

IF-THEN ステートメントの構文は、次のとおりです。

構文図を読む構文図をスキップする
IF-THEN ステートメント

>>-IF-- --+----------------------------+--condition--_--item-- -->
          +-(--LABEL:--labelname--)----+                          
          +-(--ENDLABEL:--labelname--)-+                          
          '-(--GROUP:--groupname--)----'                          

>--operator-- --compare--_--item-- --THEN-- --+-actions-+--;---><
                                              '-BEGIN---'      

項目の意味:
IF
各 IF-THEN ステートメントの始めにコーディングするキーワードです。
LABEL:labelname
LABEL キーワードは、AUTOTBL コマンドの DISABLE または ENABLE 機能を用いて指定される、 自動化テーブル・ステートメントまたは BEGIN-END セクションを識別します。
  • labelname は、英数字で指定する必要があります。@、#、および $ は含めることができます。
  • labelname の長さは最大 16 文字です。
ENDLABEL:labelname
ENDLABEL キーワードは、AUTOTBL コマンドの DISABLE または ENABLE 機能を用いて指定される、 自動化テーブル・ステートメントまたは BEGIN-END セクションを識別します。
注:
  • labelname の値は、 同じメンバーの中にある直前の LABEL キーワードにある値に、一致させる必要があります。
  • ENDLABEL が BEGIN-END セクション内にある場合、 関連する LABEL は、同じ BEGIN-END セクション内になければなりません。
  • LABEL-ENDLABEL のペア上で使用される名前は、 自動化テーブルの中では固有でなければなりません。
  • ENDLABEL は、英数字で指定する必要があります。@、#、および $ は含めることができます。
  • labelname の長さは最大 16 文字です。

labelname の値は、 同じメンバーの中にある直前の LABEL キーワードにある値に、一致させる必要があります。

GROUP:groupname
GROUP キーワードは、AUTOTBL コマンドの DISABLE または ENABLE 機能を用いて指定される、 自動化テーブル・ステートメントまたは BEGIN-END セクションを識別します。
注:
  • 1 つ以上の自動化テーブル・ステートメントは、AUTOTBL コマンドの DISABLE または ENABLE 機能を用いて指定される、 名前付きグループのステートメントの一部を構成することができます。
  • GROUP 名によって識別されるステートメントは、 必要であれば複数のメンバーの中に入れることができます。
  • groupname は、英数字で指定する必要があります。@、#、および $ は含めることができます。
  • groupname の長さは最大 16 文字です。
condition_item
比較される項目は、ビット・ストリング、文字ストリング、 または解析テンプレートを指定することができます。

条件項目の詳細については、条件項目を参照してください。

operator
条件項目を比較項目と比較する方法を示します。
=
条件項目が比較項目と同じである場合、条件が真であることを指定します。
¬=
条件項目が比較項目と同じでない 場合、 条件が真であることを指定します。
<
条件項目が比較項目より小である場合、 条件が真であることを指定します。
注:
  • 変数とプレースホルダーはサポートされません。
  • 比較値は長さが違っていても構いません。
  • ヌル・ストリングは他のどのストリングより小であると見なされます。
<=
条件項目が比較項目より小か等しい場合、 条件が真であることを指定します。
注:
  • 演算子に => を指定することができます。
  • 変数とプレースホルダーはサポートされません。
  • 比較値は長さが違っていても構いません。
  • ヌル・ストリングは他のどのストリングより小であると見なされます。
>
条件項目が比較項目より大である場合、 条件が真であることを指定します。
注:
  • 変数とプレースホルダーはサポートされません。
  • 比較値は長さが違っていても構いません。
  • ヌル・ストリングは他のどのストリングより小であると見なされます。
>=
条件項目が比較項目より大か等しい場合、 条件が真であることを指定します。
注:
  • 演算子に =< を指定することができます。
  • 変数とプレースホルダーはサポートされません。
  • 比較値は長さが違っていても構いません。
  • ヌル・ストリングは他のどのストリングより小であると見なされます。
compare_item
NetView プログラムが比較項目と比較する対象には、ビット・ストリング、文字ストリング、 または解析テンプレートを指定することができます。

詳しくは、「ビット・ストリングの比較項目」を参照してください。

THEN
IF-THEN ステートメントの 2 番目の部分にコーディングするキーワードを示します。
actions
IF-THEN ステートメントの IF 条件が真である場合に 、NetView プログラムが行うアクションを指定します。

詳しくは、「処置」を参照してください。

BEGIN
BEGIN-END セクションの開始を示します。

詳しくは、BEGIN-END セクションを参照してください。

IF-THEN 構文使用上の注意:
  1. 1 つのステートメントに、複数の条件を指定することができます。 論理 AND (&) または論理 OR (|) 演算子で条件を結合してください。
    • 論理 AND (&) の前後にはブランク・スペースを入れてください。

      論理 AND (&) で他のデータと連結する場合は 、SYSCLONE サポートによって IF-THEN ステートメントの論理が変更される場合があります。

    • 論理 AND 演算子で条件を結合した場合、すべての 結合条件が真でなければ、 指定されたアクションが行われません。
    • 論理 OR 演算子で式を結合した場合、少なくとも 1 つ の結合条件が真でなければ、 指定されたアクションが行われません。
    図 1 の IF-THEN ステートメントは、 論理 AND 演算子で結合された 2 つの条件を示しています。 この条件が真になるには、 メッセージがドメイン CNM01 から 出され、しかもそのテキストが PURGE DATE IS LATER THAN TODAY'S DATE となっていなければなりません。
    図 1. 論理 AND 演算子の使用例
    IF DOMAINID='CNM01' &
       TEXT='PURGE DATE IS LATER THAN TODAY''S DATE' THEN
          EXEC (CMD('CLISTA') ROUTE (ONE * OPER1));
    論理 AND 演算子で結合された 2 つの条件については、 図 2 にも例を示しています。この例では、 ドメイン ID は CNM02、MSU 主ベクトル・キーは X'0000' (アラートを示します) でなければなりません。
    図 2. 追加の論理 AND 演算子の使用例
    IF DOMAINID='CNM02' & MSUSEG(0000) ¬= '' THEN
          COLOR(YEL)
          CONTINUE(Y);
    図 3 の IF-THEN ステートメントは、 論理 OR 演算子で結合された 2 つの条件を示しています。メッセージ ID が IST051A または IST1311A であれば、NetView プログラムは、 指定されたアクションを行います。
    図 3. 論理 OR 演算子の使用例
    IF MSGID='IST051A' | MSGID='IST1311A'             
      THEN EXEC (CMD('CLISTA') ROUTE (ONE * OPER1));  
  2. NetView プログラムでは、論理 AND 演算子で結合された式をグループ化し、 次に論理 OR 演算子で結合された式をグループ化します。
    例えば、図 4 に示す IF-THEN ステートメントは、 論理 OR 演算子と論理 AND 演算子で 3 つの条件を指定しています。
    図 4. 論理 OR および論理 AND 演算子の使用例
    IF DOMAINID='CNM01' |
       TEXT='PURGE DATE IS LATER THAN TODAY''S DATE' &
       SYSID='MVS1' THEN
          EXEC (CMD('CLISTA') ROUTE (ONE * OPER1));

    NetView プログラムでは、TEXT 条件と SYSID 条件が (論理 AND 演算子でこれら 2 つの条件を結合しているため) 一緒に評価されます。 TEXT 条件と SYSID 条件の両方、 あるいは DOMAINID 条件が真でなければなりません。 次に、 このプログラムは、その結果を DOMAINID 条件と結合します。

  3. NetView プログラムによる評価を一括して行いたい比較項目の回りを括弧で囲むと、NetView プログラムが条件をグループ化する順序を制御できます。

    次の例は、論理演算子のグループ化を示します。 DOMAINID 条件と TEXT 条件を、NetView プログラムで一括して評価させたい場合、図 5 に示すように、 これらの条件をまとめて括弧で囲みます。

    図 5. 論理演算子のグループ化の例
    IF (DOMAINID='CNM01' |
       TEXT='PURGE DATE IS LATER THAN TODAY''S DATE') &
       SYSID='MVS1' THEN
          EXEC (CMD('CLISTA') ROUTE (ONE * OPER1));

    前の例の IF-THEN ステートメントを処理するとき 、NetView プログラムは、DOMAINID 条件と TEXT 条件を (括弧でグループ化されているため) 一度に評価します。 次に、 この結果は、NetView プログラムによって SYSID 条件と結合されます。DOMAINID か TEXT 条件のいずれかが真でなければなりません。 さらに、SYSID 条件も真でなければなりません。

    MLWTO (複数行のオペレーター宛て) メッセージの先頭にブランク行がある場合、NetView プログラムは、 ブランク行を無視します。 ブランク行は、表示用に保持されており、 コマンド・プロシージャーで GETMLINE を使用しているときには行の配置に影響を与えるおそれがあります。

    MVS™ に対して表示される MLWTO メッセージには、制御行 (IEE932I)、順次のメッセージ ID、 またはその両方が組み込まれている場合があります。 メッセージをさらに有効に使用するために、IEE932I は NetView プログラムによって除去されますが、順次のメッセージ ID が除去されることはありません。

  4. 次の例の中の一連の IF-THEN ステートメントは、VTAM® という名前のブロックを構成する、 自動化テーブル・ステートメントを示しています。

    以下を指定した AUTOTBL ENABLE または DISABLE コマンドを使用すると、 さまざまなステートメントを使用可能または使用不可にすることができます。

    • LABEL=VTAM は、図 6 の中の最初のステートメントのみを指定する場合
    • ENDLABEL=VTAM は、図 6 の中の最後のステートメントのみを指定する場合
    • BLOCK=VTAM は、図 6 の中のブロック全体 (3 つのすべてのステートメント) を指定する場合

    以下の一連の IF-THEN ステートメントは、LABEL および ENDLABEL キーワードの使用例です。

    図 6. LABEL および ENDLABEL キーワードの使用例
    IF (LABEL:VTAM) MSGID = 'IST051A'
       THEN EXEC (CMD('CLISTA') ROUTE (ONE * OPER1));
    IF MSGID = 'IST052A'
       THEN EXEC (CMD('CLISTB') ROUTE (ONE * OPER1));
    IF (ENDLABEL:VTAM) MSGID = 'IST053A'
       THEN EXEC (CMD('CLISTC') ROUTE (ONE * OPER1));

    図 7 は、GROUP キーワードの使用法を示すもので、 複数の自動化テーブル・ステートメントを組み込んでいます。 このなかには、VTAMX という名前のステートメントのグループに含まれているものも あります。 AUTOTBL コマンドを使用し、GROUP=VTAMX のキーワードを指定することによって、 このグループの一部となっている自動化テーブルの中のすべてのステートメントを、 使用可能にしたり、または使用不可にしたりすることができます。 この例では、最初と 3 番目のステートメントが該当します。

    図 7. GROUP キーワードの使用例
    IF (GROUP:VTAMX) MSGID = 'IST054A'
       THEN EXEC (CMD('CLISTX') ROUTE (ONE * OPER1));
    IF MSGID = 'IST055A'
       THEN EXEC (CMD('CLISTY') ROUTE (ONE * OPER1));
    IF (GROUP:VTAMX) MSGID = 'IST056A'
       THEN EXEC (CMD('CLISTZ') ROUTE (ONE * OPER1));
  5. 無許可プログラムから出される MVS メッセージには、正符号が加えられています。

    NetView プログラムは、この正符号を除去し、自動化内部機能 (AIFR) 内のフィールドを設定して、メッセージが無許可プログラムにより出されたことを示します。

  6. アクションも BEGIN-END セクションも指定せずに THEN キーワードを使用すると、 自動化テーブルが、そのメッセージまたは MSU に関してそれ以上のアクションを行わないように 指示できます。図 8 は、 アクションも BEGIN-END セクションも指定しない THEN キーワードの使用法を示しています。
    図 8. アクションを指定しない THEN キーワードの使用例
    IF HDRMTYPE = '*' THEN ;


フィードバック