data sets的查询

本文介绍了在Mainframe上查询data sets的方法,包括在ISPF 3.4面板上使用通配符*进行查询,以及IDCAMS和REXX中的LISTCAT命令。详细对比了*和.**.在查询中的差异,并提到了PLI/REXX中通过LMDINIT和LMDLIST服务实现更复杂的查询功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 在mainframe上面,最常用的data sets查询就是在panel 3.4 上面用 * 来匹配.

    单个的 * 能用来query 一个qualifier中不定的部分,如:

 

上面的查询中,* 使得ISPF最后返回所有 EX10$$$$ 的data set

同时, 由ISPF自身的功能,它还会返回具有更多一层qualifier的data set, 亦即所有形如EX10$$$$.$$$$$$$$的data sets.

 

.**.  使得ISPF 返回所有形如 C210528.$$$$$$$$.EX10 的data sets, 其中间的qualifier可以是零层,也可以是多层.

如果这个时候不是使用 .**.  而是 .*. 的话, ISPF 将只会返回具有一层 qualifier 的data sets

 

 


 

2. IDCAMS 或 REXX 中 issue 的 LISTCAT

LISTCAT 感觉大多数时候只是用来check一个data set是否exists

LISTCAT 基本能实现 ISPF 3.4 中的function, 但是还是有的局限,LISTCAT无法识别 .**. 的参数, 也就是说它无法试图返回中间qualifier有缺失的data sets.

LISTCAT 查询的时候有 entry 和 level 两种. entry 只返回匹配到了的data set, 而不提供类似3.4中返回具有更多层qualifier的data set的功能.    level 能提供类似3.4上面返回结尾有多层qualifier的情况:


但是, entry 和 level 都不支持用 * 来匹配一个qualifier中的部分字段, 以及 TFMS.F.DS.TERR*的查询方式

不过他们都可以用 .*. 来匹配一整个qualifier.

另外, entry 支持 query $$$.* 的格式,而level不支持以*结尾的query.

 

 

 

 

 


3.通过 PLI/REXX 等程序中对 ISPF service LMDINIT & LMDLIST 的调用则可以完全的达到3.4上面的data set query

 


LMDINIT根据查询的条件generate一个data set list id, 然后通过 LMDLIST将其读出显示或存入某个data set. 其

使用格式为:

 

LISTID(GVL3)中给出的 GVL3 为 LMDINIT 生成的data set list id name, 它将被随后的 LMDLIST 用到
而LEVEL中的参数则可以识别 .**. 对多层qualifier的查询以及 EX10* 格式对一个qualifier中的查询

 

而 LMDLIST 则访问 LMDINIT 生成的 data set list, 并将其中的记录逐条取出返回(OPTION(LIST))或保存到data set(OPTION(SAVE)/OPTION(SAVEC), SAVEC 包含catalog info), 其格式为:

其中的DSN为保存 LMDLIST 返回的data set name的变量

SAVE5 给出保存的data set name 的file name, file name 为 USERID .SAVE5 .DATASET  USERID 为当前的USER

 

 

【待续】

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值