ibm-information-center/dist/eclipse/plugins/i5OS.ic.rzahh_5.4.0.1/rzahhxpcmlschemaxsd.htm

1042 lines
52 KiB
HTML
Raw Permalink Normal View History

2024-04-02 14:02:31 +00:00
<?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="Schema xpcml.xsd file" />
<meta name="abstract" content="" />
<meta name="description" content="" />
<meta name="DC.Relation" scheme="URI" content="rzahhxpcmlschema.htm" />
<meta name="copyright" content="(C) Copyright IBM Corporation 2006" />
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 2006" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="rzahhxpcmlschemaxsd" />
<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>Schema xpcml.xsd file</title>
</head>
<body id="rzahhxpcmlschemaxsd"><a name="rzahhxpcmlschemaxsd"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">Schema xpcml.xsd file</h1>
<div><p></p>
<div class="section"><p>For more information about using the xpcml.xsd file, see <a href="rzahhxpcmlrequire.htm">Requirements for using XPCML</a>.</p>
<div class="note"><span class="notetitle">Note:</span> Read
the <a href="codedisclaimer.htm#codedisclaimer">Code example disclaimer</a> for
important legal information.</div>
<p>To make it easier to display and print,
some lines of this HTML version of xpcml.xsd wrap to a second line. The same
lines in the source xsd file appear on a single line.</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!--///////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: xpcml.xsd
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2003 International Business Machines Corporation and
// others. All rights reserved.
//
////////////////////////////////////////////////////////////////////////////--&gt;
&lt;xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'&gt;
&lt;xs:annotation&gt;
&lt;xs:documentation&gt;
Schema for xpcml (eXtended Program Call Markup Language).
&lt;/xs:documentation&gt;
&lt;/xs:annotation&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__xpcml"><a name="rzahhxpcmlschemaxsd__xpcml"><!-- --></a><span class="kwd"></span></span>&lt;xs:element name="xpcml"&gt;
&lt;xs:complexType&gt;
&lt;xs:sequence&gt;
&lt;xs:element ref="structOrProgram" minOccurs="1" maxOccurs="unbounded" /&gt;
&lt;/xs:sequence&gt;
&lt;xs:attribute name="version" use="required"&gt;
&lt;xs:simpleType&gt;
&lt;xs:restriction base="xs:string"&gt;
&lt;xs:enumeration value="4.0"/&gt;
&lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
&lt;/xs:attribute&gt;
&lt;/xs:complexType&gt;
&lt;!-- Define key/keyref link between the name of a struct --&gt;
&lt;!-- and the struct attribute of a parameter field. --&gt;
&lt;xs:key name="StructKey"&gt;
&lt;xs:selector xpath="struct"/&gt;
&lt;xs:field xpath="@name"/&gt;
&lt;/xs:key&gt;
&lt;xs:keyref name="spRef" refer="StructKey"&gt;
&lt;xs:selector xpath="structParm" /&gt;
&lt;xs:field xpath="@struct" /&gt;
&lt;/xs:keyref&gt;
&lt;/xs:element&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__program"><a name="rzahhxpcmlschemaxsd__program"><!-- --></a><span class="kwd"></span></span>&lt;!-- Program tag and attributes --&gt;
&lt;xs:element name="program" substitutionGroup="structOrProgram"&gt;
&lt;xs:complexType&gt;
&lt;xs:sequence&gt;
&lt;xs:element ref="parameterList" minOccurs="1" maxOccurs="1"/&gt;
&lt;!-- Used as a wrapper tag around the parameter list for the program. --&gt;
&lt;/xs:sequence&gt;
&lt;!-- Name of the program to call. --&gt;
&lt;xs:attribute name="name" type="string50" use="required" /&gt;
&lt;!-- Path to the program object. Default is to assume in library QSYS. --&gt;
&lt;xs:attribute name="path" type="xs:string"/&gt;
&lt;!-- Specifies the order in which parameters should be parsed. --&gt;
&lt;!-- Value is a blank-separated list of parameter names. --&gt;
&lt;xs:attribute name="parseOrder" type="xs:string"/&gt;
&lt;!-- The entry point name within a service program. --&gt;
&lt;xs:attribute name="entryPoint" type="xs:string"/&gt;
&lt;!-- The type of value, if any, returned from a service program call. --&gt;
&lt;xs:attribute name="returnValue" type="returnValueType"/&gt;
&lt;!-- When calling a Java program and iSeries program is on same server --&gt;
&lt;!-- and is thread-safe, set to true to call the iSeries program in same job --&gt;
&lt;!-- and on same thread as the Java program. --&gt;
&lt;xs:attribute name="threadSafe" type="xs:boolean" /&gt;
&lt;!-- The CCSID of the entry point name within a service program. --&gt;
&lt;xs:attribute name="epccsid" type="ccsidType"/&gt;
&lt;/xs:complexType&gt;
&lt;/xs:element&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__parameterlist"><a name="rzahhxpcmlschemaxsd__parameterlist"><!-- --></a><span class="kwd"></span></span>&lt;!-- A parameter list is made up of one or more parameters. --&gt;
&lt;xs:element name="parameterList"&gt;
&lt;xs:complexType&gt;
&lt;xs:group ref="programParameter" minOccurs="1" maxOccurs="unbounded"/&gt;
&lt;/xs:complexType&gt;
&lt;/xs:element&gt;
&lt;!-- All the different kinds of program parameters that we understand. --&gt;
&lt;xs:group name="programParameter"&gt;
&lt;xs:choice&gt;
&lt;xs:element ref="stringParmGroup"/&gt;
&lt;xs:element ref="stringParmArrayGroup"/&gt;
&lt;xs:element ref="intParmGroup"/&gt;
&lt;xs:element ref="intParmArrayGroup"/&gt;
&lt;xs:element ref="unsignedIntParmGroup"/&gt;
&lt;xs:element ref="unsignedIntParmArrayGroup"/&gt;
&lt;xs:element ref="shortParmGroup"/&gt;
&lt;xs:element ref="shortParmArrayGroup"/&gt;
&lt;xs:element ref="unsignedShortParmGroup"/&gt;
&lt;xs:element ref="unsignedShortParmArrayGroup"/&gt;
&lt;xs:element ref="longParmGroup"/&gt;
&lt;xs:element ref="longParmArrayGroup"/&gt;
&lt;xs:element ref="zonedDecimalParmGroup"/&gt;
&lt;xs:element ref="zonedDecimalParmArrayGroup"/&gt;
&lt;xs:element ref="packedDecimalParmGroup"/&gt;
&lt;xs:element ref="packedDecimalParmArrayGroup"/&gt;
&lt;xs:element ref="floatParmGroup"/&gt;
&lt;xs:element ref="floatParmArrayGroup"/&gt;
&lt;xs:element ref="doubleParmGroup"/&gt;
&lt;xs:element ref="doubleParmArrayGroup"/&gt;
&lt;xs:element ref="hexBinaryParmGroup"/&gt;
&lt;xs:element ref="hexBinaryParmArrayGroup"/&gt;
&lt;xs:element ref="structParmGroup"/&gt;
&lt;xs:element ref="structParmArrayGroup"/&gt;
&lt;xs:element ref="structArrayGroup"/&gt;
&lt;xs:element ref="struct"/&gt;
&lt;/xs:choice&gt;
&lt;/xs:group&gt;
&lt;!-- Abstract type for all data parameter types. --&gt;
&lt;xs:element name="stringParmGroup" type="stringParmType" abstract="true" /&gt;
&lt;xs:element name="stringParmArrayGroup" type="stringParmArrayType" abstract="true" /&gt;
&lt;xs:element name="intParmGroup" type="intParmType" abstract="true" /&gt;
&lt;xs:element name="intParmArrayGroup" type="intParmArrayType" abstract="true" /&gt;
&lt;xs:element name="unsignedIntParmGroup" type="unsignedIntParmType" abstract="true" /&gt;
&lt;xs:element name="unsignedIntParmArrayGroup" type="unsignedIntParmArrayType" abstract="true" /&gt;
&lt;xs:element name="shortParmGroup" type="shortParmType" abstract="true" /&gt;
&lt;xs:element name="shortParmArrayGroup" type="shortParmArrayType" abstract="true" /&gt;
&lt;xs:element name="unsignedShortParmGroup" type="unsignedShortParmType" abstract="true" /&gt;
&lt;xs:element name="unsignedShortParmArrayGroup" type="unsignedShortParmArrayType" abstract="true" /&gt;
&lt;xs:element name="longParmGroup" type="longParmType" abstract="true" /&gt;
&lt;xs:element name="longParmArrayGroup" type="longParmArrayType" abstract="true" /&gt;
&lt;xs:element name="zonedDecimalParmGroup" type="zonedDecimalParmType" abstract="true" /&gt;
&lt;xs:element name="zonedDecimalParmArrayGroup" type="zonedDecimalParmArrayType" abstract="true" /&gt;
&lt;xs:element name="packedDecimalParmGroup" type="packedDecimalParmType" abstract="true" /&gt;
&lt;xs:element name="packedDecimalParmArrayGroup" type="packedDecimalParmArrayType" abstract="true" /&gt;
&lt;xs:element name="floatParmGroup" type="floatParmType" abstract="true" /&gt;
&lt;xs:element name="floatParmArrayGroup" type="floatParmArrayType" abstract="true" /&gt;
&lt;xs:element name="doubleParmGroup" type="doubleParmType" abstract="true" /&gt;
&lt;xs:element name="doubleParmArrayGroup" type="doubleParmArrayType" abstract="true" /&gt;
&lt;xs:element name="hexBinaryParmGroup" type="hexBinaryParmType" abstract="true" /&gt;
&lt;xs:element name="hexBinaryParmArrayGroup" type="hexBinaryParmArrayType" abstract="true" /&gt;
&lt;xs:element name="structParmGroup" type="structParmType" abstract="true" /&gt;
&lt;xs:element name="structParmArrayGroup" type="structParmArrayType" abstract="true" /&gt;
&lt;xs:element name="structArrayGroup" type="structArrayType" abstract="true"
substitutionGroup="structOrProgram" /&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__stringparm"><a name="rzahhxpcmlschemaxsd__stringparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- String parameter --&gt;
&lt;xs:element name="stringParm" type="stringParmType" substitutionGroup="stringParmGroup"
nillable="true"/&gt;
&lt;xs:complexType name="stringParmType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="stringFieldType"&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayofstringparm"><a name="rzahhxpcmlschemaxsd__arrayofstringparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- Array of string parameters --&gt;
&lt;xs:element name="arrayOfStringParm" type="stringParmArrayType"
substitutionGroup="stringParmArrayGroup" nillable="true" /&gt;
&lt;xs:complexType name="stringParmArrayType"&gt;
&lt;xs:sequence&gt;
&lt;xs:element name="i" type="stringElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;!-- The number of elements in the array. --&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;!-- The number of characters in each string. --&gt;
&lt;xs:attribute name="length" type="xs:string"/&gt;
&lt;!-- The host CCSID for each string. --&gt;
&lt;xs:attribute name="ccsid" type="xs:string"/&gt;
&lt;!-- Specifies how to trim whitespace (left, right, both, none). --&gt;
&lt;xs:attribute name="trim" type="trimType" /&gt;
&lt;!-- The size of each character ('chartype' in PCML). --&gt;
&lt;xs:attribute name="bytesPerChar" type="charType" /&gt;
&lt;!-- The bidirectional string type. --&gt;
&lt;xs:attribute name="bidiStringType" type="bidiStringTypeType" /&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="stringElementType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:string"&gt;
&lt;!-- The index into the array. --&gt;
&lt;xs:attribute name="index" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__intparm"><a name="rzahhxpcmlschemaxsd__intparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- Integer parameter (4 bytes on server) --&gt;
&lt;xs:element name="intParm" type="intParmType" nillable="true" substitutionGroup="intParmGroup" /&gt;
&lt;xs:complexType name="intParmType" &gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="intFieldType"&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayofintparm"><a name="rzahhxpcmlschemaxsd__arrayofintparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- intParm array type --&gt;
&lt;xs:element name="arrayOfIntParm" type="intParmArrayType" substitutionGroup="intParmArrayGroup"
nillable="true" /&gt;
&lt;xs:complexType name="intParmArrayType"&gt;
&lt;xs:sequence&gt;
&lt;!-- 'i' is the tag used for non-struct array elements. --&gt;
&lt;xs:element name="i" type="intElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="intElementType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:int"&gt;
&lt;xs:attribute name="index" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__unsignedintparm"><a name="rzahhxpcmlschemaxsd__unsignedintparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- Unsigned Integer parameter (4 bytes on server) --&gt;
&lt;xs:element name="unsignedIntParm" type="unsignedIntParmType" nillable="true"
substitutionGroup="unsignedIntParmGroup" /&gt;
&lt;xs:complexType name="unsignedIntParmType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="unsignedIntFieldType"&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayofunsignedintparm"><a name="rzahhxpcmlschemaxsd__arrayofunsignedintparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- unsigned intParm array type --&gt;
&lt;xs:element name="arrayOfUnsignedIntParm" type="unsignedIntParmArrayType"
substitutionGroup="unsignedIntParmArrayGroup" nillable="true" /&gt;
&lt;xs:complexType name="unsignedIntParmArrayType"&gt;
&lt;xs:sequence&gt;
&lt;xs:element name="i" type="unsignedIntElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="unsignedIntElementType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:unsignedInt"&gt;
&lt;xs:attribute name="index" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__shortparm"><a name="rzahhxpcmlschemaxsd__shortparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- Short integer parameter (2 bytes on server) --&gt;
&lt;xs:element name="shortParm" type="shortParmType" nillable="true" substitutionGroup="shortParmGroup"/&gt;
&lt;xs:complexType name="shortParmType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="shortFieldType"&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayofshortparm"><a name="rzahhxpcmlschemaxsd__arrayofshortparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- shortParm array type --&gt;
&lt;xs:element name="arrayOfShortParm" type="shortParmArrayType" substitutionGroup="shortParmArrayGroup"
nillable="true" /&gt;
&lt;xs:complexType name="shortParmArrayType"&gt;
&lt;xs:sequence&gt;
&lt;xs:element name="i" type="shortElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="shortElementType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:short"&gt;
&lt;xs:attribute name="index" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__unsignedshortparm"><a name="rzahhxpcmlschemaxsd__unsignedshortparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- Unsigned Short integer parameter (2 bytes on server) --&gt;
&lt;xs:element name="unsignedShortParm" type="unsignedShortParmType" nillable="true"
substitutionGroup="unsignedShortParmGroup" /&gt;
&lt;xs:complexType name="unsignedShortParmType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="unsignedShortFieldType"&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayofunsignedshortparm"><a name="rzahhxpcmlschemaxsd__arrayofunsignedshortparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- unsignedShortParm array type --&gt;
&lt;xs:element name="arrayOfUnsignedShortParm" type="unsignedShortParmArrayType"
substitutionGroup="unsignedShortParmArrayGroup" nillable="true" /&gt;
&lt;xs:complexType name="unsignedShortParmArrayType"&gt;
&lt;xs:sequence&gt;
&lt;xs:element name="i" type="unsignedShortElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="unsignedShortElementType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:unsignedShort"&gt;
&lt;xs:attribute name="index" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__longparm"><a name="rzahhxpcmlschemaxsd__longparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- Long integer parameter (8 bytes on server) --&gt;
&lt;xs:element name="longParm" type="longParmType" nillable="true" substitutionGroup="longParmGroup" /&gt;
&lt;xs:complexType name="longParmType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="longFieldType"&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayoflongparm"><a name="rzahhxpcmlschemaxsd__arrayoflongparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- longParm array type --&gt;
&lt;xs:element name="arrayOfLongParm" type="longParmArrayType" substitutionGroup="longParmArrayGroup"
nillable="true" /&gt;
&lt;xs:complexType name="longParmArrayType"&gt;
&lt;xs:sequence&gt;
&lt;xs:element name="i" type="longElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="longElementType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:long"&gt;
&lt;xs:attribute name="index" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__zoneddecimalparm"><a name="rzahhxpcmlschemaxsd__zoneddecimalparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- ZonedDecimal parameter --&gt;
&lt;xs:element name="zonedDecimalParm" type="zonedDecimalParmType" nillable="true"
substitutionGroup="zonedDecimalParmGroup" /&gt;
&lt;xs:complexType name="zonedDecimalParmType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="zonedDecimalFieldType"&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayofzoneddecimalparm"><a name="rzahhxpcmlschemaxsd__arrayofzoneddecimalparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- zonedDecimalParm array type --&gt;
&lt;xs:element name="arrayOfZonedDecimalParm" type="zonedDecimalParmArrayType"
substitutionGroup="zonedDecimalParmArrayGroup" nillable="true" /&gt;
&lt;xs:complexType name="zonedDecimalParmArrayType"&gt;
&lt;xs:sequence&gt;
&lt;xs:element name="i" type="zonedDecimalElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;!-- The total number of digits in the field ('length' in PCML). --&gt;
&lt;xs:attribute name="totalDigits" type="xs:positiveInteger"/&gt;
&lt;!-- The number of fractional digits ('precision' in PCML). --&gt;
&lt;xs:attribute name="fractionDigits" type="xs:nonNegativeInteger"/&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="zonedDecimalElementType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:decimal"&gt;
&lt;xs:attribute name="index" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__packeddecimalparm"><a name="rzahhxpcmlschemaxsd__packeddecimalparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- packedDecimal parameter --&gt;
&lt;xs:element name="packedDecimalParm" type="packedDecimalParmType" nillable="true"
substitutionGroup="packedDecimalParmGroup" /&gt;
&lt;xs:complexType name="packedDecimalParmType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="packedDecimalFieldType"&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayofpackeddecimalparm"><a name="rzahhxpcmlschemaxsd__arrayofpackeddecimalparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- packedDecimalParm array type --&gt;
&lt;xs:element name="arrayOfPackedDecimalParm" type="packedDecimalParmArrayType"
substitutionGroup="packedDecimalParmArrayGroup" nillable="true" /&gt;
&lt;xs:complexType name="packedDecimalParmArrayType"&gt;
&lt;xs:sequence&gt;
&lt;xs:element name="i" type="packedDecimalElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;xs:attribute name="totalDigits" type="xs:positiveInteger"/&gt;
&lt;xs:attribute name="fractionDigits" type="xs:nonNegativeInteger"/&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="packedDecimalElementType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:decimal"&gt;
&lt;xs:attribute name="index" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__floatparm"><a name="rzahhxpcmlschemaxsd__floatparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- Float parameter (4 bytes on server) --&gt;
&lt;xs:element name="floatParm" type="floatParmType" nillable="true" substitutionGroup="floatParmGroup"/&gt;
&lt;xs:complexType name="floatParmType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="floatFieldType"&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayoffloatparm"><a name="rzahhxpcmlschemaxsd__arrayoffloatparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- floatParm array type --&gt;
&lt;xs:element name="arrayOfFloatParm" type="floatParmArrayType" substitutionGroup="floatParmArrayGroup"
nillable="true" /&gt;
&lt;xs:complexType name="floatParmArrayType"&gt;
&lt;xs:sequence&gt;
&lt;xs:element name="i" type="floatElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="floatElementType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:float"&gt;
&lt;xs:attribute name="index" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__doubleparm"><a name="rzahhxpcmlschemaxsd__doubleparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- Double parameter (8 bytes on server) --&gt;
&lt;xs:element name="doubleParm" type="doubleParmType" nillable="true"
substitutionGroup="doubleParmGroup" /&gt;
&lt;xs:complexType name="doubleParmType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="doubleFieldType"&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayofdoubleparm"><a name="rzahhxpcmlschemaxsd__arrayofdoubleparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- doubleParm array type --&gt;
&lt;xs:element name="arrayOfDoubleParm" type="doubleParmArrayType"
substitutionGroup="doubleParmArrayGroup" nillable="true" /&gt;
&lt;xs:complexType name="doubleParmArrayType"&gt;
&lt;xs:sequence&gt;
&lt;xs:element name="i" type="doubleElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="doubleElementType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:double"&gt;
&lt;xs:attribute name="index" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__hexbinaryparm"><a name="rzahhxpcmlschemaxsd__hexbinaryparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- Hex binary parameter (any number of bytes; unsigned) --&gt;
&lt;xs:element name="hexBinaryParm" type="hexBinaryParmType" substitutionGroup="hexBinaryParmGroup" /&gt;
&lt;xs:complexType name="hexBinaryParmType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="hexBinaryFieldType"&gt;
&lt;!-- The field length in bytes ('length' in PCML). --&gt;
&lt;xs:attribute name="totalBytes" type="xs:string"/&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayofhexbinaryparm"><a name="rzahhxpcmlschemaxsd__arrayofhexbinaryparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- hexBinaryParm array type --&gt;
&lt;xs:element name="arrayOfHexBinaryParm" type="hexBinaryParmArrayType"
substitutionGroup="hexBinaryParmArrayGroup" nillable="true" /&gt;
&lt;xs:complexType name="hexBinaryParmArrayType"&gt;
&lt;xs:sequence&gt;
&lt;xs:element name="i" type="hexBinaryElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;xs:attribute name="totalBytes" type="xs:string"/&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="hexBinaryElementType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:hexBinary"&gt;
&lt;xs:attribute name="index" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__structparm"><a name="rzahhxpcmlschemaxsd__structparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- Structure parm type --&gt;
&lt;xs:element name="structParm" type="structParmType" substitutionGroup="structParmGroup" /&gt;
&lt;xs:complexType name="structParmType"&gt;
&lt;xs:complexContent&gt;
&lt;xs:extension base="structureParmArray"&gt;
&lt;xs:attribute name="struct" type="string50"/&gt;
&lt;!-- Specifies whether the parameter is passed by value or reference ('passby' in PCML).--&gt;
&lt;!-- Value only allowed for integer parameters. --&gt;
&lt;xs:attribute name="passMode" type="passModeType"/&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:complexContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayofstructparm"><a name="rzahhxpcmlschemaxsd__arrayofstructparm"><!-- --></a><span class="kwd"></span></span>&lt;!-- Structure parm array type --&gt;
&lt;xs:element name="arrayOfStructParm" type="structParmArrayType"
substitutionGroup="structParmArrayGroup" nillable="true" /&gt;
&lt;xs:complexType name="structParmArrayType"&gt;
&lt;xs:sequence&gt;
&lt;!-- struct_i tag represents struct or struct parm array elements. --&gt;
&lt;xs:element name="struct_i" type="structElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;xs:attributeGroup ref="commonParmAttrs"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;xs:attribute name="struct" type="string50"/&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="structElementType"&gt;
&lt;xs:complexContent&gt;
&lt;xs:extension base="structureParmArray"&gt;
&lt;xs:attribute name="index" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:complexContent&gt;
&lt;/xs:complexType&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__struct"><a name="rzahhxpcmlschemaxsd__struct"><!-- --></a><span class="kwd"></span></span>&lt;!-- Struct element --&gt;
&lt;xs:element name="struct" type="structureParmArray" substitutionGroup="structOrProgram" /&gt;
<span class="synph" id="rzahhxpcmlschemaxsd__arrayofstruct"><a name="rzahhxpcmlschemaxsd__arrayofstruct"><!-- --></a><span class="kwd"></span></span>&lt;!-- Struct array type --&gt;
&lt;xs:element name="arrayOfStruct" type="structArrayType" substitutionGroup="structArrayGroup"
nillable="true" /&gt;
&lt;xs:complexType name="structArrayType"&gt;
&lt;xs:sequence&gt;
&lt;!-- struct_i tag represents struct elements in an array. --&gt;
&lt;xs:element name="struct_i" type="structElementType" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;!-- The name of the struct. --&gt;
&lt;xs:attribute name="name" type="string50"/&gt;
&lt;!-- Number of elements in the array. --&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string" /&gt;
&lt;!-- Specifies whether this is an input, output, or input-output struct ('usage' in PCML). --&gt;
&lt;xs:attribute name="passDirection" type="passDirectionType"/&gt;
&lt;!-- The offset to the struct within an output parameter. --&gt;
&lt;xs:attribute name="offset" type="xs:string" /&gt;
&lt;!-- The base location from which the 'offset' attribute is relative. --&gt;
&lt;xs:attribute name="offsetFrom" type="xs:string" /&gt;
&lt;!-- The number of bytes to reserve for output data for the element. --&gt;
&lt;xs:attribute name="outputSize" type="xs:string" /&gt;
&lt;!-- The lowest version of i5/OS on which this element exists. --&gt;
&lt;xs:attribute name="minvrm" type="string10" /&gt;
&lt;!-- The highest version of i5/OS on which this element exists. --&gt;
&lt;xs:attribute name="maxvrm" type="string10" /&gt;
&lt;/xs:complexType&gt;
&lt;!-- Attributes that are common to all data field types. --&gt;
&lt;xs:attributeGroup name="commonParmAttrs"&gt;
&lt;!-- Specifies whether this is an input, output, or input-output parameter ('usage' in PCML). --&gt;
&lt;!-- The default value if none is specified is 'inherit'. --&gt;
&lt;xs:attribute name="passDirection" type="passDirectionType"/&gt;
&lt;!-- Specifies whether the parameter is passed by reference or value ('passby' in PCML). --&gt;
&lt;!-- The default value if none is specified is 'reference'. --&gt;
&lt;xs:attribute name="passMode" type="passModeType" /&gt;
&lt;!-- The offset to the element within an output parameter. --&gt;
&lt;!-- The default value if none is specified is 0. --&gt;
&lt;xs:attribute name="offset" type="xs:string" /&gt;
&lt;!-- The base location from which the 'offset' attribute is relative. --&gt;
&lt;xs:attribute name="offsetFrom" type="xs:string" /&gt;
&lt;!-- The number of bytes to reserve for output data for the element. --&gt;
&lt;xs:attribute name="outputSize" type="xs:string" /&gt;
&lt;!-- The lowest version of i5/OS to which this field applies. --&gt;
&lt;!-- If not specified, we assume this field applies to all versions. --&gt;
&lt;xs:attribute name="minvrm" type="string10" /&gt;
&lt;!-- The highest version of i5/OS to which this field applies. --&gt;
&lt;!-- If not specified, we assume this field applies to all versions. --&gt;
&lt;xs:attribute name="maxvrm" type="string10" /&gt;
&lt;/xs:attributeGroup&gt;
&lt;xs:simpleType name="passDirectionType"&gt;
&lt;xs:restriction base="xs:string"&gt;
&lt;xs:enumeration value="in"/&gt;
&lt;xs:enumeration value="inout"/&gt;
&lt;xs:enumeration value="out"/&gt;
&lt;xs:enumeration value="inherit"/&gt;
&lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
&lt;xs:simpleType name="passModeType"&gt;
&lt;xs:restriction base="xs:string"&gt;
&lt;xs:enumeration value="value"/&gt;
&lt;xs:enumeration value="reference"/&gt;
&lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
&lt;!-- Following types are to maintain compatibility with PCML --&gt;
&lt;xs:simpleType name="bidiStringTypeType"&gt;
&lt;xs:restriction base="xs:string"&gt;
&lt;xs:enumeration value="ST4"/&gt;
&lt;xs:enumeration value="ST5"/&gt;
&lt;xs:enumeration value="ST6"/&gt;
&lt;xs:enumeration value="ST7"/&gt;
&lt;xs:enumeration value="ST8"/&gt;
&lt;xs:enumeration value="ST9"/&gt;
&lt;xs:enumeration value="ST10"/&gt;
&lt;xs:enumeration value="ST11"/&gt;
&lt;xs:enumeration value="DEFAULT"/&gt;
&lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
&lt;xs:simpleType name="charType"&gt;
&lt;xs:restriction base="xs:string"&gt;
&lt;xs:enumeration value="onebyte"/&gt;
&lt;xs:enumeration value="twobyte"/&gt;
&lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
&lt;xs:simpleType name="trimType"&gt;
&lt;xs:restriction base="xs:string"&gt;
&lt;xs:enumeration value="none"/&gt;
&lt;xs:enumeration value="left"/&gt;
&lt;xs:enumeration value="right"/&gt;
&lt;xs:enumeration value="both"/&gt;
&lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
&lt;xs:simpleType name="returnValueType"&gt;
&lt;xs:restriction base="xs:string"&gt;
&lt;xs:enumeration value="void"/&gt;
&lt;xs:enumeration value="integer"/&gt;
&lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
&lt;xs:complexType name="structureParmArray"&gt;
&lt;xs:sequence&gt;
&lt;xs:group ref="structureParm" minOccurs="0" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;xs:attribute name="name" type="string50"/&gt;
&lt;xs:attribute name="passDirection" type="passDirectionType"/&gt;
&lt;xs:attribute name="offset" type="xs:string" /&gt;
&lt;xs:attribute name="offsetFrom" type="xs:string" /&gt;
&lt;xs:attribute name="outputSize" type="xs:string" /&gt;
&lt;xs:attribute name="minvrm" type="string10" /&gt;
&lt;xs:attribute name="maxvrm" type="string10" /&gt;
&lt;/xs:complexType&gt;
&lt;!-- A structureParm is exactly one of the following: stringParm, intParm,
shortParm, longParm, zonedDecimalParm, packedDecimalParm, floatParm,
doubleParm, or hexBinaryParm. --&gt;
&lt;xs:group name="structureParm"&gt;
&lt;xs:choice&gt;
&lt;xs:element ref="stringParmGroup" /&gt;
&lt;xs:element ref="stringParmArrayGroup" /&gt;
&lt;xs:element ref="intParmGroup" /&gt;
&lt;xs:element ref="intParmArrayGroup" /&gt;
&lt;xs:element ref="unsignedIntParmGroup" /&gt;
&lt;xs:element ref="unsignedIntParmArrayGroup" /&gt;
&lt;xs:element ref="shortParmGroup" /&gt;
&lt;xs:element ref="shortParmArrayGroup" /&gt;
&lt;xs:element ref="unsignedShortParmGroup" /&gt;
&lt;xs:element ref="unsignedShortParmArrayGroup" /&gt;
&lt;xs:element ref="longParmGroup" /&gt;
&lt;xs:element ref="longParmArrayGroup" /&gt;
&lt;xs:element ref="zonedDecimalParmGroup" /&gt;
&lt;xs:element ref="zonedDecimalParmArrayGroup" /&gt;
&lt;xs:element ref="packedDecimalParmGroup" /&gt;
&lt;xs:element ref="packedDecimalParmArrayGroup" /&gt;
&lt;xs:element ref="floatParmGroup" /&gt;
&lt;xs:element ref="floatParmArrayGroup" /&gt;
&lt;xs:element ref="doubleParmGroup" /&gt;
&lt;xs:element ref="doubleParmArrayGroup" /&gt;
&lt;xs:element ref="hexBinaryParmGroup" /&gt;
&lt;xs:element ref="hexBinaryParmArrayGroup" /&gt;
&lt;xs:element ref="structParmGroup" /&gt;
&lt;xs:element ref="structParmArrayGroup"/&gt;
&lt;xs:element ref="structArrayGroup"/&gt;
&lt;xs:element ref="struct"/&gt;
&lt;/xs:choice&gt;
&lt;/xs:group&gt;
&lt;!-- Field Definition schema. --&gt;
&lt;!-- Define basic iSeries native data types. --&gt;
&lt;xs:complexType name="zonedDecimal"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:decimal"&gt;
&lt;xs:attribute name="totalDigits" type="xs:positiveInteger" /&gt;
&lt;xs:attribute name="fractionDigits" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="packedDecimal"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:decimal"&gt;
&lt;xs:attribute name="totalDigits" type="xs:positiveInteger" /&gt;
&lt;xs:attribute name="fractionDigits" type="xs:nonNegativeInteger" /&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;xs:complexType name="structureFieldArray"&gt;
&lt;xs:sequence&gt;
&lt;xs:group ref="structureField" minOccurs="1" maxOccurs="unbounded"/&gt;
&lt;/xs:sequence&gt;
&lt;xs:attribute name="name" type="string50"/&gt;
&lt;!-- 'count' is required if you want to input and/or output array data as XPCML. --&gt;
&lt;xs:attribute name="count" type="xs:string"/&gt;
&lt;/xs:complexType&gt;
&lt;!-- Abstract type for "struct or program". --&gt;
&lt;xs:element name="structOrProgram" abstract="true" /&gt;
&lt;!-- Abstract type for all data field types. --&gt;
&lt;xs:element name="stringFieldGroup" type="stringFieldType" abstract="true" /&gt;
&lt;xs:element name="intFieldGroup" type="intFieldType" abstract="true" /&gt;
&lt;xs:element name="unsignedIntFieldGroup" type="unsignedIntFieldType" abstract="true" /&gt;
&lt;xs:element name="shortFieldGroup" type="shortFieldType" abstract="true" /&gt;
&lt;xs:element name="unsignedShortFieldGroup" type="unsignedShortFieldType" abstract="true" /&gt;
&lt;xs:element name="longFieldGroup" type="longFieldType" abstract="true" /&gt;
&lt;xs:element name="zonedDecimalFieldGroup" type="zonedDecimalFieldType" abstract="true" /&gt;
&lt;xs:element name="packedDecimalFieldGroup" type="packedDecimalFieldType" abstract="true" /&gt;
&lt;xs:element name="floatFieldGroup" type="floatFieldType" abstract="true" /&gt;
&lt;xs:element name="doubleFieldGroup" type="doubleFieldType" abstract="true" /&gt;
&lt;xs:element name="hexBinaryFieldGroup" type="hexBinaryFieldType" abstract="true" /&gt;
&lt;xs:element name="structFieldGroup" type="structFieldType" abstract="true" /&gt;
&lt;!-- Declare each field element to be a specific field type. --&gt;
&lt;xs:element name="stringField" type="stringFieldType" substitutionGroup="stringFieldGroup"
nillable="true"/&gt;
&lt;xs:element name="intField" type="intFieldType" nillable="true"
substitutionGroup="intFieldGroup" /&gt;
&lt;xs:element name="unsignedIntField" type="unsignedIntFieldType"
substitutionGroup="unsignedIntFieldGroup" nillable="true"/&gt;
&lt;xs:element name="shortField" type="shortFieldType" nillable="true"
substitutionGroup="shortFieldGroup" /&gt;
&lt;xs:element name="unsignedShortField" type="unsignedShortFieldType" nillable="true"
substitutionGroup="unsignedShortFieldGroup" /&gt;
&lt;xs:element name="longField" type="longFieldType" nillable="true"
substitutionGroup="longFieldGroup" /&gt;
&lt;xs:element name="hexBinaryField" type="hexBinaryFieldType" nillable="true"
substitutionGroup="hexBinaryFieldGroup" /&gt;
&lt;xs:element name="zonedDecimalField" type="zonedDecimalFieldType" nillable="true"
substitutionGroup="zonedDecimalFieldGroup" /&gt;
&lt;xs:element name="packedDecimalField" type="packedDecimalFieldType" nillable="true"
substitutionGroup="packedDecimalFieldGroup" /&gt;
&lt;xs:element name="doubleField" type="doubleFieldType" nillable="true"
substitutionGroup="doubleFieldGroup" /&gt;
&lt;xs:element name="floatField" type="floatFieldType" nillable="true"
substitutionGroup="floatFieldGroup" /&gt;
&lt;xs:element name="structField" type="structFieldType" nillable="true"
substitutionGroup="structFieldGroup" /&gt;
&lt;!-- A StructureField is exactly one of the following: stringField, intField,
shortField, longField, zonedDecimalField, packedDecimalField, floatField,
doubleField, or hexBinaryField. --&gt;
&lt;xs:group name="structureField"&gt;
&lt;xs:choice&gt;
&lt;xs:element ref="stringFieldGroup"/&gt;
&lt;xs:element ref="intFieldGroup"/&gt;
&lt;xs:element ref="unsignedIntFieldGroup"/&gt;
&lt;xs:element ref="shortFieldGroup"/&gt;
&lt;xs:element ref="unsignedShortFieldGroup"/&gt;
&lt;xs:element ref="longFieldGroup"/&gt;
&lt;xs:element ref="zonedDecimalFieldGroup"/&gt;
&lt;xs:element ref="packedDecimalFieldGroup"/&gt;
&lt;xs:element ref="floatFieldGroup"/&gt;
&lt;xs:element ref="doubleFieldGroup"/&gt;
&lt;xs:element ref="hexBinaryFieldGroup"/&gt;
&lt;xs:element ref="structParmGroup"/&gt;
&lt;xs:element ref="struct"/&gt;
&lt;/xs:choice&gt;
&lt;/xs:group&gt;
&lt;!-- Character field --&gt;
&lt;!-- Maps to AS400Text. --&gt;
&lt;xs:complexType name="stringFieldType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:string"&gt;
&lt;!-- Number of characters. --&gt;
&lt;xs:attribute name="length" type="xs:string"/&gt;
&lt;!-- Indicates the field's encoding (CCSID) on the server. --&gt;
&lt;xs:attribute name="ccsid" type="xs:string"/&gt;
&lt;xs:attribute name="trim" type="trimType" /&gt;
&lt;xs:attribute name="bytesPerChar" type="charType" /&gt;
&lt;xs:attribute name="bidiStringType" type="bidiStringTypeType" /&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;!-- hexBinary field --&gt;
&lt;!-- Maps to AS400ByteArray. --&gt;
&lt;xs:complexType name="hexBinaryFieldType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:hexBinary"&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;!-- Float field --&gt;
&lt;!-- Maps to AS400Float4. --&gt;
&lt;xs:complexType name="floatFieldType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:float"&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;!-- zonedDecimal field --&gt;
&lt;!-- Maps to AS400ZonedDecimal. --&gt;
&lt;xs:complexType name="zonedDecimalFieldType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="zonedDecimal"&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;!-- packedDecimal field --&gt;
&lt;!-- Maps to AS400PackedDecimal. --&gt;
&lt;xs:complexType name="packedDecimalFieldType"&gt;
&lt;xs:simpleContent&gt;
&lt;!-- In DDS, "binary" values are 1-18 digits; if field length is
greater than 9, then decimal positions value must be 0. --&gt;
&lt;xs:extension base="packedDecimal"&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;!-- int field --&gt;
&lt;!-- Maps to AS400Bin4. --&gt;
&lt;xs:complexType name="intFieldType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:int"&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;!-- unsigned int field --&gt;
&lt;!-- Maps to AS400Bin4. --&gt;
&lt;xs:complexType name="unsignedIntFieldType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:unsignedInt"&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;!-- short field --&gt;
&lt;!-- Maps to AS400Bin2. --&gt;
&lt;xs:complexType name="shortFieldType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:short"&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;!-- unsigned short field --&gt;
&lt;!-- Maps to AS400Bin2. --&gt;
&lt;xs:complexType name="unsignedShortFieldType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:unsignedShort"&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;!-- long field --&gt;
&lt;!-- Maps to AS400Bin8. --&gt;
&lt;xs:complexType name="longFieldType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:long"&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;!-- double field --&gt;
&lt;!-- Maps to AS400Float8. --&gt;
&lt;xs:complexType name="doubleFieldType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:double"&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;!-- struct Field --&gt;
&lt;xs:complexType name="structFieldType"&gt;
&lt;xs:simpleContent&gt;
&lt;xs:extension base="xs:string"&gt;
&lt;xs:attribute name="struct" type="string50"/&gt;
&lt;xs:attributeGroup ref="commonFieldAttrs"/&gt;
&lt;/xs:extension&gt;
&lt;/xs:simpleContent&gt;
&lt;/xs:complexType&gt;
&lt;!-- Attributes that are common to all data field types. --&gt;
&lt;xs:attributeGroup name="commonFieldAttrs"&gt;
&lt;xs:attribute name="name" type="string50"/&gt;
&lt;xs:attribute name="columnHeading1" type="string20"/&gt;
&lt;xs:attribute name="columnHeading2" type="string20"/&gt;
&lt;xs:attribute name="columnHeading3" type="string20"/&gt;
&lt;xs:attribute name="description" type="string50"/&gt;
&lt;xs:attribute name="defaultValue" type="xs:string"/&gt;&lt;!-- Max length of string is 65535 characters. --&gt;
&lt;xs:attribute name="nullable" type="xs:boolean"/&gt;
&lt;xs:attribute name="isEmptyString" type="xs:boolean"/&gt;&lt;!-- Indicate this is an empty string. --&gt;
&lt;/xs:attributeGroup&gt;
&lt;!-- Utility types. --&gt;
&lt;xs:simpleType name="ccsidType"&gt;
&lt;xs:restriction base="xs:nonNegativeInteger"&gt;
&lt;xs:maxInclusive value="65535"/&gt;
&lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
&lt;xs:simpleType name="string10"&gt;
&lt;xs:restriction base="xs:string"&gt;
&lt;xs:maxLength value="10"/&gt;
&lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
&lt;xs:simpleType name="string20"&gt;
&lt;xs:restriction base="xs:string"&gt;
&lt;xs:maxLength value="20"/&gt;
&lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
&lt;xs:simpleType name="string50"&gt;
&lt;xs:restriction base="xs:string"&gt;
&lt;xs:maxLength value="50"/&gt;
&lt;/xs:restriction&gt;
&lt;/xs:simpleType&gt;
&lt;/xs:schema&gt;</pre>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="rzahhxpcmlschema.htm" title="XPCML documents, called XPCML source files, contain tags and data that fully define calls to programs on your iSeries server.">XPCML schema and syntax</a></div>
</div>
</div>
</body>
</html>