C++のサンプルコーディング
コーディング例を示します。
#include <stdio.h>
#include <imqi.hpp> // include MQAccess C++ class
int main (void) {
ImqQueueManager mgr(" "); /* queue manager name */
ImqQueue queue; /* queue */
ImqMessage msg; /* message */
ImqString str("****** C++ sample put data ******");
/* message data */
ImqGetMessageOptions getoption; /* get message options */
ImqPutMessageOptions putoption; /* put message options */
// connect to the queue manager
if ( ! mgr.connect( ) ) {
/* stop if it failed */
printf(
"ImqQueueManager::connect ended with reason code %d¥n",
(int)mgr.reasonCode( ) );
return ( (int)mgr.reasonCode( ) );
}
// set the connection reference
queue.setConnectionReference( mgr );
// set the queue name
queue.setName("dynq1");
// set the message
msg.writeItem( str );
// set the open options
queue.setOpenOptions(MQOO_OUTPUT | MQOO_INPUT_AS_Q_DEF);
// open the queue
queue.open( );
if ( queue.reasonCode( ) ) {
printf( "ImqQueue::open ended with reason code %d¥n",
(int)queue.reasonCode( ) );
return( (int)queue.reasonCode( ) );
}
// set the get message options
getoption.setSyncPointParticipation(TRUE);
// set the put message options
putoption.setSyncPointParticipation(TRUE);
// begin local transaction
if ( ! mgr.begin( ) ) {
printf(
"ImqQueueManager::begin ended with reason code %d¥n",
(int)mgr.reasonCode( ) );
return( (int)mgr.reasonCode( ) );
}
// put the message
if ( ! queue.put( msg, putoption ) ) {
printf( "ImqQueue::put ended with reason code %d¥n",
(int)queue.reasonCode( ) );
}
// commit local transaction
if ( queue.reasonCode( ) == 0 ) {
if ( ! mgr.commit( ) ) {
printf(
"ImqQueueManager::commit ended with reason code %d¥n",
(int)mgr.reasonCode( ) );
return( (int)mgr.reasonCode( ) );
}
} else {
if ( ! mgr.backout( ) ) {
printf(
"ImqQueueManager::backout ended with reason code %d¥n",
(int)mgr.reasonCode( ) );
return( (int)mgr.reasonCode( ) );
}
}
// begin local transaction
if ( ! mgr.begin( ) ) {
printf(
"ImqQueueManager::begin ended with reason code %d¥n",
(int)mgr.reasonCode( ) );
return( (int)mgr.reasonCode( ) );
}
// get the message
if ( ! queue.get( msg, getoption ) ) {
printf( "ImqQueue::get ended with reason code %d¥n",
(int)queue.reasonCode( ) );
}
// commit local transaction
if ( queue.reasonCode( ) == 0 ) {
if ( ! mgr.commit( ) ) {
printf(
"ImqQueueManager::commit ended with reason code %d¥n",
(int)mgr.reasonCode( ) );
return( (int)mgr.reasonCode( ) );
}
} else {
if ( ! mgr.backout( ) ) {
printf(
"ImqQueueManager::backout ended with reason code %d¥n",
(int)mgr.reasonCode( ) );
return( (int)mgr.reasonCode( ) );
}
}
// close the queue
if ( ! queue.close( ) ) {
printf( "ImqQueue::close ended with reason code %d¥n",
(int)queue.reasonCode( ) );
}
// disconnect from the queue manager
if ( ! mgr.disconnect( ) ) {
printf(
"ImqQueueManager::disconnect ended with reason code %d¥n",
(int)mgr.reasonCode( ) );
}
return (0);
}