【问题标题】:Invalid EIBRESP after Cobol Cics statementCobol Cics 声明后 EIBRESP 无效
【发布时间】:2020-01-25 14:56:58
【问题描述】:

我在 Cobol 程序中发出 exec cics assign 语句并得到一个不可能的响应代码。 eibresp 正在返回空格。我的意思是在exec cics 命令的RESP 子句中分配的返回值。下面是一些代码:

77  W-RESP                  PIC S9(08)  VALUE 0 COMP.   
77  W-RESP-X REDEFINES                                  
    W-RESP                  PIC  X(04).                 
77  W-RESP2                 PIC S9(08)  VALUE 0 COMP.   


EXEC CICS ASSIGN                                  
    USERID    ( W-CICS-USER     )                
    RESP      ( W-RESP         )                 
    RESP2     ( W-RESP2        )                 
END-EXEC                                          
DISPLAY CTE-PROG ' ARESP='W-RESP '/' W-RESP2 ' RESPX=' W-RESP-X               

我在W-RESP 中得到的值是空格(X'40404040')。这是一个标准的大型机应用程序,在 IBM Zos 操作系统中运行。启动请求的程序是自然程序,在 cics 下执行。

自然课程 --> COBOL PGM 1 ---> 我的 COBOL PGM

我在网络上找不到任何解释或用户案例,尽管eibresp 在任何情况下总是会返回一个有效值。

有人能解释一下为什么我得到一个不可能的eibresp(空格)吗?

非常感谢。

【问题讨论】:

  • 在实际代码中,EXEC 和 DISPLAY 之间是否有任何涉及 WS-RESP-X 的东西?
  • 嗨,不,程序中没有任何东西改变这个变量。 Spaces 是 Cics 返回的值。谢谢。

标签: cobol cics


【解决方案1】:

每个 CICS 事务都有一个执行接口块(EIB,由 DFHEIBLK 或 DFHEIBLC 副本映射到 COBOL)。常见的做法是在 CALL 上传递 EIB。

您的程序可能有一个由 CICS 翻译器在其链接部分生成的 EIB。

您指出在您的事务中执行的第一个程序是用 Software AG 的自然编程语言编写的,然后该程序调用另一个 COBOL 程序,然后该程序调用您的 COBOL 程序。如果 EIB 没有被传递给您的 COBOL 程序,那可能是问题的根源。

【讨论】:

  • 非常感谢。我不仅在检查 eibresp ( eib 变量)的值。我也在检查 RESP 响应参数,它也返回空格 x"404040"。我的意思是,EIBRESP 或 RESP 都被返回空间。为了让事情变得更加神秘,我有一个问题发生的情况和另一个问题没有发生的情况,两者都是从自然程序开始的。再次感谢。
猜你喜欢
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 2012-05-02
  • 2013-11-03
  • 2021-10-12
相关资源
最近更新 更多