<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="Copyright" content="Copyright (c) 2006 by IBM Corporation"> <title>Generate License Key (QLZAGENK) API</title> <!-- Begin Header Records ========================================== --> <!-- 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. --> <!-- QLZAGENK SCRIPT A converted by B2H R4.1 (346) (CMS) by KENTALA --> <!-- at RCHVMW2 on 7 Oct 1998 at 18:26:07 --> <!-- Change History: --> <!-- YYMMDD USERID Change description --> <!-- Edited by Kersten Jan 02 --> <!--End Header Records --> <link rel="stylesheet" type="text/css" href="../rzahg/ic.css"> </head> <body> <a name="Top_Of_Page"></a> <!-- Java sync-link --> <script language="Javascript" src="../rzahg/synch.js" type="text/javascript"> </script> <h2>Generate License Key (QLZAGENK) API</h2> <div class="box" style="width: 80%;"> <br> Required Parameter Group:<br> <!-- iddvc RMBR --> <br> <table width="100%"> <tr> <td align="center" valign="top" width="10%">1</td> <td align="left" valign="top" width="50%">Product identification</td> <td align="left" valign="top" width="20%">Input</td> <td align="left" valign="top" width="20%">Char(*)</td> </tr> <tr> <td align="center" valign="top">2</td> <td align="left" valign="top">Product identification format name</td> <td align="left" valign="top">Input</td> <td align="left" valign="top">Char(8)</td> </tr> <tr> <td align="center" valign="top">3</td> <td align="left" valign="top">License key input</td> <td align="left" valign="top">Input</td> <td align="left" valign="top">Char(*)</td> </tr> <tr> <td align="center" valign="top">4</td> <td align="left" valign="top">License key input format name</td> <td align="left" valign="top">Input</td> <td align="left" valign="top">Char(8)</td> </tr> <tr> <td align="center" valign="top">5</td> <td align="left" valign="top">License key output</td> <td align="left" valign="top">Output</td> <td align="left" valign="top">Char(*)</td> </tr> <tr> <td align="center" valign="top">6</td> <td align="left" valign="top">Length of license key output</td> <td align="left" valign="top">Input</td> <td align="left" valign="top">Binary(4)</td> </tr> <tr> <td align="center" valign="top">7</td> <td align="left" valign="top">License key output format name</td> <td align="left" valign="top">Input</td> <td align="left" valign="top">Char(8)</td> </tr> <tr> <td align="center" valign="top">8</td> <td align="left" valign="top">Error code</td> <td align="left" valign="top">I/O</td> <td align="left" valign="top">Char(*)</td> </tr> </table> <br> Default Public Authority: *USE<br> <!-- iddvc RMBR --> <br> Threadsafe: No<br> <!-- iddvc RMBR --> <br> </div> <p>The Generate License Key (QLZAGENK) API generates a license key to enable users to access a product or a feature of a product. The key is specific to the product and system information entered in this API. The resulting key is a combination of 18 letters and numbers, A-F and 0-9. To run this API, the product definition of the product you are generating the key for must exist on the system.</p> <p>This command also adds the license information to the license repository. The keys are saved in the repository to keep a history of all the keys created. The repository can be queried to see what keys were generated for such things as a specific product, system, and so on. For more information about the license repository, see <a href="qlzartvk.htm">Retrieve License Key Information API</a>.</p> <br> <h3>Authorities and Locks</h3> <dl> <dt><em>API QLZAGENK Authority</em></dt> <dd>*PUBLIC(*EXCLUDE)</dd> </dl> <br> <h3>Required Parameter Group</h3> <dl> <dt><strong>Product identification</strong></dt> <dd>INPUT; CHAR(*) <p>Information that uniquely identifies the product or feature for which the license key is being generated. The structure of this information is determined by the name of the format. For more information, see <a href= "#HDRLICT100">LICT0100 Format</a>.</p> </dd> <dt><strong>Product identification format name</strong></dt> <dd>INPUT; CHAR(8) <p>The name of the format containing the information to identify the product.</p> <p>The format name is:</p> <table cellpadding="5"> <!-- cols="15 85" --> <tr> <td align="left" valign="top"><em>LICT0100</em></td> <td align="left" valign="top">Basic product information used as input to the API. For details, see the <a href="#HDRLICT100">LICT0100 Format</a>.</td> </tr> </table> <br> </dd> <dt><strong>License key input</strong></dt> <dd>INPUT; CHAR(*) <p>Information that is used to generate a unique license key for the product. The structure of this information is determined by the name of the format. For more information, see <a href="#HDRLICC100">LICC0100 Format</a>.</p> </dd> <dt><strong>License key input format name</strong></dt> <dd>INPUT; CHAR(8) <p>The name of the format containing the input for generating the license key.</p> <p>The format name is:</p> <table cellpadding="5"> <!-- cols="15 85" --> <tr> <td align="left" valign="top"><em>LICC0100</em></td> <td align="left" valign="top">License key information used as input to the API. For details, see <a href="#HDRLICC100">LICC0100 Format</a>.</td> </tr> </table> <br> </dd> <dt><strong>License key output</strong></dt> <dd>OUTPUT; CHAR(*) <p>Information about the license key generated. The structure of this information is determined by the name of the format. For more information, see <a href="#HDRLICK100">LICK0100 Format</a>.</p> </dd> <dt><strong>Length of license key output</strong></dt> <dd>INPUT; BIN(4) <p>The length of the license key output parameter.</p> </dd> <dt><strong>License key output format name</strong></dt> <dd>INPUT; CHAR(8) <p>The name of the format containing the output for the generated license key.</p> <p>The format name is:</p> <table cellpadding="5"> <!-- cols="15 85" --> <tr> <td width="15%" valign="top"><em>LICK0100</em></td> <td width="85%" valign="top">License key information generated from the API. For details, see <a href="#HDRLICK100">LICK0100 Format</a>.</td> </tr> </table> <br> </dd> <dt><strong>Error code</strong></dt> <dd>I/O; CHAR(*) <p>The structure in which to return error information. For the format of the structure, see <a href="../apiref/error.htm#hdrerrcod">Error Code Parameter</a>.</p> </dd> </dl> <br> <h3><a name="HDRLICT100">LICT0100 Format</a></h3> <p>The following information uniquely describes the product or feature for which the license information is to be added. For detailed descriptions of the fields, see <a href="#HDRCRTKFD">Field Descriptions</a>.</p> <table border width="80%"> <tr> <th align="center" valign="bottom" colspan="2">Offset</th> <th align="left" valign="bottom" rowspan="2">Type</th> <th align="left" valign="bottom" rowspan="2">Field</th> </tr> <tr> <th align="center" valign="bottom">Dec</th> <th align="center" valign="bottom">Hex</th> </tr> <tr> <td align="center" valign="top" width="10%">0</td> <td align="center" valign="top" width="10%">0</td> <td align="left" valign="top" width="20%">CHAR(7)</td> <td align="left" valign="top" width="60%">Product ID</td> </tr> <tr> <td align="center" valign="top">7</td> <td align="center" valign="top">7</td> <td align="left" valign="top">CHAR(6)</td> <td align="left" valign="top">License term</td> </tr> <tr> <td align="center" valign="top">13</td> <td align="center" valign="top">D</td> <td align="left" valign="top">CHAR(4)</td> <td align="left" valign="top">Feature</td> </tr> </table> <br> <br> <h3><a name="HDRLICC100">LICC0100 Format</a></h3> <p>The following specifies the format for the license key information used to generate the license key for the product. All fields must be specified. For detailed descriptions of the fields, see <a href="#HDRCRTKFD">Field Descriptions</a>.</p> <table border width="80%"> <tr> <th align="center" valign="bottom" colspan="2">Offset</th> <th align="left" valign="bottom" rowspan="2">Type</th> <th align="left" valign="bottom" rowspan="2">Field</th> </tr> <tr> <th align="center" valign="bottom">Dec</th> <th align="center" valign="bottom">Hex</th> </tr> <tr> <td align="center" valign="top" width="10%">0</td> <td align="center" valign="top" width="10%">0</td> <td align="left" valign="top" width="20%">BINARY(4)</td> <td align="left" valign="top" width="60%">Size of license key input structure</td> </tr> <tr> <td align="center" valign="top">4</td> <td align="center" valign="top">4</td> <td align="left" valign="top">BINARY(4)</td> <td align="left" valign="top">Usage limit</td> </tr> <tr> <td align="center" valign="top">8</td> <td align="center" valign="top">8</td> <td align="left" valign="top">CHAR(7)</td> <td align="left" valign="top">Expiration date</td> </tr> <tr> <td align="center" valign="top">15</td> <td align="center" valign="top">F</td> <td align="left" valign="top">CHAR(10)</td> <td align="left" valign="top">Vendor password</td> </tr> <tr> <td align="center" valign="top">25</td> <td align="center" valign="top">19</td> <td align="left" valign="top">CHAR(8)</td> <td align="left" valign="top">Serial number</td> </tr> <tr> <td align="center" valign="top">33</td> <td align="center" valign="top">21</td> <td align="left" valign="top">CHAR(4)</td> <td align="left" valign="top">Processor group</td> </tr> <tr> <td align="center" valign="top">37</td> <td align="center" valign="top">25</td> <td align="left" valign="top">CHAR(8)</td> <td align="left" valign="top">Vendor data</td> </tr> </table> <br> <br> <h3><a name="HDRLICK100">LICK0100 Format</a></h3> <p>The following specifies the format for the license key generated by this product. For detailed descriptions of the fields, see <a href= "#HDRCRTKFD">Field Descriptions</a>.</p> <table border width="80%"> <tr> <th align="center" valign="bottom" colspan="2">Offset</th> <th align="left" valign="bottom" rowspan="2">Type</th> <th align="left" valign="bottom" rowspan="2">Field</th> </tr> <tr> <th align="center" valign="bottom">Dec</th> <th align="center" valign="bottom">Hex</th> </tr> <tr> <td align="center" valign="top" width="10%">0</td> <td align="center" valign="top" width="10%">0</td> <td align="left" valign="top" width="20%">BINARY(4)</td> <td align="left" valign="top" width="60%">Bytes returned</td> </tr> <tr> <td align="center" valign="top">4</td> <td align="center" valign="top">4</td> <td align="left" valign="top">BINARY(4)</td> <td align="left" valign="top">Bytes available</td> </tr> <tr> <td align="center" valign="top">8</td> <td align="center" valign="top">8</td> <td align="left" valign="top">CHAR(18)</td> <td align="left" valign="top">License key</td> </tr> <tr> <td align="center" valign="top">26</td> <td align="center" valign="top">1A</td> <td align="left" valign="top">CHAR(13)</td> <td align="left" valign="top">Generation date and time</td> </tr> </table> <br> <br> <h3><a name="HDRCRTKFD">Field Descriptions</a></h3> <p><strong>Bytes available.</strong> The number of bytes of data available to be returned. All available data is returned if enough space is provided.</p> <p><strong>Bytes returned.</strong> The number of bytes of data returned.</p> <p><strong>Expiration date.</strong> The date the product license will expire. After this date, the usage limit is set to the default usage limit. No user over the usage limit is allowed to access the product or feature. A new license key must be obtained from the software provider to allow further use of the product.</p> <table cellpadding="5"> <!-- cols="15 85" --> <tr> <td align="left" valign="top"><em>CYYMMDD</em></td> <td align="left" valign="top">C is the century, YY is the year, MM is the month, and DD is the day. The date must be numeric as follows:<br> <ul> <li>Century, where 0 indicates years 19<em>xx</em> and 1 indicates years 20<em>xx</em>.</li> <li>Month may not be greater than 12.</li> <li>Day may not be greater than 31.</li> </ul> </td> </tr> <tr> <td align="left" valign="top"><em>9999999</em></td> <td align="left" valign="top">There is no expiration date for the product or feature.</td> </tr> </table> <p><strong>Feature.</strong> The feature of the product to which the license key is being generated. Valid values for the feature are 5001 through 9999.</p> <p><strong>Generation date and time.</strong> The date and time that the license key was generated in the CYYMMDDHHmmSS format as follows:</p> <table cellpadding="5"> <!-- cols="10 90" --> <tr> <td align="left" valign="top"><em>C</em></td> <td align="left" valign="top">Century, where 0 indicates years 19<em>xx</em> and 1 indicates years 20<em>xx</em>.</td> </tr> <tr> <td align="left" valign="top"><em>YY</em></td> <td align="left" valign="top">Year</td> </tr> <tr> <td align="left" valign="top"><em>MM</em></td> <td align="left" valign="top">Month</td> </tr> <tr> <td align="left" valign="top"><em>DD</em></td> <td align="left" valign="top">Day</td> </tr> <tr> <td align="left" valign="top"><em>HH</em></td> <td align="left" valign="top">Hour</td> </tr> <tr> <td align="left" valign="top"><em>mm</em></td> <td align="left" valign="top">Minute</td> </tr> <tr> <td align="left" valign="top"><em>SS</em></td> <td align="left" valign="top">Second</td> </tr> </table> <p><strong>License key.</strong> The license key generated for the product. The key will be made up of characters A-F and numbers 0-9.</p> <p><strong>License term.</strong> The extent of time the authorized usage limit for a product lasts. Each time a new license term is installed for a product, the authorized usage limit must be set by:</p> <ul> <li>Obtaining a new license key from the software provider.</li> <li>Adding the new license key to the system using the Add License Key (ADDLICKEY) command.</li> </ul> <p>Possible values are:</p> <table cellpadding="5"> <!-- cols="15 85" --> <tr> <td align="left" valign="top"><em>Vx</em></td> <td align="left" valign="top">The authorized usage limit is valid for the entire version of the product or feature.</td> </tr> <tr> <td align="left" valign="top"><em>VxRy</em></td> <td align="left" valign="top">The authorized usage limit is valid for the entire release of the product or feature.</td> </tr> <tr> <td align="left" valign="top"><em>VxRyMz</em></td> <td align="left" valign="top">The authorized usage limit is valid only for the modification level of the product.</td> </tr> </table> <p>Where the x and y can be a number from 0 through 9. Z can be a number 0 through 9 or a letter A through Z.</p> <p><strong>Processor group.</strong> The processor group of the system the product or feature will be installed on. This field is left justified.</p> <table cellpadding="5"> <!-- cols="10 90" --> <tr> <td align="left" valign="top"><em>*ANY</em></td> <td align="left" valign="top">The license key generated can be used with any processor group.</td> </tr> </table> <p><strong>Product ID.</strong> The product ID of the product or feature to which the license information is being added.</p> <p><strong>Serial number.</strong> The serial number of the system the license key will be installed on.</p> <p><strong>Size of license key input structure.</strong> The size, in bytes, of the license key input structure contained in format LICC0100.</p> <p><strong>Usage limit.</strong> The usage limit that will be in effect when the product or feature is initially installed.</p> <table cellpadding="5"> <!-- cols="15 85" --> <tr> <td align="left" valign="top" nowrap><em>0-999999</em></td> <td align="left" valign="top">The number of users allowed to access the product or feature.</td> </tr> <tr> <td align="left" valign="top"><em>-1</em></td> <td align="left" valign="top">Any number of users are allowed to access the product or feature.</td> </tr> </table> <p><strong>Vendor data.</strong> An 8 character field for vendor defined usage.</p> <p><strong>Vendor password.</strong> The software vendor's password. This password is encrypted and stored with the product. It is used in validating this Generate License Key request. It must also be the same password used when adding product license information (ADDPRDLICI command or QLZADDLI API) to this product or feature. The password must begin with an alphabetic character (A through Z, $, #, or @). This character must be followed by no more than 9 alphameric characters (A through Z, 0 through 9, $, #, @, or _).</p> <br> <h3>Error Messages</h3> <table cellpadding="5"> <!-- cols="15 85" --> <tr> <th align="left" valign="top">Message ID</th> <th align="left" valign="top">Error Message Text</th> </tr> <tr> <td width="15%" valign="top">CPF0CB2 E</td> <td width="85%" valign="top">Product identifier &1 not valid.</td> </tr> <tr> <td align="left" valign="top">CPF0C4B E</td> <td align="left" valign="top">Product availability object &2/&1 recovery required.</td> </tr> <tr> <td align="left" valign="top">CPF0C4C E</td> <td align="left" valign="top">Cannot allocate object &1 in library &2.</td> </tr> <tr> <td align="left" valign="top">CPF0C4D E</td> <td align="left" valign="top">Error occurred while processing object &1 in library &2.</td> </tr> <tr> <td align="left" valign="top">CPF24B4 E</td> <td align="left" valign="top">Severe error while addressing parameter list.</td> </tr> <tr> <td align="left" valign="top">CPF3CF1 E</td> <td align="left" valign="top">Error code parameter not valid.</td> </tr> <tr> <td align="left" valign="top">CPF3C19 E</td> <td align="left" valign="top">Error occurred with receiver variable specified.</td> </tr> <tr> <td align="left" valign="top">CPF3C21 E</td> <td align="left" valign="top">Format name &1 is not valid.</td> </tr> <tr> <td align="left" valign="top">CPF3C24 E</td> <td align="left" valign="top">Length of the receiver variable is not valid.</td> </tr> <tr> <td align="left" valign="top">CPF3C90 E</td> <td align="left" valign="top">Literal value cannot be changed.</td> </tr> <tr> <td align="left" valign="top">CPF8191 E</td> <td align="left" valign="top">Product definition &4 in &9 damaged.</td> </tr> <tr> <td align="left" valign="top">CPF8193 E</td> <td align="left" valign="top">Product load object &4 in &9 damaged.</td> </tr> <tr> <td align="left" valign="top">CPF9E05 E</td> <td align="left" valign="top">Feature &3 not valid.</td> </tr> <tr> <td align="left" valign="top">CPF9E0F E</td> <td align="left" valign="top">Vendor password &1 not valid.</td> </tr> <tr> <td align="left" valign="top">CPF9E15 E</td> <td align="left" valign="top">Error in license management function.</td> </tr> <tr> <td align="left" valign="top">CPF9E40 E</td> <td align="left" valign="top">Usage limit &1 not valid.</td> </tr> <tr> <td align="left" valign="top">CPF9E41 E</td> <td align="left" valign="top">Product &1 &2 feature &3 not found or not correctly installed.</td> </tr> <tr> <td align="left" valign="top">CPF9E42 E</td> <td align="left" valign="top">Vendor password not correct.</td> </tr> <tr> <td align="left" valign="top">CPF9E44 E</td> <td align="left" valign="top">Processor group must be specified.</td> </tr> <tr> <td align="left" valign="top">CPF9E45 E</td> <td align="left" valign="top">Serial number must be specified.</td> </tr> <tr> <td align="left" valign="top">CPF9E46 E</td> <td align="left" valign="top">License key not generated.</td> </tr> <tr> <td align="left" valign="top">CPF9E54 E</td> <td align="left" valign="top">License term &1 not valid.</td> </tr> <tr> <td align="left" valign="top">CPF9E55 E</td> <td align="left" valign="top">License repository object damaged.</td> </tr> <tr> <td align="left" valign="top">CPF9E59 E</td> <td align="left" valign="top">Expiration date &1 is not valid.</td> </tr> <tr> <td align="left" valign="top">CPF9838 E</td> <td align="left" valign="top">User profile storage limit exceeded.</td> </tr> <tr> <td align="left" valign="top">CPF9872 E</td> <td align="left" valign="top">Program or service program &1 in library &2 ended. Reason code &3.</td> </tr> </table> <br> <hr> API introduced: V3R1 <hr> <table cellpadding="2" cellspacing="2" align="center"> <tr align="center"> <td valign="middle" align="center"><a href="#Top_Of_Page">Top</a> | <a href= "sw1.htm">Software Product APIs</a> | <a href="aplist.htm">APIs by category</a></td> </tr> </table> </body> </html>