497 lines
20 KiB
HTML
497 lines
20 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: Program for packaging a product" />
|
|
<meta name="abstract" content="This example shows you the steps necessary to package your product like IBM products. This program also works for OPM COBOL." />
|
|
<meta name="description" content="This example shows you the steps necessary to package your product like IBM products. This program also works for OPM COBOL." />
|
|
<meta name="DC.Relation" scheme="URI" content="ExTaskPackprog.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="expackilecobol" />
|
|
<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: Program for packaging a product</title>
|
|
</head>
|
|
<body id="expackilecobol"><a name="expackilecobol"><!-- --></a>
|
|
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
|
|
<h1 class="topictitle1">Example in ILE COBOL: Program for packaging a product</h1>
|
|
<div><p>This example shows you the steps necessary to package your product
|
|
like IBM products. This program also works for OPM COBOL.</p>
|
|
<div class="section"><pre> IDENTIFICATION DIVISION.
|
|
*****************************************************************
|
|
*****************************************************************
|
|
*
|
|
*Program Name: SFTWPRDEX
|
|
*
|
|
*Language: COBOL
|
|
*
|
|
*Descriptive Name: Software Product Example
|
|
*
|
|
*Description: This example shows you the steps necessary to
|
|
* package your product like IBM products.
|
|
*
|
|
*Header Files Included: QUSEC - Error Code Parameter
|
|
* QSZCRTPD - Create Product Definition API
|
|
* QSZCRTPL - Create Product Load API
|
|
* QSZPKGPO - Package Product Option API
|
|
*
|
|
*****************************************************************
|
|
*****************************************************************
|
|
*
|
|
PROGRAM-ID. SFTWPRDEX.
|
|
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.
|
|
*
|
|
* Create Product Definition API Include
|
|
*
|
|
COPY QSZCRTPD OF QSYSINC-QLBLSRC.
|
|
*
|
|
* Create Product Load API Include
|
|
*
|
|
COPY QSZCRTPL OF QSYSINC-QLBLSRC.
|
|
*
|
|
* Package Product Option API Include
|
|
*
|
|
COPY QSZPKGPO OF QSYSINC-QLBLSRC.
|
|
*
|
|
* Error message text
|
|
*
|
|
01 BAD-NEWS.
|
|
05 TEXT1 PIC X(14) VALUE "Failed in API ".
|
|
05 API-NAME PIC X(10).
|
|
05 TEXT2 PIC X(11) VALUE "with error ".
|
|
05 EXCEPTION-ID PIC X(07).
|
|
*
|
|
* Compile Time Array
|
|
*
|
|
01 OBJ-INFO.
|
|
05 ELEMENT-01 PIC X(41)
|
|
VALUE "ABCPGMMRM1*PGM 000050010ABCABCV3R1M0".
|
|
05 ELEMENT-02 PIC X(41)
|
|
VALUE "ABCPGMMRM2*PGM 000050010ABCABCV3R1M0".
|
|
05 ELEMENT-03 PIC X(41)
|
|
VALUE "ABCPGMMRI1*PGM 000029240ABCABCV3R1M0".
|
|
05 ELEMENT-04 PIC X(41)
|
|
VALUE "ABCPGMMRI2*PGM 000029240ABCABCV3R1M0".
|
|
05 ELEMENT-05 PIC X(41)
|
|
VALUE "ABCPGM *PGM 000050010ABCABCV3R1M0".
|
|
05 ELEMENT-06 PIC X(41)
|
|
VALUE "QCLSRC *FILE 000029240ABCABCV3R1M0".
|
|
05 ELEMENT-07 PIC X(41)
|
|
VALUE "ABCDSPF *FILE 000029240ABCABCV3R1M0".
|
|
05 ELEMENT-08 PIC X(41)
|
|
VALUE "ABCPF *FILE 000029240ABCABCV3R1M0".
|
|
05 ELEMENT-09 PIC X(41)
|
|
VALUE "ABCMSG *MSGF 000029240ABCABCV3R1M0".
|
|
05 ELEMENT-10 PIC X(41)
|
|
VALUE "ABC *CMD 000029240ABCABCV3R1M0".
|
|
05 ELEMENT-11 PIC X(41)
|
|
VALUE "ABCPNLGRP *PNLGRP 000029240ABCABCV3R1M0".
|
|
05 ELEMENT-12 PIC X(41)
|
|
VALUE "ABC0050 *PRDDFN 000050010ABCABCV3R1M0".
|
|
05 ELEMENT-13 PIC X(41)
|
|
VALUE "ABC0050 *PRDLOD 000050010ABCABCV3R1M0".
|
|
05 ELEMENT-14 PIC X(41)
|
|
VALUE "ABC0029 *PRDLOD 000029240ABCABCV3R1M0".
|
|
05 ELEMENT-15 PIC X(41)
|
|
VALUE "ABC *LIB 000050010ABCABCV3R1M0".
|
|
*
|
|
01 OBJECT-TABLE REDEFINES OBJ-INFO.
|
|
05 OBJ-INFO-I OCCURS 15 TIMES.
|
|
10 OBJ-NAME PIC X(10).
|
|
10 OBJ-TYPE PIC X(10).
|
|
10 PRD-OPT-ID PIC X(04).
|
|
10 PRD-OPT-LD PIC X(04).
|
|
10 LP-ID PIC X(13).
|
|
*
|
|
* Change Object Information parameter
|
|
*
|
|
01 COBJI.
|
|
05 NUMKEY PIC S9(09) VALUE 3 BINARY.
|
|
05 KEY13 PIC S9(09) VALUE 13 BINARY.
|
|
05 LEN13 PIC S9(09) VALUE 4 BINARY.
|
|
05 PID13 PIC X(04).
|
|
05 KEY12 PIC S9(09) VALUE 12 BINARY.
|
|
05 LEN12 PIC S9(09) VALUE 4 BINARY.
|
|
05 LID12 PIC X(04).
|
|
05 KEY5 PIC S9(09) VALUE 5 BINARY.
|
|
05 LEN5 PIC S9(09) VALUE 13 BINARY.
|
|
05 LP5 PIC X(13).
|
|
*
|
|
* Miscellaneous data
|
|
*
|
|
01 MISC.
|
|
05 FIRST-ERR PIC X(01) VALUE "0".
|
|
05 PROD-ID PIC X(07) VALUE "0ABCABC".
|
|
05 PROD-NAME PIC X(20) VALUE "ABC0050 ABC".
|
|
05 RLS-LVL PIC X(06) VALUE "V3R1M0".
|
|
05 NBR-OPTS PIC S9(09) VALUE 1 BINARY.
|
|
05 NBR-LANGS PIC S9(09) VALUE 1 BINARY.
|
|
05 TEXT-DESC PIC X(50) VALUE "ABC Product".
|
|
05 PUB-AUT PIC X(10) VALUE "*USE".
|
|
05 NBR-ADD-LB PIC S9(09) VALUE 0 BINARY.
|
|
05 NBR-PE PIC S9(09) VALUE 1 BINARY.
|
|
05 NBR-FLDRS PIC S9(09) VALUE 0 BINARY.
|
|
05 OBJNAM PIC X(20).
|
|
05 PROD-ID-NM PIC X(10).
|
|
05 SEC-LANG PIC X(10).
|
|
05 I PIC S9(09) BINARY.
|
|
05 RTN-LIB PIC X(10).
|
|
05 OBJ-TYPE-2 PIC X(10).
|
|
05 REPKG PIC X(04) VALUE "*YES".
|
|
05 ALWCHG PIC X(05) VALUE "*NO".
|
|
*
|
|
* Beginning of Mainline
|
|
*
|
|
PROCEDURE DIVISION.
|
|
MAIN-LINE.
|
|
*
|
|
* Initialize the error code parameter. To signal exceptions to
|
|
* this program by the API, you need to set the bytes provided
|
|
* field of the error code to zero. Because this program has
|
|
* exceptions sent back through the error code parameter, it sets
|
|
* the bytes provided field to the number of bytes it gives the
|
|
* API for the parameter.
|
|
*
|
|
MOVE LENGTH OF QUS-EC TO BYTES-PROVIDED OF QUS-EC.
|
|
*
|
|
* Create Product Definition Object - ABC0050
|
|
*
|
|
PERFORM PRDDFN. <span class="uicontrol">(1)</span>
|
|
*
|
|
* Create Product Load Objects - ABC0050 (MRM) and ABC0029 (MRI)
|
|
*
|
|
PERFORM PRDLOD. <span class="uicontrol">(2)</span>
|
|
*
|
|
* Change Object Description for all objects associated with
|
|
* ABC Product.
|
|
*
|
|
PERFORM COBJD. <span class="uicontrol">(3)</span>
|
|
*
|
|
* Package the ABC Product so that all the SAVLICPGM, RSTLIBPGM,
|
|
* and DLTLICPGM commands work with the product.
|
|
*
|
|
PERFORM PKGPO. <span class="uicontrol">(4)</span>
|
|
*
|
|
* All done, product is ready to ship.
|
|
*
|
|
STOP RUN.
|
|
*
|
|
* End of MAINLINE
|
|
*
|
|
*****************************************************************
|
|
*****************************************************************
|
|
*
|
|
* Subroutine: PRDDFN
|
|
*
|
|
* Descriptive Name: Create product definitions.
|
|
*
|
|
* Description: This subroutine will create the product definition
|
|
* ABC0050 for the ABC Product.
|
|
*
|
|
*****************************************************************
|
|
*****************************************************************
|
|
*
|
|
PRDDFN.
|
|
*
|
|
* Setup for Product Definition
|
|
* Fill Product Definition Information Parameter
|
|
*
|
|
MOVE PROD-ID OF MISC TO PID OF QSZ-PRD-INF.
|
|
MOVE RLS-LVL OF MISC TO RLS-LVL OF QSZ-PRD-INF.
|
|
MOVE "ABCMSG" TO MSG-FILE OF QSZ-PRD-INF.
|
|
MOVE "*CURRENT" TO FST-CPYRT OF QSZ-PRD-INF.
|
|
MOVE "*CURRENT" TO CUR-CPYRT OF QSZ-PRD-INF.
|
|
MOVE "941201" TO RLS-DATE OF QSZ-PRD-INF.
|
|
MOVE "*NO" TO ALW-MULT-RLS OF QSZ-PRD-INF.
|
|
MOVE "*PHONE" TO REG-ID-TYPE OF QSZ-PRD-INF.
|
|
MOVE "5072535010" TO REG-ID-VAL OF QSZ-PRD-INF.
|
|
*
|
|
* Fill Product Load Parameter
|
|
*
|
|
MOVE "0000" TO OPT OF QSZ-PRD-OPT.
|
|
MOVE "ABC0001" TO MSG-ID OF QSZ-PRD-OPT.
|
|
MOVE "*NODYNNAM" TO ALW-DYN-NAM OF QSZ-PRD-OPT.
|
|
MOVE "5001" TO COD-LOD OF QSZ-PRD-OPT.
|
|
MOVE SPACES TO RESERVED OF QSZ-PRD-OPT.
|
|
*
|
|
* Fill Language Load List Parameter
|
|
*
|
|
MOVE "2924" TO LNG-LOD OF QSZ-LNG-LOD.
|
|
MOVE "0000" TO OPT OF QSZ-LNG-LOD.
|
|
MOVE SPACES TO RESERVED OF QSZ-LNG-LOD.
|
|
*
|
|
* Create the Product Definition for the ABC Product
|
|
*
|
|
MOVE 1 TO NBR-OPTS.
|
|
MOVE 1 TO NBR-LANGS.
|
|
CALL "QSZCRTPD" USING PROD-NAME, QSZ-PRD-INF, QSZ-PRD-OPT,
|
|
NBR-OPTS, QSZ-LNG-LOD, NBR-LANGS,
|
|
TEXT-DESC, PUB-AUT, QUS-EC.
|
|
*
|
|
* If an exception occurs, the API returns the exception in the
|
|
* error code parameter. The bytes available field is set to
|
|
* zero if no exception occurs and greater than zero if an
|
|
* exception does occur.
|
|
*
|
|
IF BYTES-AVAILABLE OF QUS-EC > 0
|
|
MOVE "QSZCRTPD" TO API-NAME,
|
|
PERFORM ERRCOD.
|
|
*
|
|
*****************************************************************
|
|
*****************************************************************
|
|
*
|
|
* Subroutine: PRDLOD
|
|
*
|
|
* Descriptive Name: Create product loads.
|
|
*
|
|
* Description: This subroutine will create the product loads,
|
|
* ABC0050 and ABC0029, for the ABC Product.
|
|
*
|
|
*****************************************************************
|
|
*****************************************************************
|
|
*
|
|
PRDLOD.
|
|
*
|
|
* Setup for Product Load for MRM Objects
|
|
* Fill Product Load Information Parameter
|
|
*
|
|
MOVE PROD-ID OF MISC TO PID OF QSZ-LOD-INF.
|
|
MOVE RLS-LVL OF MISC TO RLS-LVL OF QSZ-LOD-INF.
|
|
MOVE "0000" TO OPT OF QSZ-LOD-INF.
|
|
MOVE "*CODE" TO LOD-TYPE OF QSZ-LOD-INF.
|
|
MOVE "*CODEDFT" TO LOD-ID OF QSZ-LOD-INF.
|
|
MOVE "*PRDDFN" TO REG-ID-TYPE OF QSZ-LOD-INF.
|
|
MOVE SPACES TO REG-ID-VAL OF QSZ-LOD-INF.
|
|
MOVE "*CURRENT" TO MIN-TGT-RLS OF QSZ-LOD-INF.
|
|
MOVE SPACES TO RESERVED OF QSZ-LOD-INF.
|
|
*
|
|
* Fill Principal Library Information Parameter
|
|
*
|
|
MOVE "ABC" TO DEV-LIB OF QSZ-LIB-INF.
|
|
MOVE "ABC" TO PRIM-LIB OF QSZ-LIB-INF.
|
|
MOVE "ABCPGMMRM2" TO POST-EXIT-PGM OF QSZ-LIB-INF.
|
|
*
|
|
* Fill Preoperation Exit Programs Parameter
|
|
*
|
|
MOVE "ABCPGMMRM1" TO PRE-EXT-PGM OF QSZ-PRE-EXT.
|
|
MOVE "ABC" TO DEV-LIB OF QSZ-PRE-EXT.
|
|
*
|
|
* Fill Additional Library List Parameter
|
|
* None
|
|
*
|
|
* Fill Folder List Parameter
|
|
* None
|
|
*
|
|
* Let's create the product load for the ABC Product - MRM Objects
|
|
*
|
|
MOVE "ABC0050" TO PROD-ID-NM.
|
|
MOVE SPACES TO SEC-LANG.
|
|
*
|
|
CALL "QSZCRTPL" USING PROD-ID-NM, QSZ-LOD-INF, SEC-LANG,
|
|
QSZ-LIB-INF, QSZ-ADD-LIB,
|
|
NBR-ADD-LB, QSZ-PRE-EXT, NBR-PE,
|
|
QSZ-FLR-LST, NBR-FLDRS, TEXT-DESC,
|
|
PUB-AUT, QUS-EC.
|
|
*
|
|
* If an exception occurs, the API returns the exception in the
|
|
* error code parameter. The bytes available field is set to
|
|
* zero if no exception occurs and greater than zero if an
|
|
* exception does occur.
|
|
*
|
|
IF BYTES-AVAILABLE OF QUS-EC > 0
|
|
MOVE "QSZCRTPL" TO API-NAME,
|
|
PERFORM ERRCOD.
|
|
*
|
|
* Setup for Product Load for MRI Objects
|
|
* Fill Product Load Information Parameter
|
|
*
|
|
MOVE "*LNG" TO LOD-TYPE OF QSZ-LOD-INF.
|
|
MOVE "2924" TO LOD-ID OF QSZ-LOD-INF.
|
|
*
|
|
* Fill Principal Library Information Parameter
|
|
*
|
|
MOVE "ABCPGMMRI2" TO POST-EXIT-PGM OF QSZ-LIB-INF.
|
|
*
|
|
* Fill Preoperation Exit Programs Parameter
|
|
*
|
|
MOVE "ABCPGMMRI1" TO PRE-EXT-PGM OF QSZ-PRE-EXT.
|
|
*
|
|
* Fill Additional Library List Parameter
|
|
* None
|
|
*
|
|
* Fill Folder List Parameter
|
|
* None
|
|
*
|
|
* Let's create the product load for the ABC Product - MRI Objects
|
|
*
|
|
MOVE "ABC0029" TO PROD-ID-NM.
|
|
MOVE "ABC2924" TO SEC-LANG.
|
|
*
|
|
CALL "QSZCRTPL" USING PROD-ID-NM, QSZ-LOD-INF, SEC-LANG,
|
|
QSZ-LIB-INF, QSZ-ADD-LIB,
|
|
NBR-ADD-LB, QSZ-PRE-EXT, NBR-PE,
|
|
QSZ-FLR-LST, NBR-FLDRS, TEXT-DESC,
|
|
PUB-AUT, QUS-EC.
|
|
*
|
|
* If an exception occurs, the API returns the exception in the
|
|
* error code parameter. The bytes available field is set to
|
|
* zero if no exception occurs and greater than zero if an
|
|
* exception does occur.
|
|
*
|
|
IF BYTES-AVAILABLE OF QUS-EC > 0
|
|
MOVE "QSZCRTPL" TO API-NAME,
|
|
PERFORM ERRCOD.
|
|
*
|
|
*****************************************************************
|
|
*****************************************************************
|
|
*
|
|
* Subroutine: COBJD
|
|
*
|
|
* Descriptive Name: Change object descriptions for ABC Product.
|
|
*
|
|
* Description: This subroutine will change the object
|
|
* descriptions for all objects that make up the
|
|
* ABC Product. Currently that is 15 objects. They
|
|
* are listed at the end of this program.
|
|
*
|
|
*****************************************************************
|
|
*****************************************************************
|
|
*
|
|
COBJD.
|
|
*
|
|
* Need to associate all objects with the ABC Product
|
|
*
|
|
PERFORM CHG-OBJD VARYING I FROM 1 BY 1 UNTIL I > 15.
|
|
*
|
|
CHG-OBJD.
|
|
STRING OBJ-NAME(I), "ABC" DELIMITED BY SIZE INTO OBJNAM.
|
|
MOVE LP-ID(I) TO LP5.
|
|
MOVE PRD-OPT-ID(I) TO PID13.
|
|
MOVE PRD-OPT-LD(I) TO LID12.
|
|
MOVE OBJ-TYPE(I) TO OBJ-TYPE-2.
|
|
*
|
|
CALL "QLICOBJD" USING RTN-LIB, OBJNAM, OBJ-TYPE-2,
|
|
COBJI, QUS-EC.
|
|
*
|
|
* If an exception occurs, the API returns the exception in the
|
|
* error code parameter. The bytes available field is set to
|
|
* zero if no exception occurs and greater than zero if an
|
|
* exception does occur.
|
|
*
|
|
IF BYTES-AVAILABLE OF QUS-EC > 0
|
|
MOVE "QLICOBJD" TO API-NAME,
|
|
PERFORM ERRCOD.
|
|
*****************************************************************
|
|
*****************************************************************
|
|
*
|
|
* Subroutine: PKGPO
|
|
*
|
|
* Descriptive Name: Package software ABC Product.
|
|
*
|
|
* Description: This subroutine will package the ABC Product.
|
|
* It makes sure that all objects exist that are
|
|
* associated with the product.
|
|
*
|
|
*****************************************************************
|
|
*****************************************************************
|
|
*
|
|
PKGPO.
|
|
*
|
|
* Setup for packing the ABC Product.
|
|
* Fill Product Option Information Parameter
|
|
*
|
|
MOVE "0000" TO OPT OF QSZ-PRD-OPT-INF.
|
|
MOVE PROD-ID OF MISC TO PID OF QSZ-PRD-OPT-INF.
|
|
MOVE RLS-LVL OF MISC TO RLS-LVL OF QSZ-PRD-OPT-INF.
|
|
MOVE "*ALL" TO LOD-ID OF QSZ-PRD-OPT-INF.
|
|
MOVE SPACES TO RESERVED OF QSZ-PRD-OPT-INF.
|
|
*
|
|
* Let's package the ABC Product.
|
|
*
|
|
CALL "QSZPKGPO" USING QSZ-PRD-OPT-INF, REPKG,
|
|
ALWCHG, QUS-EC.
|
|
*
|
|
* If an exception occurs, the API returns the exception in the
|
|
* error code parameter. The bytes available field is set to
|
|
* zero if no exception occurs and greater than zero if an
|
|
* exception does occur.
|
|
*
|
|
IF BYTES-AVAILABLE OF QUS-EC > 0
|
|
MOVE "QSZPKGPO" TO API-NAME,
|
|
PERFORM ERRCOD.
|
|
*
|
|
*****************************************************************
|
|
*****************************************************************
|
|
*
|
|
* Subroutine: ERRCOD
|
|
*
|
|
* Descriptive Name: Process API errors.
|
|
*
|
|
* Description: This subroutine will print a line to a spooled
|
|
* file if any errors are returned in the error code
|
|
* parameter.
|
|
*
|
|
*****************************************************************
|
|
*****************************************************************
|
|
*
|
|
ERRCOD.
|
|
*
|
|
* Process errors returned from the API.
|
|
*
|
|
* If first error found, then open QPRINT *PRTF
|
|
*
|
|
IF FIRST-ERR = "0"
|
|
OPEN OUTPUT LISTING,
|
|
MOVE "1" TO FIRST-ERR.
|
|
*
|
|
* Output the error and the API that received the error
|
|
*
|
|
MOVE EXCEPTION-ID OF QUS-EC TO EXCEPTION-ID OF BAD-NEWS.
|
|
WRITE LIST-LINE FROM BAD-NEWS.</pre>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<div class="familylinks">
|
|
<div class="parentlink"><strong>Parent topic:</strong> <a href="ExTaskPackprog.htm" title="You can define, create, distribute, and maintain your own product using APIs. These examples demonstrate how you can use the APIs to package a product similar to the way IBM packages products.">Examples: Packaging your own software products</a></div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html> |