gpt4 book ai didi

c - C语言__asm__使用WTO写多行报文

转载 作者:行者123 更新时间:2023-12-05 03:21:39 24 4
gpt4 key购买 nike

我已经使用 C 语言程序中的 __asm__ 成功地写出了单行 WTO 消息,因此:-

typedef struct WTO_Parm
{
short int len; /* Total length of structure */
short int mcsflags;
unsigned char message[126];
} WTOPARM;
:
pWtoParm = (WTOPARM *)__malloc31(sizeof(WTOPARM));
:
__asm__(" WTO MF=(E,(%[text]))\n"
:
:[text] "r"(pWtoParm)
:"r0","r1","r14","r15");

我正在努力解决的问题是如何以相同的方式编写多行 WTO。

WTO - Write to operator的描述说:-

  • 对于多行消息,如果 WTO 是从授权程序发出的,则必须在第一次 WTO 发出时清除寄存器 0。对于问题程序发出的 WTO,寄存器 0 中的任何数据都将被忽略。
    我不是授权程序
  • 如果您编码 LINKAGE=SVC ...
    这是默认值
    并且您编码了 CONNECT 参数,您需要使用 PSW key 对任一主管状态进行最低授权0-7 或 APF 授权。
    我不是授权程序
  • 在发布多行 WTO 之前,您必须清除寄存器 0。唯一的异常(exception)是当您使用寄存器 0 传递消息标识符以连接多行消息时。但是,在这种情况下,IBM® 建议您使用 CONNECT 参数而不是寄存器 0。
    我无法对 CONNECT 参数进行编码,因为我不是授权程序,因此必须使用寄存器 0,但是问题程序会忽略寄存器 0。

从成功的 WTO 返回时,我已经能够通过以下调用检索用于连接 WTO 消息的消息标识号:-

__asm__(" WTO   MF=(E,(%[text]))\n"
" ST 1,%[wtoconn]\n"
:[wtoconn] "=m"(ConnID)
:[text] "r"(pWtoParm)
:"r0","r1","r14","r15");

但我无法将 ConnID 传回并让 WTO 使用它。我已经尝试过 register 0 和 CONNECT=(尽管上面的项目符号列表表明两者都不起作用)但它似乎被忽略了。我已经尝试放入一个带有硬编码数字 (1234) 的 ConnID,但在 R15 中仍然没有收到任何错误,这也表明它被忽略了,因为我应该得到 RC=08 .

我确信问题状态程序可以编写多行 WTO,但使用 CONNECT 可能不行。编写多行 WTO 的替代方法是什么?任何人都可以确认问题状态程序可以或不能使用 CONNECT/register 0。

最佳答案

由于您的程序不是授权的,您应该阅读非授权版手册中的WTO说明。参见 z/OS MVS Programming: Assembler Services Guide , 和 z/OS MVS Programming: Assembler Services Reference IAR-XCT

CONNECT=、LINKAGE=等是授权程序的参数,仅。

未经授权的程序只能通过一次对 WTO 的调用 编写最多 10 行的多行 WTO。没有连接。

关于c - C语言__asm__使用WTO写多行报文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72906274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com