Generar las constantes de PL/I para las series enumeradas
En este tema se describe la forma de generar las constantes de las series que incluyen una faceta de enumeración.
Independientemente de si su esquema XML ha sido creado con tipos con nombre o anónimos, las constantes de PL/I se pueden generar para series que contengan una faceta de enumeración.
Tipos simples denominados
Cuando se construye un esquema XML mediante tipos simples denominados que incluyan una faceta de denominación, solo es necesario construir el tipo simple una vez dentro del esquema. Los tipos denominados son exclusivos, lo que permite que se generen las contantes de PL/I una sola vez en el caso de series enumeradas. Después de generadas, se pueden referir a ellas elementos o atributos tantas veces como sea necesario sin necesidad de volver a generar las constantes, evitando el problema de las constantes de PL/I duplicadas. Un ejemplo de este tipo de esquema se muestra en la Figura 1
<xs:simpleType name="rainbowcolor">
<xs:restriction base="xs:string">
<xs:enumeration value="Violet"/>
<xs:enumeration value="Indigo"/>
<xs:enumeration value="Blue"/>
<xs:enumeration value="Green"/>
<xs:enumeration value="Yellow"/>
<xs:enumeration value="Orange"/>
<xs:enumeration value="Red"/>
</xs:restriction>
</xs:simpleType>
El tipo simple con nombre rainbowcolor se puede referenciar varias veces tal como se muestra en la Figura 2.
<xs:schema xmlns:poc="http://schemas.cs.csg.com/poc"...
<xs:element name="color1" type="poc:rainbowcolor:/>
<xs:element name="color2" type="poc:rainbowcolor:/>
<xs:attribute name="att_color3" type="poc:rainbowcolor:/>
Después de definir el esquema XML, el archivo de inclusión de PL/I incluye las constantes de PL/I generadas para los tipos de datos denominados con facetas de enumeración. El convenio de denominación utilizado para este tipo es <name
of the type>_typ_enm donde typ indica el tipo y enm indica la enumeración. Consulte Sufijos añadidos a los identificadores de PL/I para obtener más información sobre estos y otros sufijos. En la Figura 3 se muestra un ejemplo del archivo de inclusión PL/I.
/*********************************************************************
* PL/I constants for enumerated strings declared in named simple type
* "poc:rainbowcolor".
**********************************************************************/
DCL 01 rainbowcolor_typ_enm,
02 Violet CHAR VALUE('E589969385A3'x),
02 Indigo CHAR VALUE('C99584898796'x),
02 Blue CHAR VALUE('C293A485'x),
02 Green CHAR VALUE('C799858595'x),
02 Yellow CHAR VALUE('E885939396A6'x),
02 Orange CHAR VALUE('D69981958785'x),
02 Red CHAR VALUE('D98584'x);
_enm, _enm1,
_enm2) y la sección de comentario del archivo de inclusión identificará el tipo.<xs:element name="color1" type="poc1:rainbowcolor:/>
<xs:element name="color2" type="poc2:rainbowcolor:/>
/***************************************************************
* PL/I constants for enumerated strings declared in named simple type
* "poc1:rainbowcolor".
********************************************************************/
DCL 01 rainbowcolor_typ_enm,
02 Violet CHAR VALUE('E589969385A3'x),
02 Red CHAR VALUE('D98584'x);
/*********************************************************************
* PL/I constants for enumerated strings declared in named simple type
* "poc2:rainbowcolor".
********************************************************************/
DCL 01 rainbowcolor_typ_enm1,
02 Violet CHAR VALUE('E589969385A3'x),
02 Red CHAR VALUE('D98584'x);
Tipos simples anónimos
En el caso de tipos simples anónimos, las constantes de PL/I se generan cada vez que se hace referencia en un elemento o atributo a una instancia anónima.
<xs:element name="rcolor">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Violet"/>
<xs:enumeration value="Red"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
/*********************************************************************
* PL/I constants for enumerated strings declared in an anonymous simpl
* e type for element "rcolor".
********************************************************************/
DCL 01 rcolor_ele_enm,
02 Violet CHAR VALUE('E589969385A3'x),
02 Red CHAR VALUE('D98584'x);
El convenio de denominación utilizado para este tipo es <name
of the element>_[ele/att]_enm donde ele indica el elemento, att indica el atributo y enm indica la enumeración. Consulte Sufijos añadidos a los identificadores de PL/I para obtener más información sobre estos y otros sufijos.
- DBCS: se utiliza WCHAR y se codifican los literales VALUES como hexadecimal UTF-16. La memConvert función puede utilizarse para convertir UTF-16 a DBCS cuando se desee.
- SBCS: CHAR se utiliza para codificar los VALUES como hexadecimales en la página de códigos especificada como destino.