345 lines
14 KiB
HTML
345 lines
14 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 COBOL: List Object API" />
|
||
|
<meta name="abstract" content="The example program prints a report that shows all objects that adopt owner authority." />
|
||
|
<meta name="description" content="The example program prints a report that shows all objects that adopt owner authority." />
|
||
|
<meta name="DC.Relation" scheme="URI" content="listOverview.htm" />
|
||
|
<meta name="DC.Relation" scheme="URI" content="listRPG.htm" />
|
||
|
<meta name="DC.Relation" scheme="URI" content="listRPG.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="listCOBOL" />
|
||
|
<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 COBOL: List Object API</title>
|
||
|
</head>
|
||
|
<body id="listCOBOL"><a name="listCOBOL"><!-- --></a>
|
||
|
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
|
||
|
<h1 class="topictitle1">Example in ILE COBOL: List Object API</h1>
|
||
|
<div><p>The example program prints a report that shows all objects that
|
||
|
adopt owner authority.</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>
|
||
|
<p>Refer to Example in RPG: List Object
|
||
|
API for the original example. The following program also works for OPM COBOL.</p>
|
||
|
<pre> IDENTIFICATION DIVISION.
|
||
|
***************************************************************
|
||
|
***************************************************************
|
||
|
*
|
||
|
* Program: List objects that adopt owner authority
|
||
|
*
|
||
|
* Language: COBOL
|
||
|
*
|
||
|
* Description: This program prints a report showing all objects
|
||
|
* that adopt owner authority. The two parameters
|
||
|
* passed to the program are the profile to be
|
||
|
* checked and the type of objects to be listed.
|
||
|
* The parameter values are the same as those
|
||
|
* accepted by the QSYLOBJP API.
|
||
|
*
|
||
|
* APIs Used: QSYLOBJP - List Objects that Adopt Owner Authority
|
||
|
* QUSCRTUS - Create User Space
|
||
|
* QUSPTRUS - Retrieve Pointer to User Space
|
||
|
* QUSROBJD - Retrieve Object Description
|
||
|
*
|
||
|
***************************************************************
|
||
|
***************************************************************
|
||
|
*
|
||
|
PROGRAM-ID. LISTADOPT.
|
||
|
ENVIRONMENT DIVISION.
|
||
|
CONFIGURATION SECTION.
|
||
|
SOURCE-COMPUTER. IBM-AS400.
|
||
|
OBJECT-COMPUTER. IBM-AS400.
|
||
|
INPUT-OUTPUT SECTION.
|
||
|
FILE-CONTROL.
|
||
|
SELECT LISTING ASSIGN TO PRINTER-QPRINT
|
||
|
ORGANIZATION IS SEQUENTIAL.
|
||
|
DATA DIVISION.
|
||
|
FILE SECTION.
|
||
|
FD LISTING RECORD CONTAINS 132 CHARACTERS
|
||
|
LABEL RECORDS ARE STANDARD
|
||
|
DATA RECORD IS LIST-LINE.
|
||
|
01 LIST-LINE PIC X(132).
|
||
|
*
|
||
|
WORKING-STORAGE SECTION.
|
||
|
*
|
||
|
* Error Code parameter include. As this sample program
|
||
|
* uses COPY to include the error code structure, only the first
|
||
|
* 16 bytes of the error code structure are available. If the
|
||
|
* application program needs to access the variable length
|
||
|
* exception data for the error, the developer should physically
|
||
|
* copy the QSYSINC include and modify the copied include to
|
||
|
* define additional storage for the exception data.
|
||
|
*
|
||
|
COPY QUSEC OF QSYSINC-QLBLSRC.
|
||
|
*
|
||
|
* Listing text
|
||
|
*
|
||
|
01 OBJ-ENTRY.
|
||
|
05 OBJECT.
|
||
|
09 TEXT1 PIC X(08) VALUE "Object: ".
|
||
|
09 NAME PIC X(10).
|
||
|
09 TEXT2 PIC X(10) VALUE " Library: ".
|
||
|
09 LIBRARY PIC X(10).
|
||
|
05 TEXT3 PIC X(07) VALUE " Type: ".
|
||
|
05 OBJECT-TYPE PIC X(10).
|
||
|
05 TEXT4 PIC X(07) VALUE " Text: ".
|
||
|
05 OBJECT-TEXT PIC X(50).
|
||
|
01 END-LIST.
|
||
|
05 TEXT1 PIC X(15) VALUE "*** End of List".
|
||
|
*
|
||
|
01 MISC.
|
||
|
05 SPC-NAME PIC X(20) VALUE "ADOPTS QTEMP ".
|
||
|
05 SPC-SIZE PIC S9(09) VALUE 1 BINARY.
|
||
|
05 SPC-INIT PIC X(01) VALUE X"00".
|
||
|
05 SPCPTR POINTER.
|
||
|
05 RCVVAR PIC X(08).
|
||
|
05 RCVVARSIZ PIC S9(09) VALUE 8 BINARY.
|
||
|
05 LST-STATUS PIC X(01).
|
||
|
05 MBR-LIST PIC X(08) VALUE "OBJP0200".
|
||
|
05 CONTIN-HDL PIC X(20).
|
||
|
05 APINAM PIC X(10).
|
||
|
05 ROBJD-FMT PIC X(08) VALUE "OBJD0100".
|
||
|
05 SPC-TYPE PIC X(10) VALUE "*USRSPC".
|
||
|
05 EXT-ATTR PIC X(10) VALUE "QSYLOBJP".
|
||
|
05 SPC-AUT PIC X(10) VALUE "*ALL".
|
||
|
05 SPC-TEXT PIC X(50).
|
||
|
05 SPC-REPLAC PIC X(10) VALUE "*YES".
|
||
|
05 SPC-DOMAIN PIC X(10) VALUE "*USER".
|
||
|
*
|
||
|
LINKAGE SECTION.
|
||
|
*
|
||
|
* Input parameters.
|
||
|
*
|
||
|
01 USR-PRF PIC X(10).
|
||
|
01 OBJ-TYPE PIC X(10).
|
||
|
*
|
||
|
* String to map User Space offsets into
|
||
|
*
|
||
|
01 STRING-SPACE PIC X(32000).
|
||
|
*
|
||
|
* User Space Generic Header include. These includes will be
|
||
|
* mapped over a User Space.
|
||
|
*
|
||
|
COPY QUSGEN OF QSYSINC-QLBLSRC.
|
||
|
*
|
||
|
* List Objects that Adopt API include. These includes will be
|
||
|
* mapped over a User Space.
|
||
|
*
|
||
|
COPY QSYLOBJP OF QSYSINC-QLBLSRC.
|
||
|
*
|
||
|
* Beginning of mainline
|
||
|
*
|
||
|
PROCEDURE DIVISION USING USR-PRF, OBJ-TYPE.
|
||
|
MAIN-LINE.
|
||
|
PERFORM INIT.
|
||
|
PERFORM PROCES.
|
||
|
PERFORM DONE.
|
||
|
*
|
||
|
* Start of subroutines
|
||
|
*
|
||
|
*****************************************************************
|
||
|
PROCES.
|
||
|
*
|
||
|
* Do until the list is complete
|
||
|
*
|
||
|
MOVE INFORMATION-STATUS OF QUS-GENERIC-HEADER-0100 TO
|
||
|
LST-STATUS.
|
||
|
*
|
||
|
PERFORM PROCES1 WITH TEST AFTER UNTIL LST-STATUS = "C".
|
||
|
*
|
||
|
PROCES1.
|
||
|
*
|
||
|
* This subroutine processes each entry returned by QSYLOBJP
|
||
|
*
|
||
|
*
|
||
|
* If valid information was returned
|
||
|
*
|
||
|
IF (INFORMATION-STATUS OF QUS-GENERIC-HEADER-0100 = "C"
|
||
|
OR INFORMATION-STATUS OF QUS-GENERIC-HEADER-0100 = "P")
|
||
|
IF NUMBER-LIST-ENTRIES OF QUS-GENERIC-HEADER-0100 > 0
|
||
|
*
|
||
|
* increment to the first list entry
|
||
|
*
|
||
|
SET ADDRESS OF QSY-OBJP0200-LIST TO
|
||
|
ADDRESS OF STRING-SPACE(
|
||
|
(OFFSET-LIST-DATA OF QUS-GENERIC-HEADER-0100 + 1):1), <span class="uicontrol">(5)</span>
|
||
|
SET ADDRESS OF STRING-SPACE TO ADDRESS OF
|
||
|
QSY-OBJP0200-LIST,
|
||
|
*
|
||
|
* and process all of the entries
|
||
|
*
|
||
|
PERFORM PROCES2
|
||
|
NUMBER-LIST-ENTRIES OF QUS-GENERIC-HEADER-0100 TIMES, <span class="uicontrol">(6)</span>
|
||
|
*
|
||
|
* If all entries in this User Space have been processed, check
|
||
|
* if more entries exist than can fit in one User Space
|
||
|
*
|
||
|
IF INFORMATION-STATUS OF QUS-GENERIC-HEADER-0100 = "P"
|
||
|
*
|
||
|
* by addressing the input parameter header
|
||
|
*
|
||
|
SET ADDRESS OF STRING-SPACE TO SPCPTR,
|
||
|
SET ADDRESS OF QSY-OBJP-INPUT TO
|
||
|
ADDRESS OF STRING-SPACE((OFFSET-INPUT-PARAMETER
|
||
|
OF QUS-GENERIC-HEADER-0100 + 1):1),
|
||
|
*
|
||
|
* If the continuation handle in the Input Parameter Header is
|
||
|
* blank, then set the List status to Complete
|
||
|
*
|
||
|
IF CONTINUATION-HANDLE OF QSY-OBJP-INPUT = SPACES
|
||
|
MOVE "C" TO LST-STATUS
|
||
|
ELSE
|
||
|
*
|
||
|
* Else, call QSYLOBJP reusing the User Space to get more
|
||
|
* List entries
|
||
|
*
|
||
|
MOVE CONTINUATION-HANDLE OF QSY-OBJP-INPUT
|
||
|
TO CONTIN-HDL OF MISC, <span class="uicontrol">(2)</span>
|
||
|
PERFORM GETLST,
|
||
|
MOVE INFORMATION-STATUS OF QUS-GENERIC-HEADER-0100
|
||
|
TO LST-STATUS,
|
||
|
END-IF,
|
||
|
END-IF,
|
||
|
END-IF,
|
||
|
ELSE
|
||
|
*
|
||
|
* And if an unexpected status, log an error (not shown) and exit
|
||
|
*
|
||
|
PERFORM DONE,
|
||
|
END-IF.
|
||
|
*
|
||
|
PROCES2.
|
||
|
MOVE CORRESPONDING QSY-OBJP0200-LIST TO OBJ-ENTRY.
|
||
|
WRITE LIST-LINE FROM OBJ-ENTRY.
|
||
|
*
|
||
|
* after each entry, increment to the next entry
|
||
|
*
|
||
|
SET ADDRESS OF QSY-OBJP0200-LIST TO ADDRESS OF
|
||
|
STRING-SPACE(
|
||
|
(SIZE-EACH-ENTRY OF QUS-GENERIC-HEADER-0100 + 1):1). <span class="uicontrol">(7)</span>
|
||
|
SET ADDRESS OF STRING-SPACE TO ADDRESS OF QSY-OBJP0200-LIST.
|
||
|
*****************************************************************
|
||
|
GETLST.
|
||
|
*
|
||
|
* Call QSYLOBJP to generate a list
|
||
|
* The continuation handle is set by the caller of this
|
||
|
* subroutine.
|
||
|
MOVE "OBJP0200" TO MBR-LIST.
|
||
|
*
|
||
|
CALL "QSYLOBJP" USING SPC-NAME, MBR-LIST, USR-PRF,
|
||
|
OBJ-TYPE, CONTIN-HDL, QUS-EC. <span class="uicontrol">(3)</span>
|
||
|
*
|
||
|
* Check for errors on QSYLOBJP
|
||
|
*
|
||
|
IF BYTES-AVAILABLE OF QUS-EC > 0
|
||
|
MOVE "QSYLOBJP" TO APINAM,
|
||
|
PERFORM APIERR.
|
||
|
*****************************************************************
|
||
|
INIT.
|
||
|
*
|
||
|
* One time initialization code for this program
|
||
|
*
|
||
|
* Open LISTING file
|
||
|
*
|
||
|
OPEN OUTPUT LISTING.
|
||
|
*
|
||
|
* Set Error Code structure to not use exceptions
|
||
|
*
|
||
|
MOVE LENGTH OF QUS-EC TO BYTES-PROVIDED OF QUS-EC.
|
||
|
*
|
||
|
* Check to see if the User Space was previously created in
|
||
|
* QTEMP. If it was, simply reuse it.
|
||
|
*
|
||
|
CALL "QUSROBJD" USING RCVVAR, RCVVARSIZ, ROBJD-FMT,
|
||
|
SPC-NAME, SPC-TYPE, QUS-EC.
|
||
|
*
|
||
|
* Check for errors on QUSROBJD
|
||
|
*
|
||
|
IF BYTES-AVAILABLE OF QUS-EC > 0
|
||
|
*
|
||
|
* If CPF9801, then User Space was not found
|
||
|
*
|
||
|
IF EXCEPTION-ID OF QUS-EC = "CPF9801"
|
||
|
*
|
||
|
* So create a User Space for the List generated by QSYLOBJP
|
||
|
*
|
||
|
CALL "QUSCRTUS" USING SPC-NAME, EXT-ATTR, SPC-SIZE,
|
||
|
SPC-INIT, SPC-AUT, SPC-TEXT,
|
||
|
SPC-REPLAC, QUS-EC, SPC-DOMAIN
|
||
|
*
|
||
|
* Check for errors on QUSCRTUS
|
||
|
*
|
||
|
IF BYTES-AVAILABLE OF QUS-EC > 0
|
||
|
MOVE "QUSCRTUS" TO APINAM,
|
||
|
PERFORM APIERR,
|
||
|
ELSE
|
||
|
CONTINUE,
|
||
|
ELSE
|
||
|
*
|
||
|
* Else, an error occurred accessing the User Space
|
||
|
*
|
||
|
MOVE "QUSROBJD" TO APINAM,
|
||
|
PERFORM APIERR.
|
||
|
*
|
||
|
* Set QSYLOBJP (via GETLST) to start a new list
|
||
|
*
|
||
|
MOVE SPACES TO CONTIN-HDL.
|
||
|
PERFORM GETLST.
|
||
|
*
|
||
|
* Get a resolved pointer to the User Space for performance
|
||
|
*
|
||
|
CALL "QUSPTRUS" USING SPC-NAME, SPCPTR, QUS-EC.
|
||
|
*
|
||
|
* Check for errors on QUSPTRUS
|
||
|
*
|
||
|
IF BYTES-AVAILABLE OF QUS-EC > 0
|
||
|
MOVE "QUSPTRUS" TO APINAM,
|
||
|
PERFORM APIERR.
|
||
|
*
|
||
|
* If no error, then set addressability to User Space
|
||
|
*
|
||
|
SET ADDRESS OF QUS-GENERIC-HEADER-0100 TO SPCPTR.
|
||
|
SET ADDRESS OF STRING-SPACE TO SPCPTR.
|
||
|
*
|
||
|
*****************************************************************
|
||
|
APIERR.
|
||
|
*
|
||
|
* Log any error encountered, and exit the program
|
||
|
*
|
||
|
DISPLAY APINAM.
|
||
|
DISPLAY EXCEPTION-ID OF QUS-EC.
|
||
|
PERFORM DONE.
|
||
|
*****************************************************************
|
||
|
DONE.
|
||
|
*
|
||
|
* Exit the program
|
||
|
*
|
||
|
WRITE LIST-LINE FROM END-LIST.
|
||
|
STOP RUN.</pre>
|
||
|
</div>
|
||
|
</div>
|
||
|
<div>
|
||
|
<div class="familylinks">
|
||
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="listOverview.htm" title="List APIs return a list unique to a given API. The section discusses the characteristics of a list API and provides information that you should be aware of when you use list APIs.">List APIs overview</a></div>
|
||
|
</div>
|
||
|
<div class="relref"><strong>Related reference</strong><br />
|
||
|
<div><a href="listRPG.htm" title="This example program prints a report that shows all objects that adopt owner authority.">Example in RPG: List Object API</a></div>
|
||
|
</div>
|
||
|
</div>
|
||
|
</body>
|
||
|
</html>
|