data sets的查询

来源:互联网 发布:java getruntime 编辑:程序博客网 时间:2024/06/01 09:09

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

 

 

【待续】

 

 

 

原创粉丝点击