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