CDEMATCH
用途
CDEMATCH 命令执行类似于表搜索的功能。 它使用自动化策略中指定的代码值来创建表。 您可以定义表匹配条件以及控制关键字或结果字段。 来自搜索的结果将返回到自动化过程,并且通常用于变更自动化过程逻辑流或自动化过程命令或应答。
典型用途是从要自动化的消息中抽取反馈和返回码,然后使用这些代码在自动化控制文件中执行搜索。 该搜索的结果会改变自动化过程所执行的操作。
语法
参数
- MSGTYP=类型
- 这是在自动化策略的 MESSAGES/USER DATA 策略项 的 消息标识 字段中输入的值。 此 策略项 用于定义要在其中搜索匹配项的代码。 MSGTYP 通常使用自动消息的消息标识进行编码,但也可以是伪消息标识,例如 CAPMSGS 或 INGALERT。
- CODE1 =code1 CODE2 =code2 CODE3 =code3
- 这些代码参数值用于搜索指定消息标识的代码条目以查找匹配的代码定义。 必须至少提供一个代码参数,但可以提供所有三个代码参数 (如果需要)。 可以按任何顺序指定代码参数。
代码参数的值可能已作为变量值从自动消息中抽取,但也可以是搜索匹配代码定义的任何其他值。 代码参数值与 MESSAGES/USER DATA 策略项的 "代码处理" 面板中的相关 "代码" 字段相对应。
- ENTRY=条目
- 此值为:
- 对于 APL-子系统名称
- 对于地铁-监视器条目名称,以 0 为前缀
- 对于 APG-自动化名称,以 1 为前缀
- 对于 MVC-MVSESA
此参数的缺省值由任务全局变量 SUBSTYPE 和 SUBSAPPL 确定。 如果 SUBSTYPE 的值为
SUBSYSTEM,那么 SUBSAPPL 的值将作为 ENTRY 参数的缺省值。 否则,将 SUBSTYPE 的值作为缺省值。 必须在 CDEMATCH 之前调用 AOCQRY 命令以使缺省值生效。 - VARN
- 在返回值中替代"&n "占位符的变量。 n 可以是 1-9。
限制和限制
CDEMATCH 命令只能由另一个自动化过程或命令处理器调用。
返回码
- 0
- 找到了匹配项。 在任务全局变量 EHKACTION 中提供了匹配代码定义的结果值。
- 1
- 找不到匹配项。
- 4
- 传递到命令的参数不正确。
- 6
- SA z/OS 初始化未完成,无法处理命令请求。
用途
- 在所传递参数的自动化策略中找到匹配的代码定义并将控制权返回给调用自动化过程时,任务全局变量 EHKACTION 包含来自定制对话框的 "代码处理" 面板中 "返回的值" 字段的数据。 如果找不到匹配的代码定义,那么任务全局变量 EHKACTION 的值为空。
- 自动化策略中的代码匹配规范依赖于订单。 将使用第一个匹配的代码定义。
- 无论自动化策略中存在什么,调用 CDEMATCH 时未指定的任何代码参数 (CODE1, CODE2或 CODE3) 都将被视为匹配。
- 自动化策略中的代码匹配规范的格式允许使用通配符 * 和% 以及使用比较运算符。 有关自定义对话框中代码定义格式的更多详情,请参阅 IBM Z System Automation 定义自动化策略。
任务全局变量
- EHKACTION
- 此变量提供匹配代码定义的返回值,如定制对话框的 "代码处理" 面板中的 "返回值" 字段中所指定。
当 CDEMATCH 的返回码大于零时,此变量的值为空。
示例
此示例显示了 CDEMATCH 与自动化控制文件之间的关系。 要自动执行的消息 $HASP095由 JES2 子系统生成,指示发生了灾难性级别的问题。 此示例假定将完整消息文本传递到自动化过程。 自动化过程将消息拆开,调用 CDEMATCH 以确定错误代码是否在自动化控制文件中。
在自动化策略中指定代码匹配信息,如下所示。
选择 JES2 应用程序对象的 MESSAGES/USER DATA 策略项。 在 JES2 子系统的 "消息处理" 面板上,输入 COD 作为消息 $HASP095的操作。
将显示消息 $HASP095 的 "代码处理" 面板,如 图 1中所示。
Code 1 Code 2 Code 3 Value Returned
* $PJ* OPERCANCEL
ERROR* $K03 IPLREQ
ERROR* $K08 IPLREQ
ERROR* $K15 IPLREQ
ABEND* SA22 OPERCANCEL
/* REXX CLIST to respond to $HASP095 */
/* Check whether automation is allowed and set TGLOBALs */
‘AOCQRY JES2 RECOVERY’
:
/* Get text of triggering message and save it in msg.1 */
’PIPE SAFE * | STEM msg.’
If msg.0 > 0 Then Do
/* Parse the input message: */
/* $HASP095 JES2 CATASTROPHIC type. CODE = cde RC=rc */
Parse Var msg.1 ’CATASTROPHIC’ code1 . ’CODE =’ code2 .
/* Look for a match */
’CDEMATCH MSGTYP=$HASP095,CODE1=’code1’,CODE2=’code2
Select
When rc = 0 Then Do /* Match found: check the action field */
’GLOBALV GETT EHKACTION’
If ehkaction = ’IPLREQ’ Then Do
:
End
End
When rc = 1 Then Do /* No match found: warn if required */
:
End
Otherwise /* Error: perform warning action */
:
End
End这是自动化过程继续执行的方式:
- 自动化过程从 PIPE 缺省 SAFE 获取触发消息 $HASP095 ,并将唯一消息文本行存储在词干变量 msg.1中。
- 使用文字串模式解析消息文本,以抽取变量 code1 和 code2中的错误类型和错误代码。 这两个值都作为参数传递给 CDEMATCH。
- 根据自动化策略中的代码规范, CDEMATCH 首先检查传递的错误代码 (code2) 中前三个字符的 $PJ。 此检查将同时捕获 $PJ2 和 $PJF ,这指示已发出命令 $PJES2,ABEND 或 $PJES2,ABEND,FORCE 。
- 在匹配的情况下, CDEMATCH 返回任务全局变量 EHKACTION 中的值 OPERCANCEL。
- 如果第一个代码定义没有匹配项,那么 CDEMATCH 将检查错误代码 $K03, $K08或 $K15 ,如果存在匹配项,那么返回值 IPLREQ。
- 如果尚未发生匹配, CDEMATCH 将检查异常终止代码 SA22 并返回值 OPERCANCEL (如果存在匹配)。
- 自动化过程中的进一步处理取决于是否找到了匹配的代码定义,如果找到了匹配的代码定义,那么取决于匹配的代码定义的返回值。
调用 CDEMATCH 时,未对 ENTRY 参数进行编码,缺省为 JES2。 仅当先前调用了 AOCQRY 并且正确填充了任务全局变量 SUBSTYPE 时,才会出现此缺省值。 请参阅 AOCQRY 以获取更多信息。
