是否有用 REXX 或 CLIST 编写的 TSO 命令可以确定谁已将数据集排入队列?
Posted
技术标签:
【中文标题】是否有用 REXX 或 CLIST 编写的 TSO 命令可以确定谁已将数据集排入队列?【英文标题】:Is there a TSO command written in REXX or CLIST that can determine WHO has enqueued a dataset? 【发布时间】:2010-01-15 13:09:40 【问题描述】:我需要编写一个 REXX Exec 或 Clist 来识别 WHO 已将数据集排入队列并在 ISPF 对话应用程序上显示用户友好的消息。由于系统配置问题,%WHOHAS 命令不可用。但是我也知道 ISPF 本身(选项 3.4)在 zos 大型机中具有专有挂钩,以显示我需要的排队资源信息 - 因此可以获得信息。不幸的是,我不知道如何使用 REXX Exec 或 CLIST 从 ISPF 3.4 外部访问这些数据。有什么建议吗?
【问题讨论】:
【参考方案1】:在第一次阅读时,我认为这将是一件非常简单的事情 挖出。不完全是!
在 ISPF 下,您可以获得一个面板来显示谁持有数据集 通过在命令行中输入以下内容:
TSO ISRDDN ENQ '数据集名称'
ISRDDN 命令记录在: http://publibz.boulder.ibm.com/cgi-bin/bookmgr/FRAMESET/ispzug50/G.0?ACTION=MATCHES&REQUEST=isrddn&TYPE=FUZZY&SHELF=ispzpm50&DT=20060621022939
可以从 REXX 程序中调用 ISRDDN,但我不这样做 知道如何将输出捕获到一个词干变量中 解析出来并发出一条消息。我找不到命令行 到 ISRDDN 的接口,允许捕获输出。
还有另一个实用程序: http://www.sillysot.com/mvs/index.htm?queryenq.htm 声称也可以这样做,我从未尝试过,所以不能 对此有任何进一步的评论。
我用 Google 搜索了您的问题,似乎有几个人使用过 MVS 命令
D GRS,RES=(*,dsname)确定谁持有 一个数据集。但是,这需要控制台访问,因此不会 适合大多数用户。如果允许控制台访问,那么您可以启动控制台 REXX 下的会话并相当容易地捕获输出,请参阅:http://www.redbooks.ibm.com/redbooks/pdfs/sg244626.pdf。
最后一个要搜索的地方是 CBT 磁带(免费软件 IBM 大型机)。在这里你可以找到 WHOHAS 的几个实现 ISPF 命令。
对不起,这是我能做的最好的了。
【讨论】:
这是一个有趣的回应。我尝试发出 TSO ISRDDN END 'Dataset-name' 命令并得到响应...“此系统正在以 SETGRS MODE=STAR 运行。不会从其他系统收集 ENQ 信息,ENQ 显示可能无法反映所有 ENQ这些是 GRS 已知的。”在测试期间 - 未检测到保存数据集的作业。我相信 %WHOHAS clist 也会调用相同的命令“D GRS,RES=(*,dsname)”,因此它们显然是相关的。似乎 ISPF 3.4 正在使用一种未知的方法来访问这些数据。我会多看看你的其他建议。谢谢 刚刚注意到我指向 ISPF ISRDDN 文档的链接错误 - 已修复。【参考方案2】:结果证明这是一个非常简单的解决方法。没有什么花哨。如果 clist 使用 CONTROL NOFLUSH 它不会在数据集的 ALLOCation 失败时中止。我们还安装了一个名为 TSOPLUS 的产品,它会在分配失败时向终端发送一条消息,标识谁分配了数据集。通过关闭 FLUSH 然后 systrapping TSOPLUS 消息,我能够提取我需要的信息。
【讨论】:
以上是关于是否有用 REXX 或 CLIST 编写的 TSO 命令可以确定谁已将数据集排入队列?的主要内容,如果未能解决你的问题,请参考以下文章