Basic Mqi Cobol
Basic Mqi Cobol
Basic Mqi Cobol
WebSphere MQ
Morag Hughson - hughson@uk.ibm.com
IBM Hursley - UK
COBOL
Agenda
MQI Concepts
QMGR
MQI Calls
Interface
Simple handle based interface
Returned handle passed to subsequent call
DataType Purpose
MQPTR Pointer
Connect
Basic
Basicconnect
connect
Connection Handle
Completion Code
Reason Code
Handle
Handlesharing
sharingoptions
options
Client
Client channelspecification
channel specification
FASTPATH
FASTPATHconnection
connection
Additional
Additional securitysettings
security settings
Reconnect
Reconnectoption
option
Connecting
MQCONNX CALL 'MQCONNX'
Dont hardcode QM name USING QM-NAME, CONNECT-OPTIONS,
HCONN, MQCC, REASON.
Always check reason codes
IF MQCC IS NOT EQUAL TO MQCC-OK
* report reason and
Connections options * stop if it failed
END-IF.
Connection not thread specific
Client reconnect
05 CONNECTION-OPTIONS.
COPY CMQCNOV.
Open a Queue
Indicate
Indicatetype
typeof
ofopen
openrequired
required
input,
input,output,
output,inquire
inquireetc
etc
Indicate
Indicateobject
objectname
nameto
toopen
open
Queue
Queuename
name
Topic
Topic
USING HCONN,
MQOPEN a queue OBJECT-DESCRIPTOR,
OPTIONS,
OpenOptions Q-HANDLE,
MQOO- flags which are required MQCC,
REASON.
MQOD describes a object to open
IF MQCC IS NOT EQUAL TO MQCC-OK
MQOD-OBJECTTYPE * report reason and
MQOT-Q for point-to-point * stop if it failed
MQOT-TOPIC for publish END-IF.
MQOD-OBJECTSTRING
MQOD-OBJECTNAME
01 OBJECT-DESCRIPTOR.
COPY CMQODV.
MQOPEN Tips
Try not to hardcode queue/topic names
Completion Code
Reason Code
Updates
Updatesstructure
structure
Message
MessageDescriptor
Descriptor
Put
PutMessage
MessageOptions
Options
ADD MQOO-OUTPUT
MQOO-FAIL-IF-QUIESCING
Putting Application CALL 'MQOPEN'
GIVING OPTIONS.
USING HCONN,
MQOPEN a queue OBJECT-DESCRIPTOR,
OPTIONS,
MQPUT a message Q-HANDLE,
MQCC,
Simple Hello World message REASON.
Set message format to string CALL 'MQPUT'
Put of syncpoint USING HCONN,
Q-HANDLE,
MESSAGE-DESCRIPTOR,
PMOPTIONS,
BUFFER-LENGTH,
BUFFER,
MQCC,
REASON.
01 MESSAGE-DESCRIPTOR.
COPY CMQMDV.
01 PMOPTIONS.
COPY CMQPMOV.
MOVE MQFMT-STRING TO MQMD-FORMAT.
ADD MQPMO-FAIL-IF-QUIESCING MQPMO-NO-SYNCPOINT GIVING MQPMO-OPTIONS.
MOVE 'Hello World!' TO BUFFER.
MOVE 12 TO BUFFER-LENGTH.
Capitalware's MQ Technical Conference v2.0.1.3
Message Descriptor (MQMD)
Field (V1) Description Field (V2) Description
Version Structure version number MsgSeqNumber Sequence number of logical message within group
Report Options for report messages Offset Offset of data in physical message from start of logical message
Action Type of put being performed and the relationship between the original message and the new message 3
MQPUT Tips
Always use explicit syncpoint setting
Defaults are not the same on z/OS and Distributed
Generally
Syncpoint when persistent
No syncpoint when non-persistent
MQCONNX QMGR
MQOPEN Connection Handle
MQPUT Object Handle
Message Descriptor
MQOPEN Get Message Options
Buffer Size
MQGET
Message Data
Message Length
Completion Code
Reason Code
Updates
Updatesstructure
structure
Message
MessageDescriptor
Descriptor
Get
GetMessage
MessageOptions
Options
ADD MQOO-INPUT-SHARED
CALL 'MQOPEN'
GIVING OPTIONS.
USING HCONN,
MQOPEN a queue OBJECT-DESCRIPTOR,
OPTIONS,
Q-HANDLE,
MQGET a message MQCC,
Syncpoint if persistent REASON.
01 MESSAGE-DESCRIPTOR.
COPY CMQMDV.
01 GMOPTIONS.
COPY CMQGMOV.
MOVE 60000 TO MQGMO-WAITINTERVAL.
ADD MQGMO-SYNCPOINT-IF-PERSISTENT MQGMO-CONVERT
MQGMO-FAIL-IF-QUIESCING MQGMO-WAIT GIVING MQGMO-OPTIONS.
Capitalware's MQ Technical Conference v2.0.1.3
Get Message Options (MQGMO)
Field Description Version
Signal1 Signal
2
SegmentStatus Flag indicating whether message retrieved is a segment of a logical message
Sementation Flag indicating whether further segmentation is allowed for the message retrieved
3
ReturnedLength Length of message data returned (bytes)
MsgHandle The handle to a message that is to be populated with the properties of the message being retrieved from the queue.
Get Options
10 MQGMO-WAIT PIC S9(9) BINARY VALUE 1. 10 MQGMO-CONVERT PIC S9(9) BINARY VALUE 16384.
10 MQGMO-NO-WAIT PIC S9(9) BINARY VALUE 0. 10 MQGMO-LOGICAL-ORDER PIC S9(9) BINARY VALUE 32768.
10 MQGMO-SET-SIGNAL PIC S9(9) BINARY VALUE 8. 10 MQGMO-COMPLETE-MSG PIC S9(9) BINARY VALUE 65536.
10 MQGMO-FAIL-IF-QUIESCING PIC S9(9) BINARY VALUE 8192. 10 MQGMO-ALL-MSGS-AVAILABLE PIC S9(9) BINARY VALUE 131072.
10 MQGMO-SYNCPOINT PIC S9(9) BINARY VALUE 2. 10 MQGMO-ALL-SEGMENTS-AVAILABLE PIC S9(9) BINARY VALUE 262144.
10 MQGMO-SYNCPOINT-IF-PERSISTENT PIC S9(9) BINARY VALUE 4096. 10 MQGMO-MARK-BROWSE-HANDLE PIC S9(9) BINARY VALUE 1048576.
10 MQGMO-NO-SYNCPOINT PIC S9(9) BINARY VALUE 4. 10 MQGMO-MARK-BROWSE-CO-OP PIC S9(9) BINARY VALUE 2097152.
10 MQGMO-MARK-SKIP-BACKOUT PIC S9(9) BINARY VALUE 128. 10 MQGMO-UNMARK-BROWSE-CO-OP PIC S9(9) BINARY VALUE 4194304.
10 MQGMO-BROWSE-FIRST PIC S9(9) BINARY VALUE 16. 10 MQGMO-UNMARK-BROWSE-HANDLE PIC S9(9) BINARY VALUE 8388608.
10 MQGMO-BROWSE-NEXT PIC S9(9) BINARY VALUE 32. 10 MQGMO-UNMARKED-BROWSE-MSG PIC S9(9) BINARY VALUE 16777216.
10 MQGMO-BROWSE-MSG-UNDER-CURSOR PIC S9(9) BINARY VALUE 2048. 10 MQGMO-PROPERTIES-FORCE-MQRFH2 PIC S9(9) BINARY VALUE 33554432.
10 MQGMO-MSG-UNDER-CURSOR PIC S9(9) BINARY VALUE 256. 10 MQGMO-NO-PROPERTIES PIC S9(9) BINARY VALUE 67108864.
10 MQGMO-LOCK PIC S9(9) BINARY VALUE 512. 10 MQGMO-PROPERTIES-IN-HANDLE PIC S9(9) BINARY VALUE 134217728.
10 MQGMO-UNLOCK PIC S9(9) BINARY VALUE 1024. 10 MQGMO-PROPERTIES-COMPATIBILITY PIC S9(9) BINARY VALUE 268435456.
10 MQGMO-ACCEPT-TRUNCATED-MSG PIC S9(9) BINARY VALUE 64. 10 MQGMO-PROPERTIES-AS-Q-DEF PIC S9(9) BINARY VALUE 0.
Use MQGMO_FAIL_IF_QUIESCING
Ensure your application ends promptly
Publish a message
Completion Code
Reason Code
Updates
Updatesstructure
structure
Message
MessageDescriptor
Descriptor
Put
PutMessage
MessageOptions
Options
Very
Verysimilar
similarto
toaanormal
normalP2P
P2PPut
Put
USING HCONN,
MQOPEN a topic OBJECT-DESCRIPTOR,
OPTIONS,
MQOD describes a topic to Q-HANDLE,
publish to MQCC,
REASON.
MQOD-OBJECTTYPE
CALL 'MQPUT'
MQOT-Q for point-to-point USING HCONN,
MQOT-TOPIC for publish Q-HANDLE,
MQOD-OBJECTSTRING MESSAGE-DESCRIPTOR,
PMOPTIONS,
MQOD-OBJECTNAME BUFFER-LENGTH,
BUFFER,
MQPUT a message MQCC,
REASON.
01 OBJECT-DESCRIPTOR.
COPY CMQODV.
MOVE MQOT-TOPIC TO MQOD-OBJECTTYPE.
MOVE MQOD-VERSION-4 TO MQOD-VERSION.
MOVE Price/Fruit/Apples TO TARGET-TOPIC.
SET MQOD-OBJECTSTRING-VSPTR TO ADDRESS OF TARGET-TOPIC.
MOVE 18 TO MQOD-OBJECTSTRING-VSLENGTH.
Capitalware's MQ Technical Conference v2.0.1.3
Publishing Tips
Choose topic string carefully
Use sensible topic hierarchy
Based on context of published data
MQCONNX QMGR
Connection Handle
Subscription Descriptor
Object Handle
MQSUB
Subscription Handle
Completion Code
Reason Code
MQGET
Updates
Updatesstructure
structure
Subscription
SubscriptionDescriptor
Descriptor
Very
Verysimilar
similarto
toMQOPEN
MQOPEN
Application SUB-DESCRIPTOR,
Q-HANDLE,
SUB-HANDLE,
MQSUB verb MQCC,
REASON.
01 SUB-DESCRIPTOR.
COPY CMQSDV.
ADD MQSO-CREATE MQSO-MANAGED MQSO-FAIL-IF-QUIESCING
GIVING MQSD-OPTIONS.
MOVE Price/Fruit/Apples TO TARGET-TOPIC.
SET MQSD-OBJECTSTRING-VSPTR TO ADDRESS OF TARGET-TOPIC.
MOVE 18 TO MQSD-OBJECTSTRING-VSLENGTH.
Capitalware's MQ Technical Conference v2.0.1.3
Subscription Descriptor (MQSD)
Field Description
Subscribe Options
10 MQSO-NON-DURABLE PIC S9(9) BINARY VALUE 0.
Close a handle
MQCONNX QMGR
MQOPEN
MQPUT
MQOPEN
MQGET Connection Handle
Object Handle Close
Options
MQCLOSE
Completion Code
Reason Code
Updates
UpdatesObject
ObjectHandle
Handle
USING HCONN,
MQOPEN a queue OBJECT-DESCRIPTOR,
OPTIONS,
MQCLOSE a queue Q-HANDLE,
MQCC,
Normally wed do something ! REASON.
CALL 'MQCLOSE
USING HCONN,
Q-HANDLE,
OPTIONS,
MQCC,
REASON.
01 OBJECT-DESCRIPTOR.
COPY CMQODV.
MOVE MQOT-Q TO MQOD-OBJECTTYPE.
MOVE PARM-QNAME TO MQOD-OBJECTNAME.
Close Options
Options available depending on object type
MQCO-DELETE 1
Permanent Dynamic Queue
MQCO-DELETE-PURGE 2
Permanent Dynamic Queue
MQCO-KEEP-SUB 4
Durable Subscription
MQCO-REMOVE-SUB 8
Durable Subscription
MQCO-QUIESCE 32
Read Ahead input handle
MQCONNX QMGR
MQOPEN
MQPUT
MQOPEN
MQGET
MQCLOSE
Connection Handle
MQDISC
Completion Code
Reason Code
Updates
Updatesconnection
connectionhandle
handle
Application CONNECT-OPTIONS,
HCONN,
MQCC,
MQCONN to Queue Manager REASON.
05 CONNECTION-OPTIONS.
COPY CMQCNOV.
MQDISC Tips
Ensure application disconnects if QM quiescing
Will prevent Queue Manager from ending
IBM Hursley - UK