我正在编写一个REXX程序,它将更新PS数据集。我可以使用REXX代码编辑特定行。但是我希望代码在特定的行之后插入特定的字符串。
例如:我的PS数据集有100行。我想在第44行(第45行)之后插入文本“ ABCDE”,这会将文件的总行数增加到101行。其余行应保持不变。使用REXX可以做到吗?
答案 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的解决方案由于某种原因对您不起作用,则可以这样做。