![]() |
1
1
重命名数据集所需的技术不同于重命名PDS/PDSE中成员的技术。。。我敢打赌,你调用的系统rename()函数只是弄错了。在z/OS中,有很多组合函数,如“rename()”,必须处理,并且发现一些不按预期工作的情况并不罕见。 当然,值得致电IBM支持部门,看看这里是否还有其他事情发生。。。你试图做的事情似乎应该奏效,所以我认为把它当作bug或文档错误是有道理的。 除此之外,正如您所建议的,您可以使用有效的重命名形式,也可以用实际正常工作的东西替换系统的重命名功能。 一种简单的方法是在显示时创建rename():
您可以使用fldata()函数获取DDNAME的DSN,因此在给定打开的文件句柄的情况下,动态创建这样的重命名并不难。请注意,重命名形式可能会分配您使用DISP=OLD指定的文件,因此如果其他任务分配了该文件,则会导致问题。此外,如果这应该是商业质量的代码,作为一名客户,如果我发现你需要启动一些外部程序,因为你不知道如何重命名PDS/PDSE成员,我会大吃一惊——但那可能只是我。 另一种选择是编写自己的“rename()”函数。。。不幸的是,如果你想让它高效,它很可能需要是汇编语言。正如其他人所建议的那样,您可能会生成一个shell、REXX或TSO命令,但当然,这意味着创建一个新进程等,只是为了重命名PDS/PDSE成员。请记住,其中一些方法在尝试分配DISP=OLD的输入文件时也可能存在问题。 如果这对你的需求来说太慢了,那么做你想做的事情的方法是调用一个小的汇编程序例程,该例程对你的DDNAME调用系统STOW服务来进行重命名。流程大致如下:
在上面的STOW宏中,“C”的“目录选项”告诉STOW您要重命名现有成员。area_rom_step1包含当前成员名和新成员名-系统在目录中搜索当前名称,并在适当位置用新成员名重写。 说实话,我上面描述的正是系统运行时应该做的事情,但如果不是这样,而且IBM不想修复它,那么你可能更喜欢“手工”做这种事情。 |
![]() |
2
-1
不确定这是否可行,但既然您已经分配了数据集,也许您可以从程序中“调用”(对于某些调用值)IEHPROGM,在调用之前构造适当的SYSIN? 以下是指向IBM IEHPROGM示例的链接(请注意任何中断): https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.idau100/u1354.htm --斯科特 |
![]() |
anatta · 在末尾重命名日志文件 7 年前 |
![]() |
tgcloud · Python匹配模式以重命名文件[关闭] 7 年前 |
![]() |
Ghoul Fool · 批量重命名扩展名为小写 7 年前 |
![]() |
MatthijsG · 使用文本文件作为源重命名文件 8 年前 |
![]() |
Manik Khurana · 在python中复制文件 8 年前 |
![]() |
wmac · 将文件夹日期添加到文件夹名称 9 年前 |
![]() |
Ahmed Karmous · 仅替换文件名中第一个出现的字符 9 年前 |
![]() |
Zachary · 如果文件名缺少字符串,请使用批处理文件重命名文件 11 年前 |