0

Steve Ives 提供了 ALLMEM 代码来针对 PDS 的所有成员运行编辑宏,请参见此处:如何批量运行 ISPF 编辑宏

我的 PDS 中的某些成员太大(默认情况下)无法编辑/查看,并且在线上遭受“浏览替换”:

Address 'ISPEXEC' 'EDIT DATAID('data1')',
        'MEMBER('member1') MACRO('workmac')'

由于浏览无法运行编辑宏 MACRO('workmac') 位没有发挥作用,因此没有发出 END 命令将执行返回到 ALLMEM 中的循环,并且整个批处理执行停止,直到我手动点击我的 PF3。

有什么办法可以强制 TSO 为这些大成员保持 EDIT 模式?

4

2 回答 2

4

有什么办法可以强制 TSO 为这些大成员保持 EDIT 模式?

也许。

ISPF Edit 有一个 LRECL 限制。如果您的成员太大超过了这个值,那么您对此无能为力。如果您想采用激进的概念,例如将每条记录分成两部分以便可编辑,然后对其进行编辑,然后将每条记录对重新组合成一条记录,这是一个单独的问题。

但也许问题不是你的 LRECL,而是记录的数量。你也许可以为此做点什么。

您可以尝试为运行 ISPF 编辑宏的批处理作业增加REGION参数。我不知道您的个人 ISPF 设置在 ISPF 批处理作业中是否重要,但您可以在 ISPF 编辑会话中键入EDITSET并确保“编辑和查看允许的最大初始存储空间”的值为 0,以防万一很重要。

请注意,这可能会解决您的问题,但您的成员可能对 ISPF Edit 来说太大了。在这种情况下,您必须找到一种替代机制。由于您已经有一个编辑宏,也许您可​​以更改它,将您自己的代码替换为 ISPF 编辑服务,然后针对您的数据运行该代码。也许这是一个学习 SORT 实用程序奇妙功能的机会。或者awk。很多选择。

于 2019-04-10T14:49:30.850 回答
1

如果只是某些成员,那么这不是 LRECL 问题,而是严格的大小问题。正如 cschneid 提到的,您可以尝试最大化可用于编辑的存储空间。但是,如果成员真的很大,那么您最终会达到存储限制。在这种情况下,当前编辑或查看将切换到浏览。如果您正在运行 Batch,那么这会出现您所描述的问题。没有什么可以将其保留在编辑中。RC=4 已经是 Browse 被替换的记录返回码,但如果你是批量的,那么你可能最终会进入显示循环。一种可能的解决方案是在 ISPPLIB 中拥有自己的 ISRBROBA 副本,并在 )INIT 或 )PROC 部分设置 .RESP = END ,以便在使用 BROWSE 时强制执行 END。由于它是批处理作业,因此您不太可能需要 ISRBROBA 的正常版本。

于 2019-04-11T10:46:41.647 回答