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

293 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: Using keys with List Spooled Files API" />
<meta name="abstract" content="This example shows the steps necessary to process keyed output from an API." />
<meta name="description" content="This example shows the steps necessary to process keyed output from an API." />
<meta name="DC.Relation" scheme="URI" content="opmScenario.htm" />
<meta name="DC.Relation" scheme="URI" content="cmnKeysRPG.htm" />
<meta name="DC.Relation" scheme="URI" content="cmnKeysRPG.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="cmnKeysCOBOL" />
<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: Using keys with List Spooled Files API</title>
</head>
<body id="cmnKeysCOBOL"><a name="cmnKeysCOBOL"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">Example in ILE COBOL: Using keys with List Spooled Files API</h1>
<div><p>This example shows the steps necessary to process
keyed output from an API.</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 OPM RPG: Using keys with List
Spooled Files API for the original example. The following program also works
for OPM COBOL.</p>
<pre> IDENTIFICATION DIVISION.
***************************************************************
***************************************************************
*
* Program: List Spooled Files for Current User
*
* Language: ILE COBOL
*
* Description: This example shows the steps necessary to
* process keyed output from an API.
*
* APIs Used: QUSLSPL - List Spooled Files
* QUSCRTUS - Create User Space
* QUSPTRUS - Retrieve Pointer to User Space
*
***************************************************************
***************************************************************
*
PROGRAM-ID. LSTSPL.
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 PRTLIN.
05 PRTFIL PIC X(10).
05 FILLER PIC X(05).
05 PAGES PIC S9(09).
05 FILLER PIC X(05).
05 OPNDAT PIC X(07).
01 LSTERR.
05 TEXT1 PIC X(22) VALUE "List data not valid".
01 HDRERR.
05 TEXT2 PIC X(22) VALUE "Unknown Generic Header".
*
01 MISC.
05 SPC-NAME PIC X(20) VALUE "SPCNAME QTEMP ".
05 SPC-SIZE PIC S9(09) VALUE 2000 BINARY. <span class="uicontrol">(2)</span>
05 SPC-INIT PIC X(01) VALUE X"00".
05 SPCPTR POINTER.
05 SPC-TYPE PIC X(10) VALUE "*USRSPC".
05 EXT-ATTR PIC X(10) VALUE "QUSLSPL ". <span class="uicontrol">(3)</span>
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".
05 LST-FORMAT-NAME PIC X(08) VALUE "SPLF0200". <span class="uicontrol">(4)</span>
05 USR-PRF PIC X(10) VALUE "*CURRENT ".
05 OUTQ PIC X(20) VALUE "*ALL".
05 FORMTYP PIC X(10) VALUE "*ALL".
05 USRDTA PIC X(10) VALUE "*ALL".
05 JOBNAM PIC X(26).
01 KEYS. <span class="uicontrol">(7)</span>
05 KEY1 PIC S9(09) BINARY VALUE 201. <span class="uicontrol">(8)</span>
05 KEY2 PIC S9(09) BINARY VALUE 216.
05 KEY3 PIC S9(09) BINARY VALUE 211.
01 NUMBER-OF-KEYS PIC S9(09) BINARY VALUE 3.
01 MISC2.
05 PAGESA PIC X(04).
05 PAGESN REDEFINES PAGESA
PIC S9(09) BINARY.
*
LINKAGE SECTION.
*
* 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. <span class="uicontrol">(11)</span>
*
* List Spool Files API include. These includes will be
* mapped over a User Space. The include is copied into the
* source so that we can define the variable length portion
* of QUS-LSPL-KEY-INFO.
*
01 QUS-LSPL-KEY-INFO.
05 LEN-FIELD-INFO-RETD PIC S9(00009) BINARY.
05 KEY-FIELD-FOR-FIELD-RETD PIC S9(00009) BINARY.
05 TYPE-OF-DATA PIC X(00001).
05 RESERV3 PIC X(00003).
05 DATA-LENGTH PIC S9(00009) BINARY.
05 DATA-FIELD PIC X(00100).
*
* Varying length
* 05 RESERVED PIC X(00001).
*
* Varying length
01 QUS-SPLF0200.
05 NUM-FIELDS-RETD PIC S9(00009) BINARY.
05 KEY-INFO.
09 LEN-FIELD-INFO-RETD PIC S9(00009) BINARY.
09 KEY-FIELD-FOR-FIELD-RETD PIC S9(00009) BINARY.
09 TYPE-OF-DATA PIC X(00001).
09 RESERV3 PIC X(00003).
09 DATA-LENGTH PIC S9(00009) BINARY.
09 DATA-FIELD PIC X(00001).
09 RESERVED PIC X(00001).
*
* Varying length
*
*
* Beginning of mainline
*
PROCEDURE DIVISION.
MAIN-LINE.
*
* Open LISTING file
*
OPEN OUTPUT LISTING.
*
* Set Error Code structure to use exceptions
*
MOVE 0 TO BYTES-PROVIDED OF QUS-EC. <span class="uicontrol">(1)</span>
*
* Create a User Space for the List generated by QUSLSPL
*
CALL "QUSCRTUS" USING SPC-NAME, EXT-ATTR, SPC-SIZE, <span class="uicontrol">(2)</span>
SPC-INIT, SPC-AUT, SPC-TEXT,
SPC-REPLAC, QUS-EC, SPC-DOMAIN
*
* Call QUSLSPL to get all spooled files for *CURRENT user
*
CALL "QUSLSPL" USING SPC-NAME, LST-FORMAT-NAME, USR-PRF, <span class="uicontrol">(3)</span> <span class="uicontrol">(4)</span>
OUTQ, FORMTYP, USRDTA, QUS-EC,
JOBNAM, KEYS, NUMBER-OF-KEYS. <span class="uicontrol">(5)</span> <span class="uicontrol">(6)</span>
*
* Get a resolved pointer to the User Space for performance
*
CALL "QUSPTRUS" USING SPC-NAME, SPCPTR, QUS-EC. <span class="uicontrol">(9)</span>
*
* If valid information was returned
*
SET ADDRESS OF QUS-GENERIC-HEADER-0100 TO SPCPTR.
IF STRUCTURE-RELEASE-LEVEL OF QUS-GENERIC-HEADER-0100 <span class="uicontrol">(12)</span>
NOT EQUAL "0100" WRITE LIST-LINE FROM HDRERR, <span class="uicontrol">(13)</span>
STOP RUN.
IF (INFORMATION-STATUS OF QUS-GENERIC-HEADER-0100 = "C" <span class="uicontrol">(14)</span>
OR INFORMATION-STATUS OF QUS-GENERIC-HEADER-0100 = "P")
AND NUMBER-LIST-ENTRIES OF QUS-GENERIC-HEADER-0100 &gt; 0 <span class="uicontrol">(16)</span>
*
* address current list entry
*
SET ADDRESS OF STRING-SPACE TO SPCPTR,
SET ADDRESS OF QUS-SPLF0200 TO
ADDRESS OF STRING-SPACE((OFFSET-LIST-DATA
OF QUS-GENERIC-HEADER-0100 + 1):1), <span class="uicontrol">(18)</span>
*
* and process all of the entries
*
PERFORM PROCES
NUMBER-LIST-ENTRIES OF QUS-GENERIC-HEADER-0100 TIMES, <span class="uicontrol">(20)</span>
ELSE
WRITE LIST-LINE FROM LSTERR. <span class="uicontrol">(15)</span>
STOP RUN. <span class="uicontrol">(28)</span>
*****************************************************************
PROCES.
*
* address the first variable length record for this entry
*
SET ADDRESS OF QUS-LSPL-KEY-INFO TO ADDRESS OF
QUS-SPLF0200(5:).
*
* process all variable length records associated with this entry
*
PERFORM PROCES2 NUM-FIELDS-RETD TIMES. <span class="uicontrol">(22)</span> <span class="uicontrol">(23)</span>
WRITE LIST-LINE FROM PRTLIN. <span class="uicontrol">(26)</span>
*
* after each entry, increment to the next entry
*
SET ADDRESS OF STRING-SPACE TO ADDRESS OF QUS-SPLF0200. <span class="uicontrol">(27)</span>
SET ADDRESS OF QUS-SPLF0200 TO ADDRESS OF STRING-SPACE
((SIZE-EACH-ENTRY OF QUS-GENERIC-HEADER-0100 + 1):1).
*
* Process each variable length record based on key
*
PROCES2.
*
* extract spooled file name for report
*
IF KEY-FIELD-FOR-FIELD-RETD OF QUS-LSPL-KEY-INFO = 201 <span class="uicontrol">(24)</span> <span class="uicontrol">(25)</span>
MOVE SPACES TO PRTFIL,
MOVE DATA-FIELD OF QUS-LSPL-KEY-INFO(
1:DATA-LENGTH OF QUS-LSPL-KEY-INFO)
TO PRTFIL.
*
* extract number of pages for report
*
IF KEY-FIELD-FOR-FIELD-RETD OF QUS-LSPL-KEY-INFO = 211 <span class="uicontrol">(24)</span> <span class="uicontrol">(25)</span>
MOVE DATA-FIELD OF QUS-LSPL-KEY-INFO(
1:DATA-LENGTH OF QUS-LSPL-KEY-INFO)
TO PAGESA,
MOVE PAGESN TO PAGES.
*
* extract age of spooled file for report
*
IF KEY-FIELD-FOR-FIELD-RETD OF QUS-LSPL-KEY-INFO = 216 <span class="uicontrol">(24)</span> <span class="uicontrol">(25)</span>
MOVE SPACES TO OPNDAT,
MOVE DATA-FIELD OF QUS-LSPL-KEY-INFO(
1:DATA-LENGTH OF QUS-LSPL-KEY-INFO)
TO OPNDAT.
*
* address next variable length entry
*
SET ADDRESS OF STRING-SPACE TO ADDRESS OF QUS-LSPL-KEY-INFO.
SET ADDRESS OF QUS-LSPL-KEY-INFO TO ADDRESS OF
STRING-SPACE(
LEN-FIELD-INFO-RETD OF QUS-LSPL-KEY-INFO + 1:1).</pre>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="opmScenario.htm" title="This scenario demonstrates the use of an original program model (OPM) API in several different programs.">Scenario: Original Program Model (OPM) API</a></div>
</div>
<div class="relref"><strong>Related reference</strong><br />
<div><a href="cmnKeysRPG.htm" title="This example shows the steps necessary to process keyed output from an API.">Example in OPM RPG: Using keys with List Spooled Files API</a></div>
</div>
</div>
</body>
</html>