ibm-information-center/dist/eclipse/plugins/i5OS.ic.apiref_5.4.0.1/exdqopmrpg.htm

219 lines
8.9 KiB
HTML
Raw Normal View History

2024-04-02 14:02:31 +00:00
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="security" content="public" />
<meta name="Robots" content="index,follow" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta name="DC.Type" content="reference" />
<meta name="DC.Title" content="Example in OPM RPG: Data queue" />
<meta name="abstract" content="This program illustrates how to use APIs to create and manipulate a *DTAQ." />
<meta name="description" content="This program illustrates how to use APIs to create and manipulate a *DTAQ." />
<meta name="DC.Relation" scheme="URI" content="ExTaskDataque.htm" />
<meta name="copyright" content="(C) Copyright IBM Corporation 1998, 2006" />
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 1998, 2006" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="exdqopmrpg" />
<meta name="DC.Language" content="en-us" />
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
<link rel="stylesheet" type="text/css" href="./ic.css" />
<title>Example in OPM RPG: Data queue</title>
</head>
<body id="exdqopmrpg"><a name="exdqopmrpg"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">Example in OPM RPG: Data queue</h1>
<div><p>This program illustrates how to use APIs to create and manipulate
a *DTAQ.</p>
<div class="section" id="exdqopmrpg__HDRDQ2"><a name="exdqopmrpg__HDRDQ2"><!-- --></a><p>Refer to <a href="exdqilec.htm">Example in ILE C: Data queue</a> for
the original example.</p>
<div class="note"><span class="notetitle">Note:</span> Read the <a href="codedisclaimer.htm">Code license and disclaimer information</a> for
important legal information.</div>
<pre> F***************************************************************
F***************************************************************
F*
F* Program Name: DQUEUEX
F*
F* Programming Language: OPM RPG
F*
F* Description: This program illustrates how to use APIs to
F* create and manipulate a *DTAQ.
F*
F* Header Files Included: QUSEC - Error Code Parameter
F* QCAPCMD - Process Command API
F*
F***************************************************************
F*
FQPRINT O F 132 PRINTER UC
F***************************************************************
I*
I* Error Code parameter include
I*
I/COPY QSYSINC/QRPGSRC,QUSEC
I*
I* Process Command API Include
I*
I/COPY QSYSINC/QRPGSRC,QCAPCMD
I*
I* Command strings
I*
I DS
I I 'CRTLIB LIB(QUEUELIB)' 1 20 CRTLIB
I I 'DLTLIB LIB(QUEUELIB)' 21 40 DLTLIB
I I 'CRTDTAQ DTAQ(QUEUELI- 41 82 CRTDQ
I 'B/EXAMPLEQ) MAXLEN(1-
I '0)'
I I 'DLTDTAQ DTAQ(QUEUELI- 83 113 DLTDQ
I 'B/EXAMPLEQ)'
I*
I* Miscellaneous data structure
I*
I DS
I 1 100 CMDSTR
I B 101 1040LENSTR
I I 20 B 105 1080SIZE
I I 0 B 10901120RCVSIZ
I I '0' 113 113 FSTERR
I 114 123 APINAM
C*
C* Beginning of mainline
C*
C* Initialize the error code parameter. To signal exceptions to
C* this program by the API, you need to set the bytes provided
C* field of the error code to zero. Because this program has
C* exceptions sent back through the error code parameter, it sets
C* the bytes provided field to the number of bytes it gives the
C* API for the parameter.
C*
C Z-ADD16 QUSBNB
C*
C* Initialize QCAPCMD options control block for CL processing
C*
C Z-ADD0 QCABCB
C MOVE '0' QCABCC
C MOVE '0' QCABCD
C MOVE '0' QCABCF
C MOVE *BLANKS QCABCG
C MOVE *LOVAL QCABCH
C*
C* Create library QUEUELIB
C*
C MOVELCRTLIB CMDSTR
C Z-ADD20 LENSTR
C*
C EXSR EXCCMD
C*
C* Create a data queue called EXAMPLEQ in library QUEUELIB. The
C* queue will have a maximum entry length set at 10, and will be
C* FIFO (first-in first-out).
C*
C MOVELCRTDQ CMDSTR
C Z-ADD42 LENSTR
C*
C EXSR EXCCMD
C*
C* Send information to the data queue.
C*
C CALL 'QSNDDTAQ'
C PARM 'EXAMPLEQ'QUENAM 10
C PARM 'QUEUELIB'LIBNAM 10
C PARM 10 MSGSZ 50
C PARM 'EXAMPLE' MSG 10
C*
C* Retrieve information from the data queue.
C*
C CALL 'QRCVDTAQ'
C PARM 'EXAMPLEQ'QUENAM 10
C PARM 'QUEUELIB'LIBNAM 10
C PARM 10 MSGSZ 50
C PARM MSGBCK 10
C PARM 0 WAITTM 50
C*
C* Display the returned message
C*
C DSPLY MSGBCK
C*
C* Delete the data queue
C*
C MOVELDLTDQ CMDSTR
C Z-ADD31 LENSTR
C*
C EXSR EXCCMD
C*
C* Delete the library
C*
C MOVELDLTLIB CMDSTR
C Z-ADD20 LENSTR
C*
C EXSR EXCCMD
C*
C SETON LR
C RETRN
C*
C* End of MAINLINE
C*
C*****************************************************************
C*
C EXCCMD BEGSR
C*
C* Process requested CL command
C*
C CALL 'QCAPCMD'
C PARM CMDSTR
C PARM LENSTR
C PARM QCABC
C PARM SIZE
C PARM 'CPOP0100'FORMAT 8
C PARM RCVVAR 1
C PARM 0 RCVSIZ
C PARM RCVSIZ
C PARM QUSBN
C*
C* If an exception occurs, the API returns the exception in the
C* error code parameter. The bytes available field is set to
C* zero if no exception occurs and greater than zero if an
C* exception does occur.
C*
C QUSBNC IFGT 0
C MOVEL'QCAPCMD' APINAM
C EXSR ERRCOD
C ENDIF
C ENDSR
C*
C*****************************************************************
C*
C ERRCOD BEGSR
C*
C* Process errors returned from the API.
C*
C* If first error found, then open QPRINT *PRTF
C*
C FSTERR IFEQ '0'
C OPEN QPRINT
C MOVEL'1' FSTERR
C ENDIF
C*
C* Print the error and the API that received the error
C*
C EXCPTBADNEW
C*
C ENDSR
OQPRINT E 106 BADNEW
O 'Failed in API '
O APINAM
O 'with error '
O QUSBND</pre>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="ExTaskDataque.htm" title="Data queues and user queues both provide a means for one or more processes to communicate asynchronously. The queues can be processed FIFO (first-in first-out), LIFO (last-in first-out), or by key.">Examples: Using data queues or user queues</a></div>
</div>
</div>
</body>
</html>