有没有办法使用 REXX 编辑 ps 数据集并在特定行后插入字符串?

Is there a way using REXX to edit a ps dataset and insert a string after a particular line?

我正在编写一个 REXX 程序,它将更新 PS 数据集。我可以使用我的 REXX 代码编辑特定行。但是我想要一个代码在特定行之后插入特定字符串。
例如:我的 PS 数据集有 100 行。我想在第 44 行(第 45 行)之后插入文本 "ABCDE",这会将文件的总行数增加到 101 行。其余行应保持不变。这可能使用 REXX 吗?

独立于REXX,您需要有效地读取旧数据集并将其写入新文件,并将新记录(字符串)添加到输出文件,然后写入其余部分。无法在物理顺序 (PS) 数据集中“插入”记录。最后,您将删除旧文件并将新创建的文件重命名为旧名称。

另一种选择是使用生成数据集组 (GDG) 并读取当前 (0) 并创建新的 (+1) 作为输出。这样您仍然在引用相同的数据集名称供其他人参考。

@Hogstrom 的建议是解决您描述的问题的好方法。为了完整起见,这里提供一个在极端情况下可能需要的解决方案。

创建编辑宏...

/*REXX*/
ADDRESS ISREDIT 'MACRO NOPROCESS'
aLine = 'ABCDE'
ADDRESS ISREDIT 'LINE_AFTER 44 = DATALINE (ALINE)'

...和运行 ISPF 批量编辑,执行此宏。

批处理 运行 ISPF 的 JCL 是特定于商店的,但许多商店已经创建了一个编目程序来执行此操作。

如果您愿意将数据集复制到 z/Unix 文件系统,您也可以使用 sed 或 awk 进行更改。

我不推荐任何这些,我只是指出如果@Hogstrom 的解决方案由于某种原因对您不起作用,也可以这样做。