====== Data Queues ======
Simple example program showing filling and reading from a data queue.
===== Prototypes =====
*-------------------------------------------------------------------------
* Dataqueue Prototypes
*-------------------------------------------------------------------------
D sendDataToQueue...
D PR extpgm('QSNDDTAQ')
D qname 10A const
D qlib 10A const
D dataLength 5P 0 const
D data 65535A const options(*varsize)
D keyLength 3P 0 const options(*nopass)
D keyData 65535A const options(*nopass)
D asyncRequest 10A const options(*nopass)
D dataFromJrn 10A const options(*nopass)
*
D receiveDataFromQueue...
D PR extpgm('QRCVDTAQ')
D qname 10A const
D qlib 10A const
D dataLength 5P 0
D data 65535A options(*varsize)
D waitTime 5P 0 const
*
D retrieveDataFromQueue...
D PR extpgm('QMHRDQM')
D receiver 65535A options(*varsize)
D receiverLen 10I 0 const
D formatName 8A const
D qqname 20A const
D msgSelection 65535A const options(*varsize)
D error 265A
*
D retrieveDataQueueDesc...
D PR extpgm('QMHQRDQD')
D receiver 65535A options(*varsize)
D receiverLen 10I 0 const
D format 8A const
D qqname 20A const
===== Program Example =====
*---------------------------------------------------------------
* Variablen
*---------------------------------------------------------------
D data S 1024A
D dataLength S 5P 0
D qname S 10A inz('MYDATAQ')
D qlib S 10A inz('SCHMIDTM')
D qdesc DS qualified
D bytesReturned...
D 10I 0
D bytesAvailable...
D 10I 0
D messageLength...
D 10I 0
D keyLength 10I 0
D sequence 1A
D includeSenderId...
D 1A
D forceIndicator...
D 1A
D description 50A
D typeOfDataQ 1A
D automaticReclaim...
D 1A
D reserverd1 1A
D numberMessages...
D 10I 0
D numberEntriesCurrentlyAllocated...
D 10I 0
D qname 10A
D qlib 10A
D maxEntriesAllowed...
D 10I 0
D initEntries 10I 0
D maxEntriesSpecified...
D 10I 0
/free
data = 'Testdata for Queue';
sendDataToQueue(qname : qlib : %size(data) : data);
retrieveDataQueueDesc(qdesc : %size(qdesc) : 'RDQD0100':
qname + qlib);
dsply %trimr('Number entries: ' + %char(qdesc.numberMessages));
data = *blank;
receiveDataFromQueue(qname : qlib : dataLength : data : 0);
dsply %subst(data : 1 : 50);
*inlr = *on;
return;
/end-free
{{tag>devel ibm rpg}}