有没有办法使用 REXX 编辑 ps 数据集并在特定行之后插入字符串?
Posted
技术标签:
【中文标题】有没有办法使用 REXX 编辑 ps 数据集并在特定行之后插入字符串?【英文标题】:Is there a way using REXX to edit a ps dataset and insert a string after a particular line? 【发布时间】:2018-12-24 14:00:59 【问题描述】:我正在编写一个将更新 PS 数据集的 REXX 程序。我可以使用我的 REXX 代码编辑特定的行。但我想要一个代码在特定行之后插入特定字符串。 例如:我的 PS 数据集有 100 行。我想在第 44 行(第 45 行)之后插入一个文本“ABCDE”,这会将文件的总行数增加到 101 行。其余行应保持不变。使用 REXX 可以做到这一点吗?
【问题讨论】:
自从您谈论 PS 文件以来,标签 Db2 是否相关? 不相关,我已经删除了 DB2 的标签 【参考方案1】:独立于REXX
,您需要有效地读取旧数据集并将其写入新文件,并将新记录(字符串)添加到输出文件中,然后写入其余部分。无法在物理顺序 (PS) 数据集中“插入”记录。最后,您将删除旧文件并将新创建的文件重命名为旧名称。
另一种选择是使用生成数据集组 (GDG) 并读取当前的 (0)
并创建新的 (+1)
作为输出。这样,您仍然引用相同的数据集名称以供其他人参考。
【讨论】:
谢谢霍格斯特罗姆。这个解决方案效果很好。【参考方案2】:@Hogstrom 的建议是解决您描述的问题的好方法。为了完整起见,这里有一个在极端情况下可能需要的解决方案。
创建一个编辑宏...
/*REXX*/
ADDRESS ISREDIT 'MACRO NOPROCESS'
aLine = 'ABCDE'
ADDRESS ISREDIT 'LINE_AFTER 44 = DATALINE (ALINE)'
...并批量运行 ISPF 编辑,执行此宏。
批量运行 ISPF 的 JCL 是特定于商店的,但许多商店已经创建了一个编目程序来执行此操作。
如果您愿意将数据集复制到 z/Unix 文件系统,也可以使用 sed 或 awk 进行更改。
我不推荐任何这些,我只是指出如果@Hogstrom 的解决方案由于某种原因对您不起作用,则可以这样做。
【讨论】:
我没有考虑过使用 ISREDIT ...另一个不错的选择。很大程度上取决于数据集的大小。 感谢 cschneid。我也会尝试这个解决方案。以上是关于有没有办法使用 REXX 编辑 ps 数据集并在特定行之后插入字符串?的主要内容,如果未能解决你的问题,请参考以下文章
合并两个具有列表的数据集并在合并后使用 pandas 保留列表
Select2 通过 AJAX 加载 JSON 结果集并在本地搜索