是否可以使用REXX编辑ps数据集并在特定行之后插入字符串?

时间:2018-12-24 14:01:00

标签: mainframe rexx

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:5)

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

创建一个编辑宏...

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

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

批量运行ISPF的JCL是特定于商店的,但是许多商店已经创建了编目过程来做到这一点。

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

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