C MQOPEN给出了错误2085,我没有给出';我以前没有
我发现一切正常,直到今天我在MQOPEN上发现错误C MQOPEN给出了错误2085,我没有给出';我以前没有,c,ibm-mq,C,Ibm Mq,我发现一切正常,直到今天我在MQOPEN上发现错误 2085 MQRC_未知_对象_名称 #include <stdio.h> #include <cmqc.h> #include <cmqxc.h> #include "dte_mq.h" #include <string.h> #include <stdlib.h> typedef struct tagDTE_QUEUE_DESCRI
2085 MQRC_未知_对象_名称
#include <stdio.h>
#include <cmqc.h>
#include <cmqxc.h>
#include "dte_mq.h"
#include <string.h>
#include <stdlib.h>
typedef struct tagDTE_QUEUE_DESCRIPTOR
{
MQHOBJ handle;
int IsSyncpointControled;
} DTE_QUEUE_DESCRIPTOR, *PDTE_QUEUE_DESCRIPTOR;
static MQHCONN sHConn = 0;
static MQLONG sCompCode = MQCC_OK;
static MQLONG sReason = MQRC_NONE;
static int sNumOpenQueues = 0;
static PDTE_QUEUE_DESCRIPTOR sQueues = NULL;
MQLONG OpenCode;
MQOD od = {MQOD_DEFAULT}; /* Object Descriptor */
MQMD md = {MQMD_DEFAULT};
MQPMO pmo = {MQPMO_DEFAULT};
MQLONG O_options;/* MQCONNX options */
MQCNO Connect_options = {MQCNO_DEFAULT};
/* Client connection channel */
MQCD ClientConn = {MQCD_CLIENT_CONN_DEFAULT};
#define MAX_NUM_OPEN_QUEUES 10
int dteMqOpen(const char *name, int *qd)
{
MQLONG options;
MQHOBJ hObj;
int i;
printf("SAM\n");
strncpy(od.ObjectName, name, MQ_Q_NAME_LENGTH);
printf("SAM2\n");
O_options = MQOO_INPUT_AS_Q_DEF + MQOO_FAIL_IF_QUIESCING;
printf("SAM3\n");
MQOPEN(sHConn, &od, O_options, &hObj, &sCompCode, &sReason);
printf("MQopen = %d and %d\n",sCompCode,sReason);
if (sCompCode != MQCC_OK)
{
printf("RETURN %d\n",DTE_MQR_FAILED);
return DTE_MQR_FAILED;
}
++sNumOpenQueues;
*qd = 1;
for(i = 0; i < MAX_NUM_OPEN_QUEUES; i++)
{
printf("In the loop1\n");
if(sQueues[i].handle == -1)
{
*qd = i;
printf("QDESC1 = %d\n",qd);
sQueues[i].handle = hObj;
sQueues[i].IsSyncpointControled = 0;
break;
}
printf("In the loop\n");
}
printf("QDESC = %d\n",qd);
return DTE_MQR_OK;
}
错误2085。但几天前没有出现这样的错误连接正常,但MQOPEN失败 显然,“QName”的值无效 你已经发布了一个又一个关于同一个程序的问题。显然,您在MQ编程方面没有任何培训。您需要尽快获得一些MQ培训。网络和视频上也有很多信息 你为什么不做一些基本的调试和输出'QName'呢 在这里发布问题之前,您需要主动调试您的程序。我们不是来做你的工作的 显然,“QName”的值无效 你已经发布了一个又一个关于同一个程序的问题。显然,您在MQ编程方面没有任何培训。您需要尽快获得一些MQ培训。网络和视频上也有很多信息 你为什么不做一些基本的调试和输出'QName'呢
在这里发布问题之前,您需要主动调试您的程序。我们不是来做你的工作的。从来没有
typedef
指针。但是它在过去的15年里一直在工作,所以你在过去的15年里写了糟糕的代码。您如何确保限定符的正确性?输入P
,而不是*
。什么都救不了,但是有很多问题。我能做到,但原因是什么?我给了你一个理由。另一些人则认为,这是令人困惑的,一个人应该编写可读和可维护的代码。永远不要使用typedef
指针。但它在过去的15年中一直有效,所以在过去的15年中你编写了糟糕的代码。您如何确保限定符的正确性?输入P
,而不是*
。什么都救不了,但是有很多问题。我能做到,但原因是什么?我给了你一个理由。其他人则认为这很混乱,一个人应该编写可读的和可维护的代码。显然,你在谈论什么,不知道什么。QName是有效的。我重新运行了该程序,并且必须返回到上一个问题,因为MQOPEN正在工作,但MQPUT给出了分段错误。我在MQ工作了20多年,我完全知道我在说什么。RC为2085表示您提供的队列名称无效。与其喋喋不休,不如在MQ知识中心查找RC 2085。更好的是,为什么不去参加MQ技术会议()并接受MQ方面的培训呢。Morag Hughson正在进行几个MQ编程会话。您是对的,这是我们MQ员工的问题。谢天谢地,你在说话,却不知道在说什么。QName是有效的。我重新运行了该程序,并且必须返回到上一个问题,因为MQOPEN正在工作,但MQPUT给出了分段错误。我在MQ工作了20多年,我完全知道我在说什么。RC为2085表示您提供的队列名称无效。与其喋喋不休,不如在MQ知识中心查找RC 2085。更好的是,为什么不去参加MQ技术会议()并接受MQ方面的培训呢。Morag Hughson正在进行几个MQ编程会话。您是对的,这是我们MQ员工的问题。谢谢
qd = -1;
dteretopen = dteMqOpen(QName, &qd);
printf ("Return code from dteMqOpen = %d\n",dteretopen);
if (dteretopen ==0)
{
printf("MQOPEN could not open MQ, check errpr log\n");
exit(99);
}
dteretopen = dteMqOpen(QName, &qd);