485 lines
18 KiB
HTML
485 lines
18 KiB
HTML
|
|
<!doctype html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head><META http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<title>Create Table (CRTTBL)</title>
|
|
<link rel="stylesheet" type="text/css" href="../rzahg/ic.css">
|
|
</head>
|
|
<body bgcolor="white">
|
|
<script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
|
|
<a name="CRTTBL.Top_Of_Page"></a>
|
|
<h2>Create Table (CRTTBL)</h2>
|
|
<table width="100%">
|
|
<tr>
|
|
<td valign="top" align="left"><b>Where allowed to run: </b>All environments (*ALL)<br>
|
|
<b>Threadsafe: </b>No
|
|
</td>
|
|
<td valign="top" align="right">
|
|
<a href="#CRTTBL.PARAMETERS.TABLE">Parameters</a><br>
|
|
<a href="#CRTTBL.COMMAND.EXAMPLES">Examples</a><br>
|
|
<a href="#CRTTBL.ERROR.MESSAGES">Error messages</a></td>
|
|
</tr>
|
|
</table>
|
|
|
|
<div> <a name="CRTTBL"></a>
|
|
<p>The Create Table (CRTTBL) command creates a named table. The table can be used for the translation of data that is moved between the system and a device. The table can also be used to specify an alternate collating sequence or to specify field translation functions.
|
|
</p>
|
|
<p>You can create a table by prompting for the source information, or by specifying a source member.
|
|
</p>
|
|
<p>To create a table using prompting support, specify *PROMPT on the SRCFILE parameter. A display is shown allowing you to view and change the table values and a new table is created based on the values chosen on the display.
|
|
</p>
|
|
<p>To create a *CVT table using a source member, you must specify a source member that contains 8 records. Each record in this member must contain 64 hexadecimal characters (characters after position 64 are not used). This input (512 hexadecimal characters) is converted and stored internally as 256 bytes by the CRTTBL command.
|
|
</p>
|
|
<p>The value you specify for a position within the source member is the same value that is returned by QDCXLATE (or other system program) whenever that position is encountered.
|
|
</p>
|
|
<p>For example, if you specify "C0C1C2C3C4C5C6...'' as the first part of record 1 in the source, then a hexadecimal "C0" is returned when given a hexadecimal "00", a hexadecimal "C1" is returned when given a hexadecimal "01" and so on.
|
|
</p>
|
|
<p>To create a *UCSSRTSEQ table using a source member, you must specify a source member that contains the following layout of information.
|
|
</p>
|
|
<ol>
|
|
<li>column 1-4 = Hex code point to be sorted
|
|
</li>
|
|
<li>column 6-10 = Weight of this code point as a decimal number
|
|
</li>
|
|
<li>column 11-80 = not used, can contain such things as comments.
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
<hr size="2" width="100%">
|
|
|
|
<div>
|
|
<h3><a name="CRTTBL.PARAMETERS.TABLE">Parameters</a></h3>
|
|
<table border="1" cellpadding="4" cellspacing="0">
|
|
<!-- col1="10" col2="15" col3="30" col4="10" -->
|
|
<tr>
|
|
<th bgcolor="aqua" valign="bottom" align="left">Keyword</th>
|
|
<th bgcolor="aqua" valign="bottom" align="left">Description</th>
|
|
<th bgcolor="aqua" valign="bottom" align="left">Choices</th>
|
|
<th bgcolor="aqua" valign="bottom" align="left">Notes</th>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" rowspan="3"><a href="#CRTTBL.TBL"><b>TBL</b></a></td>
|
|
<td valign="top">Table</td>
|
|
<td valign="top"><i>Qualified object name</i></td>
|
|
<td valign="top" rowspan="3">Required, Positional 1</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Qualifier 1: Table</td>
|
|
<td valign="top"><i>Name</i></td>
|
|
</tr><tr>
|
|
<td valign="top">Qualifier 2: Library</td>
|
|
<td valign="top"><i>Name</i>, <b><u>*CURLIB</u></b></td>
|
|
</tr><tr>
|
|
<td valign="top" rowspan="3"><a href="#CRTTBL.SRCFILE"><b>SRCFILE</b></a></td>
|
|
<td valign="top">Source file</td>
|
|
<td valign="top">Single values: *PROMPT<br>Other values: <i>Qualified object name</i></td>
|
|
<td valign="top" rowspan="3">Optional, Positional 2</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Qualifier 1: Source file</td>
|
|
<td valign="top"><i>Name</i>, <b><u>QTBLSRC</u></b></td>
|
|
</tr><tr>
|
|
<td valign="top">Qualifier 2: Library</td>
|
|
<td valign="top"><i>Name</i>, <b><u>*LIBL</u></b>, *CURLIB</td>
|
|
</tr><tr>
|
|
<td valign="top"><a href="#CRTTBL.SRCMBR"><b>SRCMBR</b></a></td>
|
|
<td valign="top">Source member</td>
|
|
<td valign="top"><i>Name</i>, <b><u>*TBL</u></b></td>
|
|
<td valign="top">Optional, Positional 3</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><a href="#CRTTBL.TBLTYPE"><b>TBLTYPE</b></a></td>
|
|
<td valign="top">Table type</td>
|
|
<td valign="top"><b><u>*CVT</u></b>, *SRTSEQ, *UCSSRTSEQ</td>
|
|
<td valign="top">Optional</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top" rowspan="3"><a href="#CRTTBL.BASETBL"><b>BASETBL</b></a></td>
|
|
<td valign="top">Basing table</td>
|
|
<td valign="top">Single values: <b><u>*HEX</u></b><br>Other values: <i>Qualified object name</i></td>
|
|
<td valign="top" rowspan="3">Optional</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Qualifier 1: Basing table</td>
|
|
<td valign="top"><i>Name</i></td>
|
|
</tr><tr>
|
|
<td valign="top">Qualifier 2: Library</td>
|
|
<td valign="top"><i>Name</i>, <b><u>*LIBL</u></b>, *CURLIB</td>
|
|
</tr><tr>
|
|
<td valign="top" rowspan="3"><a href="#CRTTBL.BASESRTSEQ"><b>BASESRTSEQ</b></a></td>
|
|
<td valign="top">Basing sort sequence</td>
|
|
<td valign="top">Single values: *LANGIDSHR, *HEX, <b><u>*JOB</u></b>, *LANGIDUNQ<br>Other values: <i>Qualified object name</i></td>
|
|
<td valign="top" rowspan="3">Optional</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top">Qualifier 1: Basing sort sequence</td>
|
|
<td valign="top"><i>Name</i></td>
|
|
</tr><tr>
|
|
<td valign="top">Qualifier 2: Library</td>
|
|
<td valign="top"><i>Name</i>, <b><u>*LIBL</u></b>, *CURLIB</td>
|
|
</tr><tr>
|
|
<td valign="top"><a href="#CRTTBL.BASELANGID"><b>BASELANGID</b></a></td>
|
|
<td valign="top">Basing language ID</td>
|
|
<td valign="top"><i>Character value</i>, <b><u>*JOB</u></b></td>
|
|
<td valign="top">Optional</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><a href="#CRTTBL.CCSID"><b>CCSID</b></a></td>
|
|
<td valign="top">Coded character set ID</td>
|
|
<td valign="top">1-65533, <b><u>*JOB</u></b>, *HEX, 65535</td>
|
|
<td valign="top">Optional</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><a href="#CRTTBL.TEXT"><b>TEXT</b></a></td>
|
|
<td valign="top">Text 'description'</td>
|
|
<td valign="top"><i>Character value</i>, <b><u>*BLANK</u></b></td>
|
|
<td valign="top">Optional</td>
|
|
</tr>
|
|
<tr>
|
|
<td valign="top"><a href="#CRTTBL.AUT"><b>AUT</b></a></td>
|
|
<td valign="top">Authority</td>
|
|
<td valign="top"><i>Name</i>, <b><u>*LIBCRTAUT</u></b>, *CHANGE, *ALL, *USE, *EXCLUDE</td>
|
|
<td valign="top">Optional</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
</div>
|
|
<div> <a name="CRTTBL.TBL"></a>
|
|
<h3>Table (TBL)</h3>
|
|
<p>Specifies the library name and table name of the table being created.
|
|
</p>
|
|
<p>This is a required parameter.
|
|
</p>
|
|
<p>The possible library values are:
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*CURLIB</u></b></dt>
|
|
<dd>The library for the job is used to locate the table. If no library is specified as the library for the job, QGPL is used.
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
<dt><b><i>name</i></b></dt>
|
|
<dd>Specify the name of the library to be searched.
|
|
</dd>
|
|
</dl>
|
|
<p>The possible values are:
|
|
</p>
|
|
<dl>
|
|
<dt><b><i>table-name</i></b></dt>
|
|
<dd>Specify the name of the table being created.
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
<div> <a name="CRTTBL.SRCFILE"></a>
|
|
<h3>Source file (SRCFILE)</h3>
|
|
<p>Specifies the qualified name of the source file containing the description of the table being created or that prompting support is to be used.
|
|
</p>
|
|
<p>The possible values are:
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*PROMPT</u></b></dt>
|
|
<dd>Allows the user to access and use source information.
|
|
</dd>
|
|
<dt><b><u>QTBLSRC</u></b></dt>
|
|
<dd>The system source file named QTBLSRC contains the source records that are used with this command to create the table.
|
|
</dd>
|
|
<dt><b><i>source-file-name</i></b></dt>
|
|
<dd>Specify the name (library-name/source-file-name) of the source file that contains the source records that are used with this command to create the table.
|
|
</dd>
|
|
</dl>
|
|
<p>The possible library values are:
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*LIBL</u></b></dt>
|
|
<dd>All libraries in the library list for the current thread are searched until the first match is found.
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
<dt><b>*CURLIB</b></dt>
|
|
<dd>The current library for the job is used to locate the source file. If no current library is specified as the current library for the job, QGPL is used.
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
<dt><b><i>name</i></b></dt>
|
|
<dd>Specify the name of the library to be searched.
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
<div> <a name="CRTTBL.SRCMBR"></a>
|
|
<h3>Source member (SRCMBR)</h3>
|
|
<p>Specifies the name of the source file member containing the description of the table being created.
|
|
</p>
|
|
<p>The possible values are:
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*TBL</u></b></dt>
|
|
<dd>The source file member name is the same as the name of the table.
|
|
</dd>
|
|
<dt><b><i>source-file-member-name</i></b></dt>
|
|
<dd>Specify the name of the member in the source file specified on the <b>Source file</b> prompt (SRCFILE parameter) to create the table.
|
|
<p><i>generic*-table-name</i> Specify the generic name of the table. A generic name is a character string of one or more characters followed by an asterisk (*); for example, ABC*. If a generic name is specified, then all tables with names that begin with the generic name, and for which the user has authority, are shown. If an asterisk is not included with the generic (prefix) name, the system assumes it to be the complete table name.
|
|
</p>
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
<div> <a name="CRTTBL.TBLTYPE"></a>
|
|
<h3>Table type (TBLTYPE)</h3>
|
|
<p>Specifies the type of table object to be created.
|
|
</p>
|
|
<p>The possible values are:
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*CVT</u></b></dt>
|
|
<dd>A conversion type table is created.
|
|
</dd>
|
|
<dt><b>*SRTSEQ</b></dt>
|
|
<dd>A sort sequence type table is created.
|
|
</dd>
|
|
<dt><b>*UCSSRTSEQ</b></dt>
|
|
<dd>An IS0-10646 UCS-2 sort sequence type table is created.
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
<div> <a name="CRTTBL.BASETBL"></a>
|
|
<h3>Basing table (BASETBL)</h3>
|
|
<p>Specifies the base table to be used for prompting support when creating a conversion table.
|
|
</p>
|
|
<p>The possible values are:
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*HEX</u></b></dt>
|
|
<dd>A one to one mapping table is used.
|
|
</dd>
|
|
</dl>
|
|
<p>The name of the table can be qualified by one of the following library values:
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*LIBL</u></b></dt>
|
|
<dd>All libraries in the library list for the current thread are searched until the first match is found.
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
<dt><b>*CURLIB</b></dt>
|
|
<dd>The current library for the job is searched. If no library is specified as the current library for the job, the QGPL library is used.
|
|
</dd>
|
|
<dt><b><i>library-name</i></b></dt>
|
|
<dd>Specify the name of the library to be searched.
|
|
</dd>
|
|
<dt><b><i>table-name</i></b></dt>
|
|
<dd>Specify a table object to be used as a base.
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
<div> <a name="CRTTBL.BASESRTSEQ"></a>
|
|
<h3>Basing sort sequence (BASESRTSEQ)</h3>
|
|
<p>Specifies the base table to be used for prompting support when creating a sort sequence table.
|
|
</p>
|
|
<p>The possible values are:
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*JOB</u></b></dt>
|
|
<dd>The sort sequence must be resolved when the object is created.
|
|
</dd>
|
|
<dt><b>*LANGIDSHR</b></dt>
|
|
<dd>A shared weight sort table is used.
|
|
</dd>
|
|
<dt><b>*LANGIDUNQ</b></dt>
|
|
<dd>A unique weight sort table is used.
|
|
</dd>
|
|
<dt><b>*HEX</b></dt>
|
|
<dd>A sort sequence table is not used. The hexadecimal values of the characters are used to determine the sort sequence. The CCSID for hexadecimal data is 65535.
|
|
</dd>
|
|
</dl>
|
|
<p>The name of the table can be qualified by one of the following library values:
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*LIBL</u></b></dt>
|
|
<dd>All libraries in the library list for the current thread are searched until the first match is found.
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
<dt><b>*CURLIB</b></dt>
|
|
<dd>The current library for the job is searched. If no library is specified as the current library for the job, the QGPL library is used.
|
|
</dd>
|
|
<dt><b><i>library-name</i></b></dt>
|
|
<dd>Specify the name of the library to be searched.
|
|
</dd>
|
|
<dt><b><i>table-name</i></b></dt>
|
|
<dd>Specify the name of a table object to be used as a base.
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
<div> <a name="CRTTBL.BASELANGID"></a>
|
|
<h3>Basing language ID (BASELANGID)</h3>
|
|
<p>Specifies the base language used for prompting support when creating a sort sequence table.
|
|
</p>
|
|
<p>The possible values are:
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*JOB</u></b></dt>
|
|
<dd>The sort sequence must be resolved when the object is created.
|
|
</dd>
|
|
<dt><b><i>language-ID</i></b></dt>
|
|
<dd>Specify a valid language ID to be used for the sort sequence table being created.
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
<div> <a name="CRTTBL.CCSID"></a>
|
|
<h3>Coded character set ID (CCSID)</h3>
|
|
<p>Specifies the coded character set ID (CCSID) in which to store the sort sequence table information.
|
|
</p>
|
|
<p>The possible values are:
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*JOB</u></b></dt>
|
|
<dd>The sort sequence must be resolved when the object is created.
|
|
</dd>
|
|
<dt><b><i>coded-character-set-ID</i></b></dt>
|
|
<dd>Specify the CCSID to be used for the sort sequence table information.
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
<div> <a name="CRTTBL.TEXT"></a>
|
|
<h3>Text 'description' (TEXT)</h3>
|
|
<p>Specifies the text that briefly describes the object.
|
|
</p>
|
|
<p>The possible values are:
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*BLANK</u></b></dt>
|
|
<dd>No text is specified.
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
<dt><b><i>character-value</i></b></dt>
|
|
<dd>Specify no more than 50 characters of text, enclosed in apostrophes.
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
</dl>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
<div> <a name="CRTTBL.AUT"></a>
|
|
<h3>Authority (AUT)</h3>
|
|
<p>Specifies the authority you are giving to users who do not have specific authority for the object, who are not on an authorization list, and whose group profile or supplemental group profiles do not have specific authority for the object.
|
|
</p>
|
|
<dl>
|
|
<dt><b><u>*LIBCRTAUT</u></b></dt>
|
|
<dd>The authority for the object is the same as the value specified on the <b>Create authority</b> prompt (CRTAUT parameter) of the library in which the object is being created. If the value specified on the <b>Create authority</b> prompt (CRTAUT parameter) is changed, the new value will not affect any existing objects.
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
<dt><b><u>*CHANGE</u></b></dt>
|
|
<dd>The user can perform all operations on the object except those limited to the owner or controlled by object existence (*OBJEXIST) and object management (*OBJMGT) authorities. The user can change and perform basic functions on the object. *CHANGE authority provides object operational (*OBJOPR) authority and all data authority. If the object is an authorization list, the user cannot add, change, or remove users.
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
</dl>
|
|
<dl>
|
|
<dt><b>*ALL</b></dt>
|
|
<dd>The user can perform all operations except those limited to the owner or controlled by authorization list management (*AUTLMGT) authority. The user can control the object's existence, specify the security for the object, change the object, and perform basic functions on the object. The user also can change ownership of the object.
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
</dl>
|
|
<dl>
|
|
<dt><b>*USE</b></dt>
|
|
<dd>The user can perform basic operations on the object, such as running a program or reading a file. The user cannot change the object. Use (*USE) authority provides object operational (*OBJOPR), read (*READ), and execute (*EXECUTE) authorities.
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
</dl>
|
|
<dl>
|
|
<dt><b>*EXCLUDE</b></dt>
|
|
<dd>The user cannot access the object.
|
|
</dd>
|
|
</dl>
|
|
<dl>
|
|
<dt><b><i>authorization-list-name</i></b></dt>
|
|
<dd>Specify the name of an authorization list to be used for authority to the object. Users included in the authorization list are granted authority to the object as specified in the list. The authorization list must exist when the object is created.
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
<hr size="2" width="100%">
|
|
<div><h3><a name="CRTTBL.COMMAND.EXAMPLES">Examples</a> </h3>
|
|
<p>
|
|
<pre>
|
|
CRTTBL TBL(SCRAMTBL) SRCFILE(USERTABLES) SRCMBR(SCRAMBLE)
|
|
TEXT('Translate table for scrambling text characters')
|
|
</pre>
|
|
</p>
|
|
<p>This command creates a table named SCRAMTBL and (by default) stores it in the current library. The source file named USERTABLES contains the source records used when the table is created; the name of the source file member is SCRAMBLE. The TEXT parameter describes this table as being used as a translate table for scrambling text characters.
|
|
</p>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
<hr size="2" width="100%">
|
|
<div><h3><a name="CRTTBL.ERROR.MESSAGES">Error messages</a> </h3>
|
|
<p><b><u>*ESCAPE Messages</u></b>
|
|
</p>
|
|
<dl>
|
|
<dt><b>CPF2207</b></dt>
|
|
<dd>Not authorized to use object &1 in library &3 type *&2.
|
|
</dd>
|
|
<dt><b>CPF2614</b></dt>
|
|
<dd>Table &1 in &2 already exists.
|
|
</dd>
|
|
<dt><b>CPF2623</b></dt>
|
|
<dd>Library &1 not found.
|
|
</dd>
|
|
<dt><b>CPF2678</b></dt>
|
|
<dd>Data in source file &1 in &2 not valid.
|
|
</dd>
|
|
<dt><b>CPF3BF7</b></dt>
|
|
<dd>Data in source file at line &1 is not correct
|
|
</dd>
|
|
<dt><b>CPF3FC9</b></dt>
|
|
<dd>Value &1 for CCSID not valid.
|
|
</dd>
|
|
<dt><b>CPF9820</b></dt>
|
|
<dd>Not authorized to use library &1.
|
|
</dd>
|
|
</dl>
|
|
</div>
|
|
<table width="100%">
|
|
<tr><td align="right"><a href="#CRTTBL.Top_Of_Page">Top</a></td></tr>
|
|
</table>
|
|
</body>
|
|
</html>
|