【发布时间】:2015-05-08 09:38:19
【问题描述】:
有没有办法在调用堆栈中识别程序名称? 即,我有一个 PGM X 链接到 PGM B,而这个链接到 PGM C,然后,在 C 中,我想知道哪个程序发起调用 (PGM X)?
【问题讨论】:
-
你为什么要这样做?我还假设答案并不总是 PGM A,因为有时 PGM Z 调用/链接到 PGM B。它是 CALL 还是 LINK?你想知道什么,PGM B的CALLer的program-id,loadmember的名字,什么?
-
1- 我的一位同事遇到了这个“问题”,因为他想记录初始呼叫者 ID。 2-你猜对了!如果呼叫者总是 PGM A,我们就没有“问题” 3- 这是一个 LINK。 4- 如果情况相同。
-
你需要澄清你(他们的)问题。如果答案总是 PGM A,那么就没有问题。大概不是这样,但问题没有说。是使用 CALL 还是 LINK?或者两者兼而有之?还是 XCTL?如果是 CALL,是静态 CALL 还是动态 CALL?虽然回想起来有很多方法可以做到这一点,但最好的办法是从初始程序中传递所需的日志信息。
-
我想我回答了你对我之前评论的疑问,但是,尽管如此:这是一个链接;最初的调用者并不总是相同的,是的,我也说过,但我们仍然想知道是否没有“系统”方式!
-
信息不应该在 cmets 中,它们是短暂的。所有信息都应该在问题/答案本身中。您的问题正在“搁置”过程中,因为其中缺少此类信息。正如@cschneid 所暗示的,有几种方法可以做到这一点。虽然可靠,但它并不简单,并且会比从初始调用者传递数据影响性能数量级。如果您可以使用请求的信息更新您的问题,并说明为什么自动方式是最好的,那么您会有所收获,但这不是一个好方法。