在使用 Jagacy jar 自动化大型机应用程序时,收到错误消息,指出“KDB16104I 应用程序尚未定义到 CICS”
Posted
技术标签:
【中文标题】在使用 Jagacy jar 自动化大型机应用程序时,收到错误消息,指出“KDB16104I 应用程序尚未定义到 CICS”【英文标题】:While automating a mainframe application with Jagacy jar, getting error message stating "KDB16104I Application has not been defined to CICS" 【发布时间】:2019-09-18 15:12:59 【问题描述】:我是大型机自动化的新手,正在尝试使用 Jagacy jar 和 java 自动化应用程序。在一个特定的屏幕上,我必须输入一个从 0 到 9 的数字,因此我将使用 jagacy 提供的 writePosition 函数在屏幕上输入值。但问题是,它只接受字符串值作为参数。
当我尝试输入数字 6 作为字符串时,它给出了一条错误消息,指出 KDB16104I Application has not been defined to CICS
。
我不知道 CICS 是什么,Google 上也没有关于此错误的信息。对此的任何帮助将不胜感激。
public void writePosition(final int i, final int j, final String s)
throws JagacyException
if (i < 0 || i >= this.getHeight())
throw new IllegalArgumentException("Invalid row: " + i);
if (j < 0 || j >= this.getWidth())
throw new IllegalArgumentException("Invalid column: " + j);
this.writeCursor(i, j);
this.writeString(s);
Error message: "KDB16104I Application has not been defined to CICS"
【问题讨论】:
CICS 是贵公司的一个小组吗?我的猜测是大型机只会运行它“知道”的应用程序,这意味着某些系统管理员已经允许该应用程序运行。我建议您四处打听,看看贵公司在大型机上运行应用程序的政策是什么。 CICS 是一个类似于 WebSphere Application Server 或 Apache Tomcat 的应用程序容器。这不是一个小话题。大型机安全团队中的某个人必须授权一个 ID 来登录 CICS 并执行显示您所指屏幕的特定应用程序(CICS 称为事务)。 这里的问题是,上述功能在一台机器上运行,而在另一台机器上不起作用。此外,这不是用户特定的问题,因为我的 ID 在代码运行的机器上运行很好。在我的机器上,代码也适用于几个屏幕(登录和选项选择),但在需要整数值的特定屏幕上,它说应用程序未注册到 CICS。 【参考方案1】:您要么没有正确驱动目标应用程序环境,要么目标应用程序环境不愿意以您试图驱动它的方式来驱动它。就是这么简单。从概念上讲,解决方案也很简单:当您认为自己提供了正确的输入但没有得到预期的响应时,请执行标准的故障排除程序。
您可以放心地假设通信路径在基本级别上正常工作。这条错误消息从您的大型机返回,实际上它只是在说“我不会按照您的要求做”。我现在尝试使用完全相同的连接详细信息和凭据(用户 ID、密码)登录(使用用户操作的终端模拟器),然后查看选项 6 是否有效。如果没有,那么终端自动化也无法正常工作。如果它确实有效,那么在该字段中尝试另一个数字,看看它是否也有效。如果其他数字有效——假设它是数字 3——那么在你的自动化中尝试 3。如果 3 在您的自动化中不起作用,那么您的 Jagacy 自动化中有问题,例如代码页设置、PS 位置(行、列 - 通常 PS 位置值将从 1 开始,而不是从 0 开始)、3270 模型类型(标准型号是 2 到 5,这将影响大型机将显示的列数和行数),可能是您配置了 TN3270E 而不是 TN3270(“E”几乎总是您想要的),或者其他什么。您可能还想尝试在输入数字 6 之前插入一些等待时间(暂停),然后如果这是问题,您还有更多工作要做来解决该问题。
顺便说一句,我对终端驱动的自动化并不热衷。是的,这是一种长期实践的艺术,但在我看来,它经常被实践。你想达到什么目的?由于这是您正在与之交互(或试图与之交互)的 CICS,因此 CICS 本身提供了许多其他交互选择,而不仅仅是基于终端的交互。
【讨论】:
以上是关于在使用 Jagacy jar 自动化大型机应用程序时,收到错误消息,指出“KDB16104I 应用程序尚未定义到 CICS”的主要内容,如果未能解决你的问题,请参考以下文章