title: My C with MQ receive a message return code 2037
body: <p>I run the C program, which connect to MQ and try to get a message from it. I always get a message:<br>
           MQGET ended with reason code 2037<br>
  which means that MQ is not opened, but   MQOPEN CC=0 RC=0     </p>
  
  <p>MQ error log is empty.   </p>
  
  <p><strong>this is the program</strong>   </p>
  
  <pre><code>           #include &lt;stdio.h&gt;   
             #include &lt;stdlib.h&gt;      
             #include &lt;string.h&gt;      
  
             #include &lt;cmqc.h&gt;      /* includes for MQI*/              
             #include &lt;cmqxc.h&gt;   
  
             int main(int argc, char **argv)    
             {
             MQCNO   Connect_options = {MQCNO_DEFAULT};/MQNONNX opt*/   
             MQCD    ClientConn = {MQCD_CLIENT_CONN_DEFAULT};/*client channel*/  
             MQHCONN  Hcon;                   /* connection handle  */  
             MQHOBJ   Hobj;                   /* object handle */   
             MQLONG   CompCode;               /* completion code  */   
             MQLONG   OpenCode;               /* MQOPEN completion code*/  
             MQLONG   Reason;                 /* reason code    */   
             MQOD     od = {MQOD_DEFAULT};    /* Object Descriptor */   
             MQMD     md = {MQMD_DEFAULT};    /* Message Descriptor */   
             MQPMO    pmo = {MQPMO_DEFAULT};  /* put message options*/   
             MQLONG   O_options;              /* MQOPEN options  */   
             MQLONG   C_options;              /* MQCLOSE options */   
             MQGMO   gmo = {MQGMO_DEFAULT};   /* get message options */   
  
             char     QMgrName[MQ_Q_MGR_NAME_LENGTH+1];
             char     QName[MQ_Q_NAME_LENGTH+1];
             char     channelName[MQ_CHANNEL_NAME_LENGTH+1];
             char     hostname[1024];
             char     port[4];
             MQLONG   buflen;        /* buffer length*/
             char TempBuf[65536];
             int msgsToGet;
             int msgsGot;
  
             if (argc != 6)   
             {   
              printf("Usage: MQTest11 QMgrName ChlName hostname port  QName\n");   
              return(1);   
             }    
  
             **/* copy MQ manager name */**   
             strncpy(QMgrName, argv[1], MQ_Q_MGR_NAME_LENGTH);    
             QMgrName[MQ_Q_MGR_NAME_LENGTH] = '\0';    
  
             **/* copy channel name */**
             strncpy(channelName, argv[2], MQ_CHANNEL_NAME_LENGTH);    
             channelName[MQ_CHANNEL_NAME_LENGTH] = '\0';    
  
             **/* copy hostname */**
             strncpy(hostname, argv[3], 1023);    
             hostname[1023] = '\0'; 
  
             **/* copy port number */**   
             strncpy(port,argv[4],4);    
             strncpy(QName, argv[5], MQ_Q_NAME_LENGTH);    
             QName[MQ_Q_NAME_LENGTH] = '\0';    
  
             **/* copy hostname for connection */**
             strncpy(ClientConn.ConnectionName,hostname, MQ_CONN_NAME_LENGTH);    
  
             **/* copy channel name */**
             strncpy(ClientConn.ChannelName,channelName,MQ_CHANNEL_NAME_LENGTH);   
  
             **/* Point the MQCNO to the client connection definition */**   
             Connect_options.ClientConnPtr = &amp;ClientConn;    
             Connect_options.Version = MQCNO_VERSION_2;    
  
             **/* use MQCONNX */**    
  
             if (CompCode == MQCC_FAILED)    
             {   
                  /* exit with print the reason */    
             }    
             else    
             {    
              strncpy(od.ObjectName, QName, (size_t)MQ_Q_NAME_LENGTH);    
              O_options = MQOO_OUTPUT + MQOO_FAIL_IF_QUIESCING;    
              MQOPEN(Hcon,                      /* connection handle  */   
              &amp;od,                       /* object descriptor for queue  */   
              O_options,                 /* open options                 */   
              &amp;Hobj,                     /* object handle                */   
              &amp;OpenCode,                 /* MQOPEN completion code       */   
              &amp;Reason);                  /* reason code                  */   
  
              printf("MQTest11 MQOPEN CC=%ld RC=%ld\n", CompCode, Reason);
  
              if (OpenCode == MQCC_OK)    /* if MQOPEN , then continue in the while loop */      
              {    
              gmo.Options = MQGMO_WAIT + MQGMO_CONVERT;    
              gmo.WaitInterval = 15000;    
              msgsGot = 0;    
              msgsToGet = 0;    
              CompCode = OpenCode;    
              }    
               while (CompCode != MQCC_FAILED &amp;&amp; ((msgsToGet == 0) || (msgsGot &lt; msgsToGet)))    
              {   
  
             /* define length of the buffer -1 */   
             buflen = strlen(TempBuf) - 1;    */ buffer length */
             memcpy(md.MsgId, MQMI_NONE, sizeof(md.MsgId)); /*copy msg ID*/     
             memcpy(md.CorrelId, MQCI_NONE, sizeof(md.CorrelId));/*copy corrlID*/      
             md.Encoding       = MQENC_NATIVE; /*encode*/   
             md.CodedCharSetId = MQCCSI_Q_MGR;   
  
             /* function to get message from MQ*/
             MQGET(Hcon,       /* get message from MQ */   
             Hobj,             /* object handle*/   
             &amp;md,              /* message descriptor*/   
             &amp;gmo,             /*get message options*/    
             buflen,           /*buffer length*/   
             TempBuf,          /* buffer */   
             &amp;messlen,         /* message length*/   
             &amp;CompCode,       /* completion code*/   
             &amp;Reason);         /* reason code*/   
  
           **/* I put some statements to check if transaction failed or not*/**    
             if (Reason != MQRC_NONE)     
             {   
             if (Reason == MQRC_NO_MSG_AVAILABLE)   
             {   
             /* print statement no more messages */   
             else   
             {   
               printf("MQGET ended with reason code %d comcode %d\n",Reason,CompCode);       
              if (Reason == MQRC_TRUNCATED_MSG_FAILED)    
              {   
               /print statement that it is failed*/    
              }     
              }   
              }   
  
              **This is almost done, only statement if Compcode not failed, then print buffer**   
  </code></pre>
  
  <p>I have changed char TempBuf declaration to MQBYTE and it is not help</p>