C example: Opening an existing queue
This example demonstrates how to use the MQOPEN call to open a queue that has already been defined.
This extract is taken from the Browse sample application.
For IBM® MQ for z/OS® this is program CSQ4BCA1.
For the names and locations of the sample applications, see the following topics:
#include <cmqc.h>
⋮
static char Parm1[MQ_Q_MGR_NAME_LENGTH];
⋮
int main(int argc, char *argv[] )
{
/*
/* Variables for MQ calls */
/*
MQHCONN Hconn ; /* Connection handle */
MQLONG CompCode; /* Completion code */
MQLONG Reason; /* Qualifying reason */
MQOD ObjDesc = { MQOD_DEFAULT };
/* Object descriptor */
MQLONG OpenOptions; /* Options that control */
/* the MQOPEN call */
MQHOBJ Hobj; /* Object handle */
⋮
/* Copy the queue name, passed in the parm field, */
/* to Parm2 strncpy(Parm2,argv[2], */
/* MQ_Q_NAME_LENGTH); */
⋮
/* */
/* Initialize the object descriptor (MQOD) control */
/* block. (The initialization default sets StrucId, */
/* Version, ObjectType, ObjectQMgrName, */
/* DynamicQName, and AlternateUserid fields) */
/* */
strncpy(ObjDesc.ObjectName,Parm2,MQ_Q_NAME_LENGTH);
⋮
/* Initialize the other fields required for the open */
/* call (Hobj is set by the MQCONN call). */
/* */
OpenOptions = MQOO_BROWSE;
⋮
/* */
/* Open the queue. */
/* Test the output of the open call. If the call */
/* fails, print an error message showing the */
/* completion code and reason code, then bypass */
/* processing, disconnect and leave the program. */
/* */
MQOPEN(Hconn,
&ObjDesc,
OpenOptions,
&Hobj,
&CompCode,
&Reason);
if ((CompCode != MQCC_OK) || (Reason != MQRC_NONE))
{
sprintf(pBuff, MESSAGE_4_E,
ERROR_IN_MQOPEN, CompCode, Reason);
PrintLine(pBuff);
RetCode = CSQ4_ERROR;
goto AbnormalExit1; /* disconnect processing */
}
⋮
} /* end of main */
![[UNIX, Linux, Windows, IBM i]](../common/../develop/ngmulti.gif)
![[z/OS]](../common/../develop/ngzos.gif)