有没有办法使用 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 保留列表

如何保存结果集并在 TableView 中显示所有数据

Django:如何使用查询集并在模板中显示结果?

Select2 通过 AJAX 加载 JSON 结果集并在本地搜索

是否有用 REXX 或 CLIST 编写的 TSO 命令可以确定谁已将数据集排入队列?

构建大型 SQL 行集并在 .NET 中使用