是否可以获取调用程序的路径? 我在z / Os上调用这个程序 呼叫' MCOE.XXXXXXXX.C.LOAD(args)' '嗨那里'
我的目的是在调用程序中获取MCOE.XXXXXXXX.C.LOAD数据集,而不将此路径指定为参数。 谢谢! PetrS
答案 0 :(得分:0)
这是一项非常重要的练习,但通常可以这样做。
您首先要使用CSVINFO来获取有关您的程序的一些信息,然后诀窍是模拟搜索z / OS本来会找到您的模块...私有/任务库,STEPLIB / JOBLIB ,(M)LPA搜索,LNKLST等 - 一旦你明确知道加载模块名称(你的" args"程序名称可能是别名,或者调用者使用IDENTIFY宏设置的东西),你就可以得到很多这方面的BLDL,假设你知道使用哪个DCB。
一旦你找到DDNAME和连接数(毕竟,你的STEPLIB中可能有10个库!),你可以扫描分配数据结构以获得实际的数据集名称。通常,这是通过遍历内存中的数据结构(PSATOLD-> TCBTIO,然后索引到TIOT直到找到所需的条目...匹配的TIOT条目将指向JFCB - 或SWA管理器)来完成的token - 可用于获取JFCB,JFCB具有数据集名称和所需的所有其他详细信息。
如果从LNKLST获取,您需要额外的工作来确定从中获取的LNKLST并置中的哪个数据集。再次,可能,但它需要一点技巧。
如果您的程序碰巧在(M)LPA中,我不确定您是否可以可靠地检索从中获取的原始数据集名称 - 这可能是最糟糕的情况,尽管毫无疑问有多种其他潜在的挑战,例如处理UNIX服务可执行路径名。
祝你好运,如果你决定尝试一下!