我可以使用 Rexx 在 zos 中读取数据集的分配参数吗?

Posted

技术标签:

【中文标题】我可以使用 Rexx 在 zos 中读取数据集的分配参数吗?【英文标题】:Can I read the allocation parameters of a dataset in zos using Rexx? 【发布时间】:2014-07-02 13:39:41 【问题描述】:

我想创建一些 Rexx 代码,允许我以任何格式分配新数据集,例如 PDS、Sequential 等。通过读取现有数据集的数据集信息,然后将这些参数应用于新分配.

例如,当我在 3.2 中输入数据集名称并按 Enter 时,我会收到以下信息:

Data Set Name . . . . : HLQ.ETE.CNTL                                

General Data                          Current Allocation               
 Management class . . : MC000101       Allocated blocks  . : 6         
 Storage class  . . . : SC002020       Allocated extents . : 1         
  Volume serial . . . : VOL007         Maximum dir. blocks : 11        
  Device type . . . . : 3390                                           
 Data class . . . . . : None                                       
  Organization  . . . : PO            Current Utilization              
  Record format . . . : FB             Used blocks . . . . : 5         
  Record length . . . : 80             Used extents  . . . : 1         
  Block size  . . . . : 27920          Used dir. blocks  . : 6         
  1st extent blocks . : 6              Number of members . : 35        
  Secondary blocks  . : 2                                              
  Data set name type  : PDS           Dates                            
                                       Creation date . . . : 2014/04/02
                                       Referenced date . . : 2014/07/01
                                       Expiration date . . : ***None*** 

所以在我的 Rexx 中我想做两件事:

    读取现有数据集分配参数,如上所示

    使用读入参数分配新数据集

我会将此 Rexx 作为 JCL 批处理作业的一部分运行。

由于我已经研究了几天,但找不到任何方法,因此我将不胜感激。

【问题讨论】:

凯文的问题很严肃。一个 rexx 程序批量运行来完成已经可以通过 JCL 完成的事情是在自找麻烦。 JCL 已经正确地做到了,您需要编写并让您的程序工作,所以它会做一些已经存在的事情。您从中看到了什么好处? 【参考方案1】:

如果在 ISPF 下运行,则 SPF 命令DSINFO 更易于使用,因为它会为您设置变量。

如果在 TSO 下运行,Kenny 对ListDsi 的回答是正确的。

对于 ISPF DSINFO,您会这样做(变量包含 dsname):

Address ispexec 'DSINFO DATASET('dsname')'

say 'dsn=' dsname
say 'volume=' ZDSVOL
say 'recfm=' ZDSRF

.....

【讨论】:

这是我的答案,因为它让我能够按照我的意愿成功地在 Rexx 中实现它,谢谢!【参考方案2】:

您需要查看 TSO 函数 LISTDSI。这将为您提供所需的一切。 http://pic.dhe.ibm.com/infocenter/zos/v1r11/index.jsp?topic=/com.ibm.zos.r11.ikjb800/listdsi.htm

【讨论】:

【参考方案3】:

但是,根据您的操作,我还建议您使用 DD LIKE 参数(用于 SMS 托管数据集)或 DCB= 选项,用于非 SMS 托管数据集。有关文档,请参阅 http://pic.dhe.ibm.com/infocenter/zos/v1r11/topic/com.ibm.zos.r11.ieab600/xddlike.htm 和 http://pic.dhe.ibm.com/infocenter/zos/v1r11/topic/com.ibm.zos.r11.ieab600/iea2b690169.htm#dcbdsn。

与其编写自己的 REXX 来完成这项工作,为什么不利用内置工具呢?尤其是你说无论如何都要批量运行它?

【讨论】:

很好的信息,很高兴知道我也可以这样做,谢谢!

以上是关于我可以使用 Rexx 在 zos 中读取数据集的分配参数吗?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用 REXX 编辑 ps 数据集并在特定行之后插入字符串?

用于打开、关闭、读取和写入文件到 TAPE 驱动器的 REXX 命令是啥?

以编程方式了解 ftp 客户端是不是会使用 RDW 从 zOS 获取数据集

在外部 Rexx 脚本中调用特定函数

如何使用 REXX 将作业日志保存到数据集中

如何在 Rexx 接口中获取用户库到 SDSF