パラメータ メンバ内の制御ステートメント

制御ステートメントは、他のステートメントを実行するかどうかを決定します。
cspm17
パラメータまたはテキスト ベースのソース メンバ内で制御ステートメントを使用すると、定義の機能が拡張されます。
  • 他のメンバおよびデータ セットのデータを含める
  • )IF ステートメントを使用した条件付きの包含または除外
    • さまざまな IF 式演算子
    • シンボリック変数を式内で使用可能
  • シンボル変数を使用した置換
    • システム定義のシンボリック変数
    • SYSVIEW
      定義のシンボリック変数
    • ユーザ定義のシンボリック変数
制御ステートメントは「)」文字で始まります。すべての制御ステートメントは、1 列目から始める必要があります。このルールの例外は )IF と )ENDIF です。これらのステートメントは任意の列で開始でき、IF ロジックの階層を示すためにインデント可能です。
....+....1....+....2....+....3....+....4....+....5....+....6....+ | )IF expression | )ENDIF | | )IFTEST | | )IFON | )IFOFF | | )END | )EOF | | )SKIP | )ENDSKIP | | )INCLUDE member <dataset-name> <options> | | )INCLUDEON | )INCLUDEOFF | | )SUBCNTLON | )SUBCNTLOFF | | )SUBDATAON | )SUBDATAOFF | | )ADDSYMBOL symbol value <options> | )DELSYMBOL symbol | )DROPSYMBOLS <options> | | )LJUST | )NOLJUST | | )UPCASE | )NOUPCASE | | )ECHO | )NOECHO | | )ECHOWTO | )NOECHOWTO | | )DEBUG | | )JOBCARD |
IF 式の評価
)IF 制御ステートメントは、)IF )ENDIF 構造内に含まれるステートメントを含めたり除外したりするために使用できます。式が TRUE 値に評価される場合、)IF と )ENDIF の間のステートメントが処理に含まれます。
Syntax: )IF expression
通常、式は以下のような形式です。
)IF parm1 operator parm2
例:
Evaluated Expression ....+....1....+....2....+....3....+....4....+....5 ---------- | )IF a = b False | | )IF abcd EQ 'abcd' True | | )IF c'a' = A False | | )IF AbcD EQ ABCD True | | )IF c'AbcD' EQ AbcD False | | )IF '100' EQ 00100 True |
式の評価ルール
  • 式のパラメータに空白が含まれている場合は、一重引用符で囲む必要があります。
  • 式のパラメータが英数字の場合、parm1 と parm2 は比較の前に大文字に変換されます。パラメータの大文字と小文字が考慮されるのは、パラメータが c'値' で囲まれている場合のみです
  • 式のパラメータには、実行時に評価される事前定義済みのキーワードを含めることができます。
  • 式のパラメータには、実行時に評価されるシンボリック代入変数を含めることができます。
  • 汎用またはワイルドカード定義は、以下の変数および固定マスク文字を使用してコーディングする必要があります。
    • 可変長マスク文字 - '
      =
      '
    • 固定長マスク文字 - '
      *
      '
IF 式の演算子
Operator Description ---------------- --------------------------------------------- EQ Equals = NE Not equal or does not equal <> ¬= ^= LT Less than < GT Greater than > LE Less than or equal to <= GE Greater than or equal to >= CONTAINS Parameter 1 contains parameter 2 CN Example: )IF 'SYSA SYSB SYSC' CN &SYSNAME NOTCONTAINS Parameter 1 does not contain parameter 2 NC Example: )IF 'SYSA SYSB SYSC' NC &SYSNAME INGROUP Parameter 1 is in logical group/type/instance IN Syntax: )IF parm1 IN group/type/instance )IF parm1 IN group.instance/type Example: )IF &SYSNAME IN PROD/SYSNAME NOTINGROUP Parameter 1 is NOT in logical group/type/instance NI Syntax: )IF parm1 NI group/type/instance )IF parm1 NI group.instance/type Example: )IF &SYSNAME NI PROD/SYSNAME
事前定義済みのパラメータ 1 のキーワード
Keyword Description ---------------- --------------------------------------------- TRUE Constant value evaluated as TRUE FALSE Constant value evaluated as FALSE ACTIVE Evaluated as TRUE if the jobname specified JOBACTIVE as parameter 2 is active. Example: )IF ACTIVE = CICSPROD INACTIVE Evaluated as TRUE if the jobname specified JOBINACTIVE as parameter 2 is inactive. Example: )IF INACTIVE = CICSPROD FEATURE The FEATURE keyword evaluates the feature code specified as parameter 2. It evaluates whether the specified feature code is enabled. Example: )IF FEATURE = CICS If the option 'Option-CICS Yes' was specified in the system configuration options member, then the expression is evaluated as TRUE. Otherwise, FALSE. Valid feature codes: Feature Code Synonyms ------------ --------------------------------- CAPTURE APM CEAPM, WILY CICS CTG DATACOM DB2 HCHECKER HCHECK IMS JVM MIM MVS Z/OS, ZOS ROSCOE TCP/IP TCPIP, TCP USS MQ WEBMQ, MQSERIES XSYSTEM All other values when used with an EQUAL operator are evaluated as FALSE
キーワード置換値
Keyword Description ---------------- --------------------------------------------- BUILD The SYSVIEW software build value. CICS The CICS release. The CICS release value is only from within the CICS data collector that runs in a CICS address space. Using the CICS keyword as part of an )IF statement allows you to control settings by CICS release. The release is in the following format: nnnn Release CICS TS ------- ------- 0750 TS 6.2 0740 TS 6.1 0730 TS 5.6 0720 TS 5.5 0710 TS 5.4 Example: ....+....1....+....2....+....3....+....4....+ | )IF CICS = 0740 | add specific data for CICS TS 6.1 regions | )ENDIF DAY The current day of week. Example: MONDAY, TUESDAY, etc. GROUP The SYSVIEW security group. SECGROUP HOUR The current hour of the day. Example: 00 to 23 INTERACTIVE The value TRUE or FALSE is substituted dynamically for the keyword depending on whether the active session is defined to be an interactive session. If the session is interactive, then TRUE, otherwise FALSE. Interactive sessions are session where an user is interacting with a keyword. These include: CICS ISPF LCL3270D ROSCOE TSO VTAM INTERFACE The current CA SYSVIEW interface type is substituted dynamically for the keyword. Possible values are: User Sessions Tasks Utilities -------- -------- --------- API AMSTASK PROFCONV BATCH APPLMON SECUCONV CICS AUDIT SECUREPT ISPF CICSCNTL SRCHUTIL LCL3270D CICSDATA UTILITY ROSCOE CICSLOGR UTILTASK SERVER DATALIB TSO ENFTASK VTAM GETJOBID HCHKTASK HCKX IMSCQS IMSDATA IMSLOGR IMSSPOC JOBS JVMDATA MAIN MQSDATA MVSDATA ROSCSAMP SCHEDULR SERVER SERVSEC SMFDATA TCPDATA TCPGATEW VTAMCNTL XSDS XSMS XSSI XSSS XSXI XSXS JES2 The value TRUE or FALSE is substituted dynamically for the keyword depending on whether the primary JES subsystem is JES2. If the JES subsystem is JES2, then TRUE else FALSE. JES3 The value TRUE or FALSE is substituted dynamically for the keyword depending on whether the primary JES subsystem is JES3. If the JES subsystem is JES3, then TRUE else FALSE. JOBNAME The jobname where the SYSVIEW session is executing. If running in a CICS address space, the jobname is that of the CICS address space. MONTH The current month of year. Example: JANUARY, FEBRUARY, etc. NONINTERACTIVE The value TRUE or FALSE is substituted NOTINTERACTIVE dynamically for the keyword depending on whether the active session is defined to be an interactive session. If the session is not interactive, then TRUE else FALSE. QMGR The name of a IBM MQ queue manager. RELEASE The current SYSVIEW software release. SSID The SYSVIEW subsystem ID. SMFID The SMF ID. SPLEVEL The SP level of the operating system. SYSNAME The system name. SYSPLEX The name of the sysplex. TASKID The task ID for the executing task. CICSLOGR Active tasks and task IDs can be viewed IMSLOGR using the CA SYSVIEW ASADMIN command. USERID The userid for the session.
:
以下の例では、すべての )IF ステートメントに対応する )ENDIF が必要です。ただし、読みやすくするために、一部の )ENDIF ステートメントが省略されています。
....+....1....+....2....+....3....+....4....+....5 | )IF a = b | If the above IF is evaluated to be true, | these statement will be included. | )ENDIF | | )IF JOBNAME EQ SYSVUSER | )IF &JOBNAME EQ SYSVUSER | | )IF INTERACTIVE | )IF INTERACTIVE EQ TRUE | | )IF NOTINTERACTIVE | )IF NOTINTERACTIVE EQ TRUE | | )IF JES2 | )IF JES2 EQ TRUE | )IF JES3 | )IF JES3 EQ TRUE | | )IF ACTIVE CICSPROD | )IF ACTIVE EQ CICSPROD | )IF JOBACTIVE EQ CICSPROD | | )IF INACTIVE CICSPROD | )IF INACTIVE = CICSPROD | )IF JOBINACTIVE = CICSPROD | | )IF FEATURE = WEBMQ | | )IF CICS = 0720 | | )IF INTERFACE = TSO | | )IF RELEASE = 16.0 | | )IF SSID = GSVX | | )IF SMFID = SYSA | )IF &SMFID = SYSA | | )IF SPLEVEL = SP7.2.3 | )IF &SPLEVEL = SP7.2.3 | | )IF SYSNAME = SYSTEMA | )IF &SYSNAME = SYSTEMA | | )IF SYSPLEX = PLEX1 | )IF &SYSPLEX = PLEX1 | Example STARTCMD parmlib member: ....+....1....+....2....+....3....+....4....+....5 | )IF SYSNAME = MVSPROD | | )IF JOBINACTIVE = CICSPROD | START CICSPROD | )ENDIF | | )ENDIF | | )IF SYSNAME = MVSTEST | | )IF JOBACTIVE = CICSDEV | MODIFY CICSDEV,CEMT I TAS | )ENDIF | | )ENDIF |
)IF ステートメントの終了
)ENDIF 制御ステートメントは、)IF ステートメントと対にする必要があります。このステートメントは、)IF )ENDIF 構造の終了を定義します。
例:
....+....1....+....2....+....3....+....4....+....5 | )IF a = b | If the above IF is evaluated to be true, | these statements are included. | )ENDIF |
TEST IF 式
)IFTEST 制御ステートメントを使用すると、データ レコードを含めたり除外したりするための追加のアクションを実行せずに、式の結果をテストおよび表示できます。
)IFTEST 制御ステートメントに対応する )ENDIF 制御ステートメントをコーディングしないでください。)IFTEST 制御ステートメントを使用している場合は、デバッグ情報を生成するために、前のステートメントとして )DEBUG 制御ステートメントもコーディングする必要があります。
オンライン セッションの場合、SYSVIEW LISTLOG コマンドを使用してデバッグ情報を表示できます。
CICS アドレス空間内のデバッグ情報は、GSVCLOG DDname に書き込まれます。
例:
....+....1....+....2....+....3....+....4....+....5 | )DEBUG | )ADDSYMBOL SystemNames 'SYSA SYSB' | )IFTEST '&SystemNames' CN &SYSNAME |
生成されたデバッグ情報
....+....1....+....2....+....3....+....4....+....5 | TESTIF : 0001 : CONTROL : )DEBUG | TESTIF : 0002 : CONTROL : )ADDSYMBOL SystemNames 'SYSA SYSB' | TESTIF : 0003 : ORIGINAL : )IFTEST '&SystemNames' CN &SYSNAME | TESTIF : 0003 : SUBSTITUTION : )IFTEST 'SYSA SYSB' CN SYSA | TESTIF : 0003 : CONTROL : )IFTEST 'SYSA SYSB' CN SYSA | TESTIF : 0003 : IF Parm1 : SYSA SYSB | TESTIF : 0003 : IF Operator : CN | TESTIF : 0003 : IF Parm2 : SYSA | TESTIF : 0003 : IF Result : TRUE |
IF 処理のオンまたはオフの設定
)IFON および )IFOFF 制御ステートメントは、組み込みの )IF 制御ステートメントを処理するかどうかを制御するメカニズムを提供します。
この制御ステートメントのセットが必要になるのは、ヘルプ メンバで文字列 ')IF' を行の最初の単語として使用する場合です。)IF 処理がアクティブな場合、ステートメントの処理が試行されます。
論理的なファイルの終わり
)END および )EOF 制御ステートメントは、メンバ内に論理的なファイルの終わりを作成する方法を提供します。論理的なファイルの終わりよりも後に見つかったデータまたはレコードはすべて無視されます。
データ レコードのスキップ
)SKIP および )ENDSKIP 制御ステートメントは、)SKIP および )ENDSKIP 制御ステートメントの間に含まれるデータ レコードをスキップまたは無視する方法を提供します。
動的なメンバのインクルード
)INCLUDE 制御ステートメントを使用すると、現在のレコード位置にある既存のデータ ストリームに他のメンバをインクルードしたり、コピーしたりできます。
Syntax: )INCLUDE member <dataset-name> <MSG> <DSNREQ> <NOMSG>
member - member name to be included. dataset-name - The data set of the member name specified. If the data set name is not specified, the member is included from the current data set. The following special keywords are available to dynamically insert a data set name or create a concatenated data set list: Keyword Description ------------- ------------------------------- USER Use the optional data set name defined in the user profile for the current library type. SITE Use the optional site data set that is defined in the system configuration options parmlib member. SYSTEM Use the system data set that is defined in the system configuration options parmlib member. SITESYSTEM Concatenate the following data SITE.SYSTEM sets to search for the specified * member name: * Optional site data set that is defined in the system configuration option parmlib member. * The system data set that is defined in the system configuration options parmlib member. USERSITE Concatenate the following data USER.SITE sets to search for the specified member name: * Optional data set defined in the user profile for the current library type. * Optional site data set that is defined in the system configuration options parmlib member. USERSYSTEM Concatenate the following data USER.SYSTEM sets to search for the specified member name: * Optional data set defined in the user profile for the current library type. * The system data set that is defined in the system configuration options parmlib member. MSG - Issue an error message if the member is not found. NOMSG - Do not issue an error message if the member is not found. DSNREQ - Indicate that the data set name must be present in the )INCLUDE statement, which is useful when using a substitution variable for a data set name. If the substitution data set name is blank, the statement will appear as a normal member include with no data set. This parameter causes the member include to be skipped in this circumstance.
インクルード処理のオンまたはオフの設定
)INCLUDEON および )INCLUDEOFF 制御ステートメントは、組み込みの )INCLUDE 制御ステートメントを処理するかどうかを制御するメカニズムを提供します。
制御ステートメントのシンボリック変数置換のオンまたはオフの設定
)SUBCNTLON および )SUBCNTLOFF 制御ステートメントは、後続の制御ステートメントでシンボリック変数置換を行うかどうかを制御するメカニズムを提供します。
データ レコードのシンボリック変数置換のオンまたはオフの設定
)SUBDATAON および )SUBDATAOFF 制御ステートメントは、後続のデータ レコードでシンボリック変数置換を行うかどうかを制御するメカニズムを提供します。
値によるシンボリック変数置換の定義
)ADDSYMBOL 制御ステートメントを使用すると、関連する値を持つシンボリック変数を定義できます。定義されたシンボリック変数はメンバ内、またはユーザ セッション内の他の場所で使用できます。
Syntax: )ADDSYMBOL symbol value <options>
symbol - The name of the symbolic variable to be defined. - The name must be from 1 to 32 characters in length. - The first character must be A-Z, @, #, or $. - Remaining characters can also include 0-9 and "_" (underscore). - The name cannot start with the reserved prefixes of SYS or G$ nor can the name duplicate an existing name. - Symbolic variable names are case insensitive. Options: SESSION - Define a symbol that persists until deleted or session end. LOCAL - Define a symbol local to the current member. A defined local symbol is available to other members included at a lower level, but not available to members at a higher level in an inclusion process. A local symbol is deleted automatically during end of file processing of the member in which it was defined. MEMBER - Define a symbol that will exist for the duration of the logical member. The symbol is deleted automatically during the end of file processing of the originating member. MEMBER is the default.
シンボリック変数の削除
)DELSYMBOL 制御ステートメントを使用すると、追加されたシンボリック変数を削除できます。
Syntax: )DELSYMBOL symbol
symbol - The name of the symbolic variable to be deleted.
定義済みのシンボリック変数のドロップ
)DROPSYMBOLS 制御ステートメントを使用すると、定義済みのシンボリック変数をドロップまたは削除できます。
Syntax: )DROPSYMBOLS <options>
LOCAL - Delete all symbols that were defined with the "LOCAL" option in the current member. MEMBER - Delete all symbols that were defined within the logical member. MEMBER is the default.
データ レコードの左揃え
)LJUST および )NOLJUST 制御ステートメントは、データ レコードを処理前に左揃えにするかどうかを制御するメカニズムを提供します。
この機能は、固定列にデータが存在する必要があるパラメータ ライブラリ メンバを操作する場合に役立ちます。
)IF ステートメント内でインデントできます。左揃えを実行すると、データ行は強制的に 1 列目から開始されます。
大文字のデータ レコード
)UPCASE および )NOUPCASE 制御ステートメントは、後続のデータ レコードを大文字にする方法を提供します。
処理後に結果データをエコー
)ECHO および )NOECHO 制御ステートメントは、)IF および )INCLUDE などのステートメントの処理後に使用される結果データ レコードを表示する方法を提供します。
オンライン セッションまたは SYSVIEW タスクの場合、LISTLOG コマンドを使用して結果データを表示できます。
CICS アドレス空間の場合、結果データは GSVCLOG DDname に書き込まれます。
WTO を使用して処理後に結果データをエコー
)ECHOWTO および )NOECHOWTO 制御ステートメントは、)IF および )INCLUDE などのステートメントの処理後に使用される結果データ レコードを表示する方法を提供します。
結果データは、コンソールまたはジョブ ログにメッセージを書き込む WTO を使用して表示されます。
パラメータ ライブラリ メンバのデバッグのアクティブ化
)DEBUG 制御ステートメントは、パラメータ ライブラリ メンバのデバッグを動的にアクティブ化する方法を提供します。
オンライン セッションまたは
SYSVIEW
タスクのデバッグ情報は、LISTLOG コマンドを使用して表示できます。
CICS アドレス空間内のデバッグ情報は、GSVCLOG DDname に書き込まれます。
例:
....+....1....+....2....+....3....+....4....+....5....+....6....+....7 | )DEBUG | )ADDSYMBOL SystemNames 'SYSA SYSB' | | )IF '&SystemNames' CN &SYSNAME | Yes, '&SystemNames' contains &SYSNAME | )ENDIF | | )IF 'AbCd' EQ c'AbCd' | This IF statement should fail | )ENDIF | | )EOF |
生成されたデバッグ情報
....+....1....+....2....+....3....+....4....+....5....+....6....+....7 | TESTIF : 001 : CONTROL : )DEBUG | TESTIF : 002 : CONTROL : )ADDSYMBOL SystemNames 'SYSA SYSB' | TESTIF : 003 : BLANK : | TESTIF : 004 : ORIGINAL : )IF '&SystemNames' CN &SYSNAME | TESTIF : 004 : SUBSTITUTION : )IF 'SYSA SYSB' CN SYSA | TESTIF : 004 : CONTROL : )IF 'SYSA SYSB' CN SYSA | TESTIF : 004 : IF Parm1 : SYSA SYSB | TESTIF : 004 : IF Operator : CN | TESTIF : 004 : IF Parm2 : SYSA | TESTIF : 004 : IF Result : TRUE | TESTIF : 005 : ORIGINAL : Yes, '&SystemNames' contains &SYSNAME | TESTIF : 005 : SUBSTITUTION : Yes, 'SYSA SYSB' contains SYSA | TESTIF : 006 : CONTROL : )ENDIF | TESTIF : 007 : BLANK : | TESTIF : 008 : CONTROL : )IF 'AbCd' EQ c'AbCd' | TESTIF : 008 : IF Parm1 : AbCd | TESTIF : 008 : IF Operator : EQ | TESTIF : 008 : IF Parm2 : AbCd | TESTIF : 008 : IF Result : FALSE | TESTIF : 009 : EXCLUDE : This IF statement should fail | TESTIF : 010 : CONTROL : )ENDIF | TESTIF : 011 : BLANK : | TESTIF : 012 : END-OF-FILE : )EOF |
JOBCARD ステートメントの挿入
)JOBCARD 制御ステートメントは、パラメータ ライブラリ メンバに一連の JOBCARD JCL ステートメントを挿入する方法を提供します。
一連の JOBCARD ステートメントは、JOBCARD コマンドを使用して定義および表示します。
Syntax: )JOBCARD <UJOBCORR 'user job correlation'>
UJOBCORR - An optional keyword value pair that inserts the specified UJOBCORR value into the pre-defined set of jobcard statements. The UJOBCORR value has a maximum of 32 characters. If the value contains embedded blanks, it must be enclosed in quotes.