Кажется, вы не понимаете, как работает МИБ. Вы определяете QM тем, как вы настроили свой выходной узел потока сообщений.
Вы используете E SQL только для создания сообщения PCF. Вы должны заглянуть в анализатор MQCFH.
Затем вы отправляете это сообщение в своем потоке сообщений через узел вывода MQ, указывающий на QM и очередь SYSTEM.ADMIN.COMMAND.QUEUE.
Ваш код кажется неправильным только в том случае, если он конвертируется в BLOB, что не является необходимым, и не устанавливает некоторые значения заголовка. Проверьте эту ссылку для получения более подробных примеров: https://www.ibm.com/support/knowledgecenter/en/SSMKHH_10.0.0/com.ibm.etools.mft.doc/ac16915_.html
Я считаю, что этот код должен работать для создания командного сообщения, но я не могу его сейчас попробовать:
CREATE NEXTSIBLING OF OutputRoot.Properties DOMAIN 'MQMD';
CREATE NEXTSIBLING OF OutputRoot.MQMD DOMAIN 'MQADMIN'
NAME 'MQPCF';
DECLARE refRequest REFERENCE TO OutputRoot.MQPCF;
SET OutputRoot.MQMD.MsgType = MQMT_REQUEST;
SET OutputRoot.MQMD.ReplyToQ = 'REPLYQ';
SET refRequest.Type = MQCFT_COMMAND;
SET refRequest.StrucLength = MQCFH_STRUC_LENGTH;
SET refRequest.Version = MQCFH_CURRENT_VERSION;
SET refRequest.Command = MQCMD_CHANGE_Q;
SET refRequest.MsgSeqNumber = 1;
SET refRequest.Control = MQCFC_LAST;
SET refRequest.Parameter[1] = MQCA_Q_NAME;
SET refRequest.Parameter[1].* = ‘QYOUWANTTOINHIBIT’;
SET refRequest.Parameter[2] = MQIA_Q_TYPE;
SET refRequest.Parameter[2].* = MQQT_LOCAL;
SET refRequest.Parameter[3] = MQIA_INHIBIT_GET;
SET refRequest.Parameter[3].* = MQQA_GET_INHIBITED;
RETURN TRUE;