在来自 COBOL 的 CICS Web 服务调用中通过一个管道处理多个容器
Handling multiple containers over one pipe in CICS web service call from COBOL
我们正在尝试使用 CICS 4.1 将 COBOL 程序与 SOAP 服务集成。一个挑战是响应包含可变数量的 return 代码,这使文案变得复杂。
DFHWS2LS
程序在副本中为响应结构生成两个 01 级别(参见下面的副本片段)。这个第二个01级应该用于连接,还是应该被认为是一个工作存储字段?
- 在处理通过管道的单个容器时,CICS 程序需要执行许多活动(参见下面的示例)。当我们有两个容器时,这一切都必须完成两次吗?
我搜索了 Internet 和 IBM 文档,但没有找到如何处理此问题的示例。每当 WSDL 模式中的元素数量可变时,它似乎都会发生。一个 COBOL 示例说明某人如何处理通过同一管道的两个容器将是最有帮助的。
这是抄写本片段(程序中提供了初始01级):
05 ObligationResponse.
10 ReturnCodes-num PIC S9(9) COMP-5 SYNC.
10 ReturnCodes-cont PIC X(16).
(other response structure elements deleted for brevity)
01 pfcsO01-ReturnCodes.
05 DiscrepancyCode PIC S9(9) COMP-5 SYNC.
05 DiscrepancyLevelCode PIC S9(9) COMP-5 SYNC.
这是我们用来设置第一个容器的代码,我们对如何合并第二个容器感到困惑。
PERFORM 2000-PUT-INPUT-INTO-CONTAINER
THRU 2000-EXIT.
PERFORM 6000-CHECK-CONTAINER-COMMAND
THRU 6000-EXIT.
PERFORM 3000-INVOKE-WEBSERVICES
THRU 3000-EXIT.
PERFORM 4000-CHECK-WEBSERVICE-COMMAND
THRU 4000-EXIT.
PERFORM 5000-RECEIVE-RESPONSE
THRU 5000-EXIT.
PERFORM 6000-CHECK-CONTAINER-COMMAND
THRU 6000-EXIT.
PERFORM 7000-USER-CODE-TO-FMT-OUTPUT
THRU 7000-EXIT.
PERFORM 9000-TERMINATE-CICS
THRU 9000-EXIT.
GOBACK.
ReturnCodes-num
告诉您在 ReturnCodes-cont
.
中命名的容器中存在多少 pfcsO01-ReturnCodes
实例
pfcsO01-ReturnCodes
映射到一个实例。解决这个问题的一种方法是将 pfcsO01-ReturnCodes
放在您的链接部分,使用 CEEGTST
或 EXEC CICS GETMAIN
来获取大小为 LENGTH OF pfcsO01-ReturnCodes * ReturnCodes-num
的存储空间,并使用 SET ADDRESS OF pfcsO01-ReturnCodes
来您新获得的存储空间。
如果你喜欢冒险,你可以将pfcsO01-ReturnCodes
的长度添加到你重复SET ADDRESS OF pfcsO01-ReturnCodes
到递增指针的长度上。或者,如果您更愿意安全地生活,您可以声明一个 pfcsO01-ReturnCodes
(带有 Occurs Depending On
)的可变数组,并将 ODO 的对象设置为 ReturnCodes-num
.
我们正在尝试使用 CICS 4.1 将 COBOL 程序与 SOAP 服务集成。一个挑战是响应包含可变数量的 return 代码,这使文案变得复杂。
DFHWS2LS
程序在副本中为响应结构生成两个 01 级别(参见下面的副本片段)。这个第二个01级应该用于连接,还是应该被认为是一个工作存储字段?- 在处理通过管道的单个容器时,CICS 程序需要执行许多活动(参见下面的示例)。当我们有两个容器时,这一切都必须完成两次吗?
我搜索了 Internet 和 IBM 文档,但没有找到如何处理此问题的示例。每当 WSDL 模式中的元素数量可变时,它似乎都会发生。一个 COBOL 示例说明某人如何处理通过同一管道的两个容器将是最有帮助的。
这是抄写本片段(程序中提供了初始01级):
05 ObligationResponse.
10 ReturnCodes-num PIC S9(9) COMP-5 SYNC.
10 ReturnCodes-cont PIC X(16).
(other response structure elements deleted for brevity)
01 pfcsO01-ReturnCodes.
05 DiscrepancyCode PIC S9(9) COMP-5 SYNC.
05 DiscrepancyLevelCode PIC S9(9) COMP-5 SYNC.
这是我们用来设置第一个容器的代码,我们对如何合并第二个容器感到困惑。
PERFORM 2000-PUT-INPUT-INTO-CONTAINER
THRU 2000-EXIT.
PERFORM 6000-CHECK-CONTAINER-COMMAND
THRU 6000-EXIT.
PERFORM 3000-INVOKE-WEBSERVICES
THRU 3000-EXIT.
PERFORM 4000-CHECK-WEBSERVICE-COMMAND
THRU 4000-EXIT.
PERFORM 5000-RECEIVE-RESPONSE
THRU 5000-EXIT.
PERFORM 6000-CHECK-CONTAINER-COMMAND
THRU 6000-EXIT.
PERFORM 7000-USER-CODE-TO-FMT-OUTPUT
THRU 7000-EXIT.
PERFORM 9000-TERMINATE-CICS
THRU 9000-EXIT.
GOBACK.
ReturnCodes-num
告诉您在 ReturnCodes-cont
.
pfcsO01-ReturnCodes
实例
pfcsO01-ReturnCodes
映射到一个实例。解决这个问题的一种方法是将 pfcsO01-ReturnCodes
放在您的链接部分,使用 CEEGTST
或 EXEC CICS GETMAIN
来获取大小为 LENGTH OF pfcsO01-ReturnCodes * ReturnCodes-num
的存储空间,并使用 SET ADDRESS OF pfcsO01-ReturnCodes
来您新获得的存储空间。
如果你喜欢冒险,你可以将pfcsO01-ReturnCodes
的长度添加到你重复SET ADDRESS OF pfcsO01-ReturnCodes
到递增指针的长度上。或者,如果您更愿意安全地生活,您可以声明一个 pfcsO01-ReturnCodes
(带有 Occurs Depending On
)的可变数组,并将 ODO 的对象设置为 ReturnCodes-num
.