Controlar instruções nos integrantes do parâmetro

As instruções de controle determinam se outras instruções serão executadas.
cspm17
Usar instruções de controle dentro de integrantes de origem com base em texto ou em parâmetro fornece funcionalidades avançadas nas definições.
  • Incluir dados de outros integrantes e conjuntos de dados
  • Inclusão ou exclusão condicional usando a instrução )IF
    • Variedade de operadores da expressão IF
    • As variáveis simbólicas podem ser usadas dentro das expressões
  • Substituição usando variáveis simbólicas
    • Variáveis simbólicas definidas pelo sistema
    • Variáveis simbólicas definidas pelo
      SYSVIEW
    • Variáveis simbólicas definidas pelo usuário
As instruções de controle começam com o caractere ')'. Todas as instruções de controle devem ser iniciadas na coluna 1. A exceção a essa regra é )IF e )ENDIF. Essas instruções podem começar em qualquer coluna que permita que o alinhamento mostre a hierarquia da lógica 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 |
Avaliar a expressão IF
A instrução de controle )IF pode ser usada para incluir ou excluir instruções contidas em uma estrutura )IF )ENDIF. Se a expressão for avaliada como valor TRUE, as instruções entre )IF e )ENDIF serão incluídas para processamento.
Syntax: )IF expression
Normalmente, uma expressão está no seguinte formato:
)IF parm1 operator parm2
Exemplo
:
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 |
Regras de avaliação da expressão:
  • Se um parâmetro de expressão contiver espaços em branco, ele deverá estar entre aspas simples.
  • Se os parâmetros da expressão forem alfanuméricos, parm1 e parm2 serão colocados em letras maiúsculas antes para comparação. A capitalização de um parâmetro será respeitado apenas se os parâmetros estiverem entre: c'value'
  • Os parâmetros de expressão podem conter palavras-chave predefinidas que são avaliadas em tempo de execução.
  • Os parâmetros de expressão podem conter variáveis de substituição simbólicas que são avaliadas no tempo de execução.
  • As definições genéricas ou de caractere curinga devem ser codificadas usando os seguintes caracteres de variável e de máscara de tamanho fixo:
    • Caractere de máscara de tamanho variável - '
      =
      '
    • Caractere de máscara de tamanho fixo - '
      *
      '
Operadores da expressão 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
Palavras-chave predefinidas do Parâmetro 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
Valores de substituição da palavra-chave
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.
Exemplos
:
Nos exemplos a seguir, todas as instruções )IF devem ter um )ENDIF correspondente. No entanto, algumas das instruções )ENDIF foram omitidas por questão de legibilidade.
....+....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 |
Instrução END of )IF
A instrução de controle )ENDIF deve ser combinada com uma instrução )IF. Ela define o fim da estrutura )IF )ENDIF.
Exemplo
:
....+....1....+....2....+....3....+....4....+....5 | )IF a = b | If the above IF is evaluated to be true, | these statements are included. | )ENDIF |
Expressão TEST IF
A instrução de controle )IFTEST pode ser usada para testar e mostrar os resultados de uma expressão sem executar ações adicionais para incluir ou excluir registros de dados.
Não codifique uma instrução de controle )ENDIF para corresponder a uma instrução de controle )IFTEST. Se estiver usando a instrução de controle )IFTEST, você também deverá codificar a instrução de controle )DEBUG como uma instrução anterior para gerar as informações de depuração.
Para sessões online, é possível exibir informações de depuração usando o comando SYSVIEW LISTLOG.
As informações de depuração em um espaço de endereço do CICS são gravadas no DDname do GSVCLOG.
Exemplo
:
....+....1....+....2....+....3....+....4....+....5 | )DEBUG | )ADDSYMBOL SystemNames 'SYSA SYSB' | )IFTEST '&SystemNames' CN &SYSNAME |
As informações de depuração são produzidas:
....+....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 |
Definir o processamento de IF como On ou Off
As instruções de controle )IFON e )IFOFF fornecem um mecanismo para controlar se uma instrução de controle )IF incorporada será processada.
Uma possível necessidade desse conjunto de instruções de controle ocorrerá se você desejar usar a sequência de caracteres ')IF' em um integrante da ajuda como a primeira palavra em uma linha. Se o processamento de )IF estiver ativo, será feita uma tentativa de processar a instrução.
End Of File lógico
As instruções de controle )END e )EOF fornecem um método de criação de um fim de arquivo lógico em um integrante. Todos os dados ou registros encontrados após o fim de arquivo lógico são ignorados.
Ignorar registros de dados
As instruções de controle )SKIP e )ENDSKIP fornecem um método para ignorar registros de dados contidos entre as instruções de controle )SKIP e )ENDSKIP.
Inclusão dinâmica de integrantes
A instrução de controle )INCLUDE permite incluir ou copiar outros integrantes no fluxo de dados existente no local do registro atual.
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.
Definir o processamento de Include como On ou Off
As instruções de controle )INCLUDEON e )INCLUDEOFF fornecem um mecanismo para controlar se uma instrução de controle )INCLUDE incorporada será processada.
Definir a substituição de variáveis simbólicas ativadas ou desativadas para instruções de controle
As instruções de controle )SUBCNTLON e )SUBCNTLOFF fornecem um mecanismo para controlar se uma substituição de variável simbólica ocorre nas instruções de controle a seguir.
Definir a substituição de variáveis simbólicas ativadas ou desativadas para registros de dados
As instruções de controle )SUBDATAON e )SUBDATAOFF fornecem um mecanismo para controlar se a substituição de variáveis simbólicas ocorre nos registros de dados a seguir.
Definir a substituição da variáveis simbólicas pelo valor
A instrução de controle )ADDSYMBOL permite a definição de uma variável simbólica por um valor associado. A variável simbólica definida pode ser usada no integrante ou em outro local dentro da sessão do usuário.
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.
Excluir a variável simbólica
A instrução de controle )DELSYMBOL permite que o usuário exclua uma variável simbólica que foi adicionada.
Syntax: )DELSYMBOL symbol
symbol - The name of the symbolic variable to be deleted.
Descartar variáveis simbólicas definidas
A instrução de controle )DROPSYMBOLS permite que o usuário descarte ou exclua as variáveis simbólicas que foram definidas.
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.
Alinhar os registros de dados à esquerda
As instruções de controle )LJUST e )NOLJUST fornecem um mecanismo para controlar se os registros de dados são alinhados à esquerda ou não antes do processamento.
Essa função pode ser útil ao trabalhar com integrantes da biblioteca de parâmetros que exigem que os dados estejam em colunas fixas.
Os usuários podem fazer o alinhamento dentro de uma instrução )IF. O alinhamento à esquerda força a linha de dados a começar na coluna 1.
Registros de dados em letras maiúsculas
As instruções de controle )UPCASE e )NOUPCASE fornecem um método para colocar em letras maiúsculas os registros de dados, conforme mostrado a seguir.
Ecoar os dados resultantes após o processamento
As instruções de controle )ECHO e )NOECHO fornecem um método para exibir os registros de dados resultantes que são usados após o processamento de instruções como )IF e )INCLUDE.
Para sessões online ou tarefas do SYSVIEW, é possível exibir os dados resultantes usando o comando LISTLOG.
Para espaços de endereço do CICS, os dados resultantes são gravados no nome DDname do GSVCLOG.
Ecoar os dados resultantes após o processamento usando WTO
As instruções de controle )ECHOWTO e )NOECHOWTO fornecem um método para exibir os registros de dados resultantes que são usados após o processamento de instruções como )IF e )INCLUDE.
Os dados resultantes são exibidos usando uma WTO, que grava mensagens no console ou no log de tarefas.
Ativar depuração de integrantes da biblioteca de parâmetros
A instrução de controle )DEBUG fornece um método de ativar dinamicamente a depuração para um integrante da biblioteca de parâmetros.
É possível exibir informações de depuração para sessões online ou tarefas do
SYSVIEW
usando o comando LISTLOG.
As informações de depuração em um espaço de endereço do CICS são gravadas no DDname do GSVCLOG.
Exemplo
:
....+....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 |
As informações de depuração são produzidas:
....+....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 |
Inserir instruções JOBCARD
A instrução de controle )JOBCARD fornece um método para inserir um conjunto de instruções JCL de cartão de tarefa em um integrante da biblioteca de parâmetros.
O conjunto de instruções de cartão de tarefa é definido e exibido por meio do comando 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.