メッセージキューイングアクセス機能 TP1/Message Queue - Access 使用の手引
MQIのサンプルコーディング(C言語)
C言語でのコーディング例を示します。
/* All Rights Reserved, Copyright (C) 2003, Hitachi, Ltd. */ /*********************************************************** ** mqcsample.c ** functions = main() ***********************************************************/ /*********************************************************** ** name = main() ** func = main function of UAP ** (1)start UAP(output start message) ** (2)MQCONN(Connect queue manager) ** (3)MQOPEN(Open queue) ** (4)MQBEGIN(begin local transaction) ** (5)MQPUT(Put message) ** (6)MQBACK(rollback local transaction) ** (7)MQCMIT(commit local transaction) ** (8)MQBEGIN(begin local transaction) ** (9)MQGET(Get message) ** (10)MQBACK(rollback local transaction) ** (11)MQCMIT(commit local transaction) ** (12)MQCLOSE(Close queue) ** (13)MQDISC(Disconnect queue manager) ** (14)finish UAP(output end message) ***********************************************************/ #include <stdio.h> #include <string.h> #include <cmqc.h> #define PUT_DATA "******** sample put data ********" int main(void) { MQCHAR48 QueueManager = " "; /* queue manager name */ MQLONG comp_code, /* completion code */ reason; /* reason code */ MQHCONN qm_handle; /* connection handle */ MQCHAR message_data[200]; /* buffer */ MQHOBJ que_handle; /* object handle */ MQLONG buffer_length; /* buffer length */ MQLONG data_length; /* message length */ MQLONG open_options; /* open options */ MQOD obj_desc = { MQOD_DEFAULT }; /* object descriptor */ MQMD msg_desc = { MQMD_DEFAULT }; /* message descriptor */ MQPMO put_options = { MQPMO_DEFAULT }; /* put message options */ MQGMO get_options = { MQGMO_DEFAULT }; /* get message options */ MQBO begin_options = { MQBO_DEFAULT }; /* begin options */ /* set the queue name */ strcpy(obj_desc.ObjectName, "dynq1"); /* set the message data */ strcpy(message_data, PUT_DATA) ; buffer_length = strlen(message_data); printf("MQTRN:Start service. \n"); /* MQCONN( connect to the queue manager ) */ MQCONN(QueueManager, &qm_handle, &comp_code, &reason); if (comp_code != MQCC_OK) { printf("MQTRN:Failed at MQCONN. CODE = %ld\n", reason); goto PROG_END; } /* MQOPEN( open the queue ) */ open_options = MQOO_OUTPUT | MQOO_INPUT_AS_Q_DEF; MQOPEN(qm_handle, &obj_desc, open_options, &que_handle, &comp_code, &reason); if (comp_code != MQCC_OK) { printf("MQTRN:Failed at MQOPEN. CODE = %ld\n", reason); goto MQ_END; } /* MQBEGIN( begin local transaction ) */ MQBEGIN(qm_handle, &begin_options, &comp_code, &reason); if (comp_code != MQCC_OK) { printf("MQTRN:Failed at MQBEGIN. CODE = %ld\n",reason); goto MQ_END; } /* MQPUT( put the message ) */ put_options.Options = MQPMO_SYNCPOINT; MQPUT(qm_handle, que_handle, &msg_desc, &put_options, buffer_length, (PMQBYTE)message_data,&comp_code, &reason); if (comp_code != MQCC_OK) { printf("MQTRN:Failed at MQPUT. CODE = %ld\n", reason); /* MQBACK( rollback local transaction ) */ MQBACK(qm_handle, &comp_code, &reason); if (comp_code != MQCC_OK) { printf("MQTRN:Failed at MQBACK. CODE = %ld\n",reason); } goto MQ_END; } /* MQCMIT( commit local transaction ) */ MQCMIT(qm_handle, &comp_code, &reason); if (comp_code != MQCC_OK) { printf("MQTRN:Failed at MQCMIT. CODE = %ld\n", reason); goto MQ_END; } /* MQBEGIN( begin local transaction ) */ MQBEGIN(qm_handle, &begin_options, &comp_code, &reason); if (comp_code != MQCC_OK) { printf("MQTRN:Failed at MQBEGIN. CODE = %ld\n",reason); goto MQ_END; } /* MQGET( get the message ) */ get_options.Options = MQGMO_SYNCPOINT | MQGMO_NO_WAIT; MQGET(qm_handle, que_handle, &msg_desc, &get_options, buffer_length, (PMQBYTE)message_data, &data_length, &comp_code, &reason); if (comp_code != MQCC_OK) { printf("MQTRN:Failed at MQGET. CODE = %ld\n", reason); /* MQBACK( rollback local transaction ) */ MQBACK(qm_handle, &comp_code, &reason); if (comp_code != MQCC_OK) { printf("MQTRN:Failed at MQBACK. CODE = %ld\n",reason); } goto MQ_END; } /* MQCMIT( commit local transaction ) */ MQCMIT(qm_handle, &comp_code, &reason); if (comp_code != MQCC_OK) { printf("MQTRN:Failed at MQCMIT. CODE = %ld\n", reason); goto MQ_END; } /* MQCLOSE( close the queue ) */ MQCLOSE(qm_handle, &que_handle, MQCO_NONE, &comp_code, &reason); if (comp_code != MQCC_OK) { printf("MQTRN:Failed at MQCLOSE. CODE = %ld\n",reason); } MQ_END: /* MQDISC( disconnect from the queue manager ) */ MQDISC(&qm_handle, &comp_code, &reason); if (comp_code != MQCC_OK) { printf("MQTRN:Failed at MQDISC. CODE = %ld\n", reason); } PROG_END: printf("MQTRN:Terminate service. \n"); return(0); }
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.
(C) Copyright International Business Machines Corporation 1994, 1999. All rights reserved.