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

635 lines
32 KiB
HTML

<?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 ILE RPG: Retrieve exit point and exit program information" />
<meta name="abstract" content="This program retrieves exit point and exit program information. After retrieving the exit point information, the program calls each, exit program. The Retrieve Exit Information API returns a continuation handle when it has more information to return than what fits in the receiver variable." />
<meta name="description" content="This program retrieves exit point and exit program information. After retrieving the exit point information, the program calls each, exit program. The Retrieve Exit Information API returns a continuation handle when it has more information to return than what fits in the receiver variable." />
<meta name="DC.Relation" scheme="URI" content="ileScenario.htm" />
<meta name="DC.Relation" scheme="URI" content="conContinuation.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="ileRetrieveILERPG" />
<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 ILE RPG: Retrieve exit point and exit program information</title>
</head>
<body id="ileRetrieveILERPG"><a name="ileRetrieveILERPG"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">Example in ILE RPG: Retrieve exit point and exit program information</h1>
<div><p>This program retrieves exit point and exit program information.
After retrieving the exit point information, the program calls each, exit
program. The Retrieve Exit Information API returns a continuation handle when
it has more information to return than what fits in the receiver variable.</p>
<div class="section"><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: Retrieve Exit Point and Exit Program Information
F*
F* Language: ILE RPG
F*
F* Description: This program retrieves exit point and exit
F* program information. After retrieving the
F* exit point information, the program calls each ,
F* exit program.
F*
F* APIs Used: QusRetrieveExitInformation - Retrieve Exit
F* Information
F*
F***************************************************************
F***************************************************************
F*
FQPRINT O F 132 PRINTER OFLIND(*INOF) USROPN
D*
D* The following QUSREG include from QSYSINC is copied into
D* this program so that the data structures can be declared as
D* BASED.
D*
D*** START HEADER FILE SPECIFICATIONS ****************************
D*
D*Header File Name: H/QUSREG
D*
D*Descriptive Name: Standard Registration Structures.
D*
D*5763-SS1 (C) Copyright IBM Corp. 1994,1994
D*All rights reserved.
D*US Government Users Restricted Rights -
D*Use, duplication or disclosure restricted
D*by GSA ADP Schedule Contract with IBM Corp.
D*
D*Licensed Materials-Property of IBM
D*
D*
D*Description: All of the structures that are used in the
D* Registration facilities are kept here to avoid
D* conflict due to repetition.
D*
D*Header Files Included: None.
D*
D*Macros List: None.
D*
D*Structure List: Qus_Prep_Exit_t
D* Qus_Qmff_t
D* Qus_Selcrtr_t
D* Qus_Select_Entry_t
D* Qus_Program_Data_t
D* Qus_EXTI0100_t
D* Qus_EXTI0100_Entry_t
D* Qus_EXTI0200_t
D* Qus_EXTI0200_Entry_t
D* Qus_EXTI0300_t
D* Qus_EXTI0300_Entry_t
D*
D*Function Prototype List: none.
D*
D*Change Activity:
D*
D*CFD List:
D*
D*FLAG REASON LEVEL DATE PGMR CHANGE DESCRIPTION
D*---- ------------ ----- ------ --------- ----------------------
D*$A0= D2862000 3D10 940327 LUPA: New Include
D*
D*End CFD List.
D*
D*Additional notes about the Change Activity
D*End Change Activity.
D*** END HEADER FILE SPECIFICATIONS ******************************
D*****************************************************************
D*Format structure for the Preprocessing Exit Program Format for
D*QusRegisterExitPoint API.
D*****************************************************************
DQUSPE DS
D* Qus Prep Exit
D QUSPPN 1 10
D* Prep Prog Name
D QUSPPLIB 11 20
D* Prep Prog Library
D QUSPPF 21 28
D* Prep Prog Format
D*****************************************************************
D*Format structure for the Qualified Message File Format for the
D*entire service program.
D*****************************************************************
DQUSQMFF DS
D* Qus Qmff
D QUSMFIL 1 10
D* Message File
D QUSMLIB 11 20
D* Message Library
D QUSMI 21 27
D* Message Id
D*****************************************************************
D*Format structure for the Exit Program Selection Criteria of the
D*QusRetrieveExitInformation API.
D**** ***
D*NOTE: This structure only defines fixed fields. Any varying
D* length or repeating field will have to be defined by
D* the user.
D*****************************************************************
DQUSSE DS
D* Qus Select Entry
D QUSSE00 1 4B 0
D* Size Entry
D QUSCO 5 8B 0
D* Comp Operator
D QUSSPD 9 12B 0
D* Start Pgm Data
D QUSLCD 13 16B 0
D* Length Comp Data
D*QUSCD 17 17
D*
D* Varying length
DQUSS DS
D* Qus Selcrtr
D QUSNBRSC 1 4B 0
D* Number Sel Criteria
D*QUSARRAY 17 DIM(00001)
D* QUSSE01 9B 0 OVERLAY(QUSARRAY:00001)
D* QUSCO00 9B 0 OVERLAY(QUSARRAY:00005)
D* QUSSPD00 9B 0 OVERLAY(QUSARRAY:00009)
D* QUSLCD00 9B 0 OVERLAY(QUSARRAY:00013)
D* QUSCD00 1 OVERLAY(QUSARRAY:00017)
D*
D* Varying length
D*****************************************************************
D*Format Structure for the Program Data. This structure has
D*set up to facilitate COBOL and RPG pointer basing.
D*****************************************************************
DQUSPGMD DS
D* Qus Program Data
D QUSDATA01 1 1
D* Varying length
D*****************************************************************
D*Format structure for the EXTI0100 Format for the
D*QusRetrieveExitInformation API.
D**** ***
D*NOTE: This structure only defines fixed fields. Any varying
D* length or repeating field will have to be defined by
D* the user.
D*****************************************************************
DQUS0100E DS BASED(INFSPCPTR)
D* Qus EXTI0100 Entry
D QUSEPN00 1 20
D* Exit Point Name
D QUSFN08 21 28
D* Format Name
D QUSMEP 29 32B 0
D* Max Exit Programs
D QUSNBREP 33 36B 0
D* Number Exit Programs
D QUSAD 37 37
D* Allow Deregistration
D QUSACC 38 38
D* Allow Change Control
D QUSREP 39 39
D* Registered Exit Point
D QUSPNAP 40 49
D* Prep Name Add Pgm
D QUSPLAP 50 59
D* Prep Lib Add Pgm
D QUSPFA 60 67
D* Prep Format Add
D QUSPNRP 68 77
D* Prep Name Rmv Pgm
D QUSPLRP 78 87
D* Prep Lib Rmv Pgm
D QUSPFR 88 95
D* Prep Format Rmv
D QUSPNRI 96 105
D* Prep Name Rtv Info
D QUSPLRI 106 115
D* Prep Lib Rtv Info
D QUSPFR00 116 123
D* Prep Format Rtv
D QUSDI 124 124
D* Desc Indicator
D QUSDMFIL 125 134
D* Desc Msg File
D QUSDMLIB 135 144
D* Desc Msg Library
D QUSDMI 145 151
D* Desc Msg Id
D QUSTD 152 201
D* Text Description
D*QUSERVED03 202 202
D*
D* Varying length
DQUSI0100 DS BASED(BASSPCPTR)
D* Qus EXTI0100
D QUSBRTN 1 4B 0
D* Bytes Returned
D QUSBAVL00 5 8B 0
D* Bytes Available
D QUSCH 9 24
D* Continue Handle
D QUSOEPE 25 28B 0
D* Offset Exit Point Entry
D QUSNBRPR 29 32B 0
D* Number Points Returned
D QUSLEPE 33 36B 0
D* Length Exit Point Entry
D*QUSERVED04 37 37
D*
D* Varying length
D*QUSARRAY00 202 DIM(00001)
D* QUSEPN01 20 OVERLAY(QUSARRAY00:00001)
D* QUSFN09 8 OVERLAY(QUSARRAY00:00021)
D* QUSMEP00 9B 0 OVERLAY(QUSARRAY00:00029)
D* QUSNBREP00 9B 0 OVERLAY(QUSARRAY00:00033)
D* QUSAD00 1 OVERLAY(QUSARRAY00:00037)
D* QUSACC00 1 OVERLAY(QUSARRAY00:00038)
D* QUSREP00 1 OVERLAY(QUSARRAY00:00039)
D* QUSPNAP00 10 OVERLAY(QUSARRAY00:00040)
D* QUSPLAP00 10 OVERLAY(QUSARRAY00:00050)
D* QUSPFA00 8 OVERLAY(QUSARRAY00:00060)
D* QUSPNRP00 10 OVERLAY(QUSARRAY00:00068)
D* QUSPLRP00 10 OVERLAY(QUSARRAY00:00078)
D* QUSPFR01 8 OVERLAY(QUSARRAY00:00088)
D* QUSPNRI00 10 OVERLAY(QUSARRAY00:00096)
D* QUSPLRI00 10 OVERLAY(QUSARRAY00:00106)
D* QUSPFR02 8 OVERLAY(QUSARRAY00:00116)
D* QUSDI00 1 OVERLAY(QUSARRAY00:00124)
D* QUSDMFIL00 10 OVERLAY(QUSARRAY00:00125)
D* QUSDMLIB00 10 OVERLAY(QUSARRAY00:00135)
D* QUSDMI00 7 OVERLAY(QUSARRAY00:00145)
D* QUSTD00 50 OVERLAY(QUSARRAY00:00152)
D* QUSERVED05 1 OVERLAY(QUSARRAY00:00202)
D*
D* Varying length
D*****************************************************************
D*Format structure for the EXTI0200 Format for the
D*QusRetrieveExitInformation API.
D**** ***
D*NOTE: This structure only defines fixed fields. Any varying
D* length or repeating field will have to be defined by
D* the user.
D*****************************************************************
DQUS0200E DS BASED(INFSPCPTR)
D* Qus EXTI0200 Entry
D QUSONE 1 4B 0
D* Offset Next Entry
D QUSEPN02 5 24
D* Exit Point Name
D QUSFN10 25 32
D* Format Name
D QUSREP01 33 33
D* Registered Exit Pt
D QUSCE 34 34
D* Complete Entry
D QUSERVED06 35 36
D* Reserved
D QUSPGMN 37 40B 0
D* Program Number
D QUSPGMN00 41 50
D* Program Name
D QUSPGML 51 60
D* Program Library
D QUSDC 61 64B 0
D* Data CCSID
D QUSOED 65 68B 0
D* Offset Exit Data
D QUSLED 69 72B 0
D* Length Exit Data
D*QUSERVED06 73 73
D*
D* Varying length
D*QUSPD 1
D* QUSDATA02 74 74
D*
D* Varying length
DQUSI0200 DS BASED(BASSPCPTR)
D* Qus EXTI0200
D QUSBRTN00 1 4B 0
D* Bytes Returned
D QUSBAVL01 5 8B 0
D* Bytes Available
D QUSCH00 9 24
D* Continue Handle
D QUSOPGME 25 28B 0
D* Offset Program Entry
D QUSNBRPR00 29 32B 0
D* Number Programs Returned
D QUSLPGME 33 36B 0
D* Length Program Entry
D*QUSERVED07 37 37
D*
D* Varying length
D*QUSARRAY01 74 DIM(00001)
D* QUSONE00 9B 0 OVERLAY(QUSARRAY01:00001)
D* QUSEPN03 20 OVERLAY(QUSARRAY01:00005)
D* QUSFN11 8 OVERLAY(QUSARRAY01:00025)
D* QUSREP02 1 OVERLAY(QUSARRAY01:00033)
D* QUSCE00 1 OVERLAY(QUSARRAY01:00034)
D* QUSERVED08 2 OVERLAY(QUSARRAY01:00035)
D* QUSPGMN01 9B 0 OVERLAY(QUSARRAY01:00037)
D* QUSPGMN02 10 OVERLAY(QUSARRAY01:00041)
D* QUSPGML00 10 OVERLAY(QUSARRAY01:00051)
D* QUSDC00 9B 0 OVERLAY(QUSARRAY01:00061)
D* QUSOED00 9B 0 OVERLAY(QUSARRAY01:00065)
D* QUSLED00 9B 0 OVERLAY(QUSARRAY01:00069)
D* QUSERVED08 1 OVERLAY(QUSARRAY01:00073)
D* QUSPD00 1
D* QUSDATA03 1 OVERLAY(QUSARRAY01:00001)
D*
D* Varying length
D*****************************************************************
D*Format structure for the EXTI0300 Format for the
D*QusRetrieveExitInformation API.
D**** ***
D*NOTE: This structure only defines fixed fields. Any varying
D* length or repeating field will have to be defined by
D* the user.
D*****************************************************************
DQUS0300E DS
D* Qus EXTI0300 Entry
D QUSONE01 1 4B 0
D* Offset Next Entry
D QUSEPN04 5 24
D* Exit Point Name
D QUSFN12 25 32
D* Format Name
D QUSREP03 33 33
D* Registered Exit Point
D QUSCE01 34 34
D* Complete Entry
D QUSERVED09 35 36
D* Reserved
D QUSPGMN03 37 40B 0
D* Program Number
D QUSPGMN04 41 50
D* Program Name
D QUSPGML01 51 60
D* Program Library
D QUSDI01 61 61
D* Desc Indicator
D QUSMFIL00 62 71
D* Message File
D QUSMFILL 72 81
D* Message File Library
D QUSMI00 82 88
D* Message Id
D QUSTD01 89 138
D* Text Desc
D QUSRSV201 139 140
D* Reserved2
D QUSDC01 141 144B 0
D* Data CCSID
D QUSOPD 145 148B 0
D* Offset Pgm Data
D QUSLPD 149 152B 0
D* Length Pgm Data
D*QUSERVED09 153 153
D*
D* Varying length
D*QUSPD01 1
D* QUSDATA04 154 154
D*
D* Varying length
DQUSI0300 DS
D* Qus EXTI0300
D QUSBRTN01 1 4B 0
D* Bytes Returned
D QUSBAVL02 5 8B 0
D* Bytes Available
D QUSCH01 9 24
D* Continue Handle
D QUSOPGME00 25 28B 0
D* Offset Program Entry
D QUSNBRPR01 29 32B 0
D* Number Programs Returned
D QUSLPGME00 33 36B 0
D* Length Program Entry
D*QUSERVED10 37 37
D*
D* Varying length
D*QUSARRAY02 154 DIM(00001)
D* QUSONE02 9B 0 OVERLAY(QUSARRAY02:00001)
D* QUSEPN05 20 OVERLAY(QUSARRAY02:00005)
D* QUSFN13 8 OVERLAY(QUSARRAY02:00025)
D* QUSREP04 1 OVERLAY(QUSARRAY02:00033)
D* QUSCE02 1 OVERLAY(QUSARRAY02:00034)
D* QUSERVED11 2 OVERLAY(QUSARRAY02:00035)
D* QUSPGMN05 9B 0 OVERLAY(QUSARRAY02:00037)
D* QUSPGMN06 10 OVERLAY(QUSARRAY02:00041)
D* QUSPGML02 10 OVERLAY(QUSARRAY02:00051)
D* QUSDI02 1 OVERLAY(QUSARRAY02:00061)
D* QUSMFIL01 10 OVERLAY(QUSARRAY02:00062)
D* QUSMFILL00 10 OVERLAY(QUSARRAY02:00072)
D* QUSMI01 7 OVERLAY(QUSARRAY02:00082)
D* QUSTD02 50 OVERLAY(QUSARRAY02:00089)
D* QUSRSV202 2 OVERLAY(QUSARRAY02:00139)
D* QUSDC02 9B 0 OVERLAY(QUSARRAY02:00141)
D* QUSOPD00 9B 0 OVERLAY(QUSARRAY02:00145)
D* QUSLPD00 9B 0 OVERLAY(QUSARRAY02:00149)
D* QUSERVED11 1 OVERLAY(QUSARRAY02:00153)
D* QUSPD02 1
D* QUSDATA05 1 OVERLAY(QUSARRAY02:00001)
D*
D* Varying length
D*
D* Error Code parameter include. As this sample program
D* uses /COPY to include the error code structure, only the first
D* 16 bytes of the error code structure are available. If the
D* application program needs to access the variable length
D* exception data for the error, the developer should physically
D* copy the QSYSINC include and modify the copied include to
D* define additional storage for the exception data.
D*
D/COPY QSYSINC/QRPGLESRC,QUSEC
D*
D*****************************************************************
D*Prototype for calling Retrieve Exit Information
D*****************************************************************
D QUSREI C 'QusRetrieveExitInformation'
D*
D* Miscellaneous data
D*
DEPNTNAME S 20 INZ('EXAMPLE_EXIT_POINT')
DEPGM_NBR S 9B 0 INZ(-1)
DRCVVAR S 1 DIM(3500)
DRCVVAR_SZ S 9B 0 INZ(%SIZE(RCVVAR:*ALL))
DBASSPCPTR S *
DINFSPCPTR S *
DCALL_PGM S 21
C*
C* Beginning of mainline
C*
C* Retrieve the exit point information first. If the current
C* number of exit programs is not zero, retrieve the exit
C* programs. It is not necessary to call for the exit point
C* information to determine if the exit point has any exit
C* programs. It is done here for illustrative purposes only.
C* You can make one call to the API for the exit program
C* information and check the number of exit program entries
C* returned field to see if there are any exit programs to call.
C*
C* Initialize the error code to inform the API that all
C* exceptions should be returned through the error code parameter.
C*
C EVAL QUSBPRV = %SIZE(QUSEC)
C*
C* Blank out the continuation handle to let the API know that this
C* is a first attempt at the retrieve operation.
C*
C MOVE *BLANKS CONTIN_HDL 16
C*
C* Call the API to retrieve the exit programs
C*
C CALLB QUSREI
C PARM CONTIN_HDL
C PARM RCVVAR
C PARM RCVVAR_SZ
C PARM 'EXTI0100' FORMAT 8
C PARM EPNTNAME
C PARM 'EXMP0100' EPNT_FMT 8
C PARM EPGM_NBR
C PARM 0 QUSNBRSC
C PARM QUSEC
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 IF QUSBAVL &gt; 0
C OPEN QPRINT
C EXCEPT ERRAEPNT
C EXSR DONE
C ENDIF
C*
C* If the call to retrieve exit point information is successful,
C* check to see if there are any exit programs to call.
C*
C EVAL BASSPCPTR = %ADDR(RCVVAR)
C IF QUSNBRPR &gt; 0
C EVAL INFSPCPTR = %ADDR(RCVVAR(QUSOEPE+1))
C IF QUSNBREP &gt; 0
C*
C* There are some exit programs to call. Blank out the continuation
C* handle to let the API know that this is a first attempt at the
C* retrieve operation.
C*
C EVAL CONTIN_HDL = *BLANKS
C*
C* Call the exit programs
C*
C EXSR CUSREI
C*
C* If the continuation handle field in the receiver variable is
C* not set to blanks, the API has more information to return than
C* what could fit in the receiver variable. Call the API for
C* more exit programs to call.
C*
C DOW QUSCH00 &lt;&gt; *BLANKS
C EVAL CONTIN_HDL = QUSCH00
C EXSR CUSREI
C ENDDO
C ENDIF
C ENDIF
C EXSR DONE
C*
C* End of MAINLINE
C*
C* Process exit programs in receiver variable
C*
C CUSREI BEGSR
C*
C* Call the API to retrieve the exit program information
C*
C CALLB QUSREI
C PARM CONTIN_HDL
C PARM RCVVAR
C PARM RCVVAR_SZ
C PARM 'EXTI0200' FORMAT 8
C PARM EPNTNAME
C PARM 'EXMP0100' EPNT_FMT 8
C PARM EPGM_NBR
C PARM 0 QUSNBRSC
C PARM QUSEC
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 IF QUSBAVL &gt; 0
C OPEN QPRINT
C EXCEPT ERRAEPGM
C EXSR DONE
C ENDIF
C*
C* If the call to retrieve exit program information is successful,
C* check to see if there are any exit programs to call.
C*
C* The receiver variable offers enough room for a minimum of one
C* exit program entry because the receiver variable was declared
C* as 3500 bytes. Therefore, this example only checks the
C* number of exit programs returned field. If the receiver
C* variable were not large enough to hold at least one entry,
C* the bytes available field would need to be checked as well as
C* the number of exit programs returned field. If the number of
C* exit programs returned field is set to zero and the bytes
C* available field is greater than the bytes returned field, the
C* API had at least one exit program entry to return but was
C* unable to because the receiver variable was too small.
C*
C EVAL INFSPCPTR = %ADDR(RCVVAR(QUSOPGME+1))
C DO QUSNBRPR00
C*
C* Get the exit program name and library
C*
C EVAL CALL_PGM = %TRIMR(QUSPGML) +
C '/' + QUSPGMN00
C*
C* Call the exit program while ignoring failures on the call
C*
C CALL CALL_PGM 01
C PARM EXIT_PARMS 10
C*
C* Set INFSPCPTR to point to the next exit program entry
C*
C EVAL INFSPCPTR = %ADDR(RCVVAR(QUSONE+1))
C ENDDO
C ENDSR
C*
C* Return to programs caller
C DONE BEGSR
C EVAL *INLR = '1'
C RETURN
C ENDSR
O*
OQPRINT E ERRAEPNT 1 6
O 'Attempt to retrieve infor-
O mation failed: '
O QUSEI
OQPRINT E ERRAEPGM 1 6
O 'Attempt to retrieve Exit -
O Programs failed: '
O QUSEI</pre>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="ileScenario.htm" title="The example APIs in this section represent two general functions of APIs--change and retrieve.">Scenario: Integrated Language Environment (ILE) APIs</a></div>
</div>
<div class="reltasks"><strong>Related tasks</strong><br />
<div><a href="conContinuation.htm" title="Some APIs that return information offer a continuation handle.">Continuation handle</a></div>
</div>
</div>
</body>
</html>