在大型机中通过 REXX 执行正则表达式以在 PS 文件或 PDS 成员中查找模式时遇到错误

Facing error while executing a regular expression to find a pattern in PS file or PDS member via REXX in mainframe

REXX 工具中,我想检查 PS 文件是否包含 mainframe 中的特定模式(如连续的 16 位数字),我想为此执行一个正则表达式然后检查 RC 以进行进一步处理。 我尝试了下面的代码,但无法执行正则表达式。

/* REXX */
STRIGN = "rc'[0-9]{16}'"
ADDRESS ISPEXEC "VIEW DATASET('XXXX.XXXXX.XXXXX')"
ADDRESS ISREDIT "MACRO (STRING)"
"F" STRING
SAY RC

对于代码,第

行出现错误

"F" STRING' 'IKJ56500I COMMAND F NOT FOUND' and RC = '-3'.

任何人都可以建议使用 mainframe 中的 REXX 执行正则表达式的任何方法。

您需要创建一个单独的 ISPF 编辑宏,其中包含您的编辑命令:

/* REXX */
address isredit
"macro"
"f rc'[0-9]{16}'"
say rc

然后在编辑数据集时指定此宏。例如。如果您创建一个名为 'findnum' 的宏,那么您将编码:

address ispexec                                           
  "edit dataset('XXXX.XXXXX.XXXXX') macro(findnum)" )

这将导致为该数据集和 运行 'findnum' 宏调用编辑。

您的宏必须位于作为 SYSPROC 或 SYSEXEC 串联的一部分的数据集中。