2.3.4 Item要素(要素の対応づけの定義)
Item要素は,要素データを持つ個々のXML要素をCOBOLデータ項目に対応づける要素です。
- 形式
-
<Item elemName="XMLの要素名"
〔cobName="Item要素に対応する名称"〕
〔type="type属性値"〕
〔size="けた数"〕
〔fractionalDigits="けた数"〕
〔emptyValue="type属性値に対応したCOBOLの定数"〕
〔sign="符号種別"〕
〔trim="yes|no"〕
〔nameOfFlagVar="アクセス情報フラグの名称"〕
〔nameOfLengthVar="データ長の名称"〕
〔verbatim="yes|no"〕
〔update="yes"〕
〔emptyContentValue="type属性値に対応したCOBOLの定数"〕
〔invalidCharValue="type属性値に対応したCOBOLの定数"〕
〔overflowValue="type属性値に対応したCOBOLの定数"〕
/>
- type属性の値と指定できるその他の属性の関連
-
Item要素に指定できる属性のうち,次の表にある属性は,type属性の値によって指定の可否が異なります。次の表に示さない属性は,type属性の値にかかわらず指定できます。
type属性の値
属性の指定の可否
size
sign
fractionalDigits
trim
verbatim
alphanumeric
○
×
×
○
○
national
○
×
×
○
×
numeric
○
○
○
○
×
packed
○
○
○
○
×
binary
○
○
○
○
×
float
×
×
×
×
×
double
×
×
×
×
×
- (凡例)
-
○:指定できます。
×:指定できません。
- 〈この項の構成〉
(1) elemName属性
- 形式
-
elemName="XMLの要素名"
- 機能
- 規則
-
-
XMLの要素名称は,XMLで規定された文字で構成する必要があります。
-
elemName属性に指定するXML要素は,要素データ(#PCDATAキーワードまたはEMPTYキーワード)を持っている必要があります。
-
elemName属性で指定したXMLの要素名称がCOBOLデータ項目名として使用できない場合,COBOL原始プログラム生成時にエラーとなります。この場合,cobName属性を使ってデータ項目名を指定する必要があります。
-
- 指定例
-
XML要素「goods」「name」「home」および「cellular」をそれぞれCOBOLデータ項目に対応づける例を,次に示します。
- (DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE table [ <!ELEMENT table (order)*> <!ELEMENT order (goods, name, telephone)> <!ELEMENT goods (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT telephone (home | cellular)> <!ELEMENT home (#PCDATA)> <!ELEMENT cellular (#PCDATA)> ]> <table/>
- (DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?> <Interface interfaceName="EXAMPLE"> <BaseElement elemName="order"> <Group cobName="ORDERX"> <Item elemName="goods" type="alphanumeric" size="30"/> <Item elemName="name" cobName="FULLNAME" type="alphanumeric" size="30"/> <Group cobName="telephone"> <Item elemName="home" type="alphanumeric" size="13"/> <Item elemName="cellular" type="alphanumeric" size="13"/> </Group> </Group> </BaseElement> </Interface>
- (生成されるCOBOLデータ項目)
01 ORDERX. 02 goods PIC X(30). 02 FULLNAME PIC X(30). 02 telephone. 03 home PIC X(13). 03 cellular PIC X(13).
(2) cobName属性
- 形式
-
cobName="Item要素に対応する名称"
- 機能
-
elemName属性の値の代わりにCOBOLデータ項目の名称を指定します。elemName属性に指定するXML要素の名称が,COBOLデータ項目名に使用できない場合などに指定します。
- 規則
-
cobName属性には,COBOLデータ項目名として使用できる名称を指定する必要があります。COBOLデータ項目名として使用できない名称を指定した場合,COBOL原始プログラムの生成時にエラーとなります。
- 指定例
-
XML要素「name」のCOBOLデータ項目名に「FULLNAME」,XML要素「address」のCOBOLデータ項目名に「ADDRESS1」をそれぞれ指定する例を次に示します。
- (DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE table [ <!ELEMENT table (order)*> <!ELEMENT order (goods, name, fulladdress)> <!ELEMENT goods (#PCDATA)> <!ELEMENT name (#PCDATA)> <!ELEMENT fulladdress (zipcode, address)> <!ELEMENT zipcode (#PCDATA)> <!ELEMENT address (#PCDATA)> ]> <table/>
- (DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?> <Interface interfaceName="EXAMPLE"> <BaseElement elemName="order"> <Group cobName="ORDER1"> <Item elemName="goods" type="alphanumeric" size="30"/> <Item elemName="name" cobName="FULLNAME" type="alphanumeric" size="30"/> <Group cobName="FULLADDRESS"> <Item elemName="zipcode" type="alphanumeric" size="8"/> <Item elemName="address" cobName="ADDRESS1" type="alphanumeric" size="120"/> </Group> </Group> </BaseElement> </Interface>
- (生成されるCOBOLデータ項目)
01 ORDER1. 02 goods PIC X(30). 02 FULLNAME PIC X(30). 02 FULLADDRESS. 03 zipcode PIC X(8). 03 ADDRESS1 PIC X(120).
(3) type属性
- 形式
-
type="type属性値"
- 機能
-
Item要素に対応するCOBOLデータ項目のデータ型を指定します。
type属性に指定する値と,生成されるCOBOLデータ項目の対応を表 2-2に示します。
表2‒2 type属性に指定する値と生成されるCOBOLデータ項目の対応 type属性の値
生成されるCOBOLデータ項目
英数字項目
日本語項目
数字項目(外部10進形式)
数字項目(内部10進形式)
数字項目(2進形式)
数字項目(内部浮動小数点形式 4バイト)
数字項目(内部浮動小数点形式 8バイト)
- 規則
-
type属性の指定を省略した場合は,"alphanumeric"が仮定されます。
- 指定例
-
XML要素「description」を英数字項目に対応づける例を次に示します。
- (DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE table [ <!ELEMENT table (description)> <!ELEMENT description (#PCDATA)> ]> <table/>
- (DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?> <Interface interfaceName="EXAMPLE"> <BaseElement elemName="table"> <Item elemName="description" type="alphanumeric"/> </BaseElement> </Interface>
- (生成されるCOBOLデータ項目)
01 description PIC X(100).
(4) size属性
- 形式
-
size="けた数"
- 機能
-
COBOLデータ項目に対応するPICTURE句のけた数を指定します。
size属性に指定できるけた数の最小値,最大値,およびsize属性の指定を省略した場合に仮定されるけた数を,表2-3に示します。
表2‒3 size属性に指定できる値の範囲と省略時のけた数 type属性の値
size属性に指定できる値の範囲
size属性省略時のけた数
最小値
最大値
alphanumeric
1
16,777,215
100
national
1
16,383
100
numeric
1
18
9
packed
1
18
9
binary
1
18
9
- 規則
-
-
size属性は,同じItem要素のtype属性に"alphanumeric","national","numeric","packed",または"binary"を指定した場合だけ,指定できます。
-
表2-3に示した最小値,最大値の範囲を超える値をsize属性に指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
COBOLデータ項目とXMLドキュメントとの間の転記の規則については,「7.2.7 値の入力,出力の動作」を参照してください。
-
- 指定例
-
XML要素「description」に対応するCOBOLデータ項目の文字数を200に設定する例を次に示します。
- (DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE table [ <!ELEMENT table (description)> <!ELEMENT description (#PCDATA)> ]> <table/>
- (DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?> <Interface interfaceName="EXAMPLE"> <BaseElement elemName="table"> <Item elemName="description" type="alphanumeric" size="200"/> </BaseElement> </Interface>
- (生成されるCOBOLデータ項目)
01 description PIC X(200).
(5) fractionalDigits属性
- 形式
-
fractionalDigits="けた数"
- 機能
- 規則
-
-
けた数には,次の値を指定します。
- 小数点以下のけた数を指定する場合
-
size属性に指定した(または仮定された)けた数以下の値を指定します。
- 整数部の位取りのけた数を指定する場合
-
値の前にハイフン(-)を付けて指定します。
- 小数部の位取りのけた数を指定する場合
-
size属性に指定した(または仮定された)けた数より大きい値を指定します。
-
fractionalDigits属性は,同じItem要素のtype属性に"numeric","packed",または"binary"を指定した場合だけ,指定できます。
-
fractionalDigits属性を省略した場合,小数点以下のけた数,および位取りのけた数には0が仮定されます。
-
size属性に指定した,または仮定されたけた数を超えたけた数を,小数点以下のけた数に指定できません。
-
fractionalDigits属性で整数部の位取りを指定する場合,size属性の値とfractionalDigits属性の値の絶対値(総けた数)の和が18けたを超えてはなりません。18けたを超える値を指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
fractionalDigits属性で小数点以下のけた数,または小数部の位取りを指定する場合,18けた以内の値を指定する必要があります。18けたを超える値を指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
- 指定例
-
-
XML要素「price1」に対応するCOBOLデータ項目の小数点以下のけた数を3けたに設定します。
-
XML要素「price2」に対応するCOBOLデータ項目の小数点以下のけた数を6けたに設定します。
-
XML要素「price3」に対応するCOBOLデータ項目の小数部の位取りのけた数を3けたに設定します。
-
XML要素「price4」に対応するCOBOLデータ項目の整数部の位取りのけた数を3けたに設定します。
- (DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE table [ <!ELEMENT table (row)> <!ELEMENT row (price1, price2, price3, price4)> <!ELEMENT price1 (#PCDATA)> <!ELEMENT price2 (#PCDATA)> <!ELEMENT price3 (#PCDATA)> <!ELEMENT price4 (#PCDATA)> ]> <table/>
- (DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?> <Interface interfaceName="EXAMPLE"> <BaseElement elemName="row"> <Group cobName="row"> <Item elemName="price1" type="numeric" size="6" fractionalDigits="3"/> <Item elemName="price2" type="numeric" size="6" fractionalDigits="6"/> <Item elemName="price3" type="numeric" size="6" fractionalDigits="9"/> <Item elemName="price4" type="numeric" size="6" fractionalDigits="-3"/> </Group> </BaseElement> </Interface>
- (生成されるCOBOLデータ項目)
01 row. 02 price1 PIC 9(3)V9(3). 02 price2 PIC V9(6). 02 price3 PIC VP(3)9(6). 02 price4 PIC 9(6)P(3).
-
(6) emptyValue属性
- 形式
-
emptyValue="type属性値に対応したCOBOLの定数"
- 機能
-
次のXML要素に対応するCOBOLデータ項目の値を指定します。
-
省略できる要素で,省略されている要素
-
選択要素で,選択されていない要素
-
countVar属性に"no"を指定した場合の繰り返し項目の要素
XMLドキュメントの読み込み時,読み込んだ要素が上記のどれかの場合,emptyValue属性に指定した値がCOBOLデータ項目に格納されます。
emptyValue属性に指定した値がCOBOLデータ項目に格納された状態でXMLドキュメントに書き込みをすると,そのデータ項目に対応する要素を出力しないようにできます。ただし,省略できる要素や選択要素がBaseElement要素で指定された要素の場合,COBOLデータ項目の値に関係なく必ず出力されます。
-
- 規則
-
-
emptyValue属性に指定できる要素の値,およびemptyValue属性の指定を省略した場合に仮定される要素の値を,表 2-4に示します。
表2‒4 emptyValue属性に指定できる値と省略時の値 type属性の値
英字
英数字
日本語文字
SPACE
数値
ZERO
HIGH-VALUE
LOW-VALUE
省略時の値
alphanumeric
○
○
○
○
○
○
○
○
SPACE
national
×
×
○
○
×
○
○
○
SPACE
numeric
×
×
×
×
○
○
○
○
ZERO
packed
×
×
×
×
○
○
×
×
ZERO
binary
×
×
×
×
○
○
×
×
ZERO
float
×
×
×
×
○
○
×
×
ZERO
double
×
×
×
×
○
○
×
×
ZERO
-
type属性とemptyValue属性に指定する値は,表 2-4に記載された組み合わせだけが有効となります。これ以外の組み合わせを指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
emptyValue属性に指定する文字列の長さは,同じItem要素のsize属性に指定するCOBOLデータ項目の長さを超えないようにしてください。超えた場合,size属性に指定した長さが有効となります。
-
accessInfo属性"yes"を指定したInterface要素,BaseElement要素の内側にあるItem要素にemptyValue属性は指定できません。emptyValue属性を指定した場合はCOBOLソースの生成時に警告メッセージが表示され,emptyValue属性は無視されます。
-
emptyValue属性に指定した文字列が160文字を超えた場合,先頭から160文字が採用されます。このとき,警告メッセージが表示されます。
-
「ZERO」「SPACE」「HIGH-VALUE」「LOW-VALUE」は,emptyValue属性の予約語です。これらの文字列は,COBOLの英数字定数としてemptyValue属性に指定できません。また,これらの文字列は,COBOL言語仕様の表意定数と同じように,英大文字と英小文字が等価として扱われます。
-
emptyValue属性に指定した数字が18けたを超える場合,COBOL原始プログラムの生成時にエラーとなります。また,浮動小数点の仮数部が16けたを超える,指数部が2けたを超えるなど,浮動小数点の形式でない場合も,COBOL原始プログラムの生成時にエラーとなります。なお,浮動小数点の形式で使用する「E」の文字は,大文字,小文字の両方を使用できます。
-
- 注意事項
-
-
ATTLIST属性のデフォルト指定で#FIXED値を指定した属性の入力に対しては,emptyValue属性を指定しても無効となります。必ず,#FIXEDで指定したデフォルト値を入力値として設定してください。
-
- 指定例(XMLドキュメントを出力する場合)
-
XML要素「item11」「item21」「item22」を省略した場合,または選択しなかった場合に設定するCOBOLの値を,それぞれ"ITEM11","ITEM21","ITEM22"に設定します。
- (DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE table [ <!ELEMENT table (item1, item2)> <!ELEMENT item1 (item11?)> <!ELEMENT item2 (item21 | item22)> <!ELEMENT item11 (#PCDATA)> <!ELEMENT item21 (#PCDATA)> <!ELEMENT item22 (#PCDATA)> ]> <table/>
- (DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?> <Interface interfaceName="EXAMPLE"> <BaseElement elemName="table"> <Group elemName="table" cobName="TABLE1"> <Group elemName="item1"> <Item elemName="item11" type="alphanumeric" size="30" emptyValue="ITEM11"/> </Group> <Group elemName="item2"> <Item elemName="item21" type="alphanumeric" size="20" emptyValue="ITEM21"/> <Item elemName="item22" type="alphanumeric" size="20" emptyValue="ITEM22"/> </Group> </Group> </BaseElement> </Interface>
- (COBOLプログラムのコーディング例)
: MOVE 'ITEM11' TO ITEM11. …1. MOVE 'ITEM21' TO ITEM21. …2. MOVE 'ABCDEF' TO ITEM22. …3. :
- (説明)
-
-
省略できる要素を省略したい場合には,emptyValue属性に指定した値を設定する。
-
選択要素のうち,選択しない要素には,emptyValue属性に指定した値を設定する。
-
出力する要素には,値(文字列)を設定する。
-
- (出力されるXMLドキュメント)
<?xml version="1.0" encoding="Shift_JIS"?> <table> <item1/> …1. <item2> <item22>ABCDEF</item22> …2. </item2> </table>
- (説明)
-
-
item11を省略したため,item1が空要素で出力される。
-
item22に,設定した文字列が出力される。
-
- 指定例(XMLドキュメントから入力する場合)
-
XML要素「item1」〜「item11」からCOBOLデータ項目に値を入力します。
- (DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE table [ <!ELEMENT table (item1?, item2?, item3?, item4?, item5?, item6?, item7?, item8?, item9?, item10?, item11?)> <!ELEMENT item1 (#PCDATA)> <!ELEMENT item2 (#PCDATA)> <!ELEMENT item3 (#PCDATA)> <!ELEMENT item4 (#PCDATA)> <!ELEMENT item5 (#PCDATA)> <!ELEMENT item6 (#PCDATA)> <!ELEMENT item7 (#PCDATA)> <!ELEMENT item8 (#PCDATA)> <!ELEMENT item9 (#PCDATA)> <!ELEMENT item10 (#PCDATA)> <!ELEMENT item11 (#PCDATA)> ]> <table/>
- (DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?> <Interface interfaceName="EXAMPLE"> <BaseElement elemName="table"> <Group elemName="table" cobName="TABLE1"> <Item elemName="item1" type="alphanumeric" size="30" emptyValue="SPACE"/> <Item elemName="item2" type="alphanumeric" size="30" emptyValue="SPACE"/> <Item elemName="item3" type="alphanumeric" size="30" emptyValue="SPACE"/> <Item elemName="item4" type="alphanumeric" size="30" emptyValue="HIGH-VALUE"/> <Item elemName="item5" type="alphanumeric" size="30" emptyValue="LOW-VALUE"/> <Item elemName="item6" type="alphanumeric" size="30" emptyValue="COBOL"/> <Item elemName="item7" type="alphanumeric" size="30" emptyValue="COBOL"/> <Item elemName="item8" type="numeric" emptyValue="ZERO"/> <Item elemName="item9" type="numeric" emptyValue="85"/> <Item elemName="item10" type="numeric" emptyValue="2001"/> <Item elemName="item11" type="numeric" emptyValue="LOW-VALUE"/> </Group> </BaseElement> </Interface>>
- (入力するXMLドキュメント)
<?xml version="1.0" encoding="Shift_JIS"?> <table> <!-- 要素なし <item1> --> <item2></item2> <item3> </item3> <!-- 要素なし <item4> --> <!-- 要素なし <item5> --> <!-- 要素なし <item6> --> <item7>COBOL</item7> <!-- 要素なし <item8> --> <!-- 要素なし <item9> --> <item10>2001</item10> <!-- 要素なし <item11> --> </table>
- (COBOLデータ項目に格納される値)
-
データ項目名
値
item1
SPACE
item2
空白文字
item3
空白文字
item4
HIGH-VALUE
item5
LOW-VALUE
item6
"COBOL"
item7
"COBOL"
item8
ZERO
item9
"85"
item10
"2001"
item11
LOW-VALUE
(7) sign属性
- 形式
-
sign="符号種別"
- 機能
-
COBOLの数字項目に対してPICTURE句の演算符号"S",およびSIGN句を指定します。
- 規則
-
-
符号種別には,次のどれかの値を指定します。これら以外の値を指定した場合,COBOL原始プログラム生成時にエラーとなります。
-
- 指定例
-
XML要素「UnsignedValue」「SignedValue」「LSSignedValue」に対応するCOBOLデータ項目に対して,それぞれ異なる演算符号やSIGN句を設定する例を次に示します。
- (DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE table [ <!ELEMENT table (row)> <!ELEMENT row (UnsignedValue, SignedValue, LSSignedValue)> <!ELEMENT UnsignedValue (#PCDATA)> <!ELEMENT SignedValue (#PCDATA)> <!ELEMENT LSSignedValue (#PCDATA)> ]> <table/>
- (DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?> <Interface interfaceName="EXAMPLE"> <BaseElement elemName="row"> <Group cobName="row"> <Item elemName="UnsignedValue" type="numeric" sign="unsigned"/> <Item elemName="SignedValue" type="numeric" sign="signed"/> <Item elemName="LSSignedValue" type="numeric" sign="leadingSeparate"/> </Group> </BaseElement> </Interface>
- (生成されるCOBOLデータ項目)
01 row. 02 UnsignedValue PIC 9(9). 02 SignedValue PIC S9(9). 02 LSSignedValue PIC S9(9) SIGN LEADING SEPARATE.
(8) trim属性
- 形式
-
trim="yes|no"
- 機能
-
XMLドキュメントに出力されるデータ項目の値を整形するかどうかを指定します。
- 規則
-
-
trim属性には,値を整形する場合は"yes",整形しない場合は"no"を指定します。それぞれを指定した場合の出力結果を表 2-6に示します。
-
trim属性に"yes"を指定した場合で符号付きの数値のとき,符号を除いた先頭から前ゼロ(0)が削除されます。また,+記号は削除されます。
- (例)
-
+000004 → 4
-000004 → -4
-
trim属性の指定を省略した場合,"yes"が仮定されます。
-
trim属性に"yes"または"no"以外の値を指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
- 指定例
-
XML要素「test01」,「test02」の値を,それぞれ次のように出力する例を示します。
-
「test01」の値(英数字)は,size属性で指定した長さで出力する
-
「test02」の値(数値)は,前ゼロ(0)を削除して出力する
- (DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE table [ <!ELEMENT table (row)> <!ELEMENT row (test01, test02)> <!ELEMENT test01 (#PCDATA)> <!ELEMENT test02 (#PCDATA)> ]> <table/>
- (DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?> <Interface interfaceName="EXAMPLE"> <BaseElement elemName="row"> <Item elemName="test01" type="alphanumeric" trim="no"/> <Item elemName="test02" type="numeric" trim="yes"/> </BaseElement> </Interface>
-
(9) nameOfFlagVar属性
- 形式
-
nameOfFlagVar="アクセス情報フラグの名称"
- 機能
-
Interface要素またはBaseElement要素のaccessInfo属性に"yes"を指定した場合に,Item要素に対応するアクセス情報フラグの名称を指定します。
アクセス情報フラグについては,「3.2.1 アクセス情報フラグ」を参照してください。
- 規則
-
-
nameOfFlagVar属性の指定を省略した場合は,cobName属性(省略時はelemName属性)の名称に"-FLG"を追加した名称がXMLアクセス用データ定義に生成されます。
cobName属性(省略時はelemName属性)の名称は,26文字以下で指定する必要があります。26文字を超える名称を指定した場合,COBOL原始プログラムの生成時に警告メッセージが表示されます。
-
nameOfFlagVar属性に指定する名称は,30文字以下で指定する必要があります。30文字を超える名称を指定した場合,COBOL原始プログラムの生成時に警告メッセージが表示されます。
-
nameOfFlagVar属性には,COBOLデータ項目名として使用できる名称を指定する必要があります。COBOLデータ項目の名称に使用できない文字を指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
accessInfo属性を省略した場合,またはaccessInfo属性に"no"を指定した場合,nameOfFlagVar属性の指定は無効となります。
accessInfo属性の指定例については,「3.3.3(1) 指定例」を参照してください。
-
nameOfFlagVar属性には,次に示す属性とは異なる名称を指定する必要があります。同じ名称を指定した場合,COBOL原始プログラムの生成時にエラーとなります。
- nameOfFlagVar属性と異なる名称を指定する属性
-
-
BaseElement要素のcobName属性※,nameOfBaseVar属性
-
Group要素のcobName属性※,nameOfGroupVar属性
-
Item要素のcobName属性※,nameOfFlagVar属性,nameOfLengthVar属性
-
Array要素のnameOfCountVar属性,nameOfTotalVar属性
-
AttrItem要素のcobName属性※,nameOfLengthVar属性,nameOfFlagVar属性
-
- 注※
-
cobName属性を省略した場合は,elemName属性になります。
-
nameOfFlagVar属性の指定例については,「3.2.1(3) nameOfFlagVar属性の指定例」を参照してください。
(10) nameOfLengthVar属性
- 形式
-
nameOfLengthVar="データ長の名称"
- 機能
-
Interface要素またはBaseElement要素のaccessInfo属性に"yes"を指定した場合に,Item要素に対応するデータ長の名称を指定します。
データ長については,「3.2.2 データ長」を参照してください。
- 規則
-
-
nameOfLengthVar属性の指定を省略した場合は,cobName属性(省略時はelemName属性)の名称に"-LEN"を追加した名称がXMLアクセス用データ定義に生成されます。
cobName属性(省略時はelemName属性)の名称は,26文字以下で指定する必要があります。26文字を超える名称を指定した場合,COBOL原始プログラムの生成時に警告メッセージが表示されます。
-
nameOfLengthVar属性に指定する名称は,30文字以下で指定する必要があります。30文字を超える名称を指定した場合,COBOL原始プログラムの生成時に警告メッセージが表示されます。
-
nameOfLengthVar属性には,COBOLデータ項目名として使用できる名称を指定する必要があります。COBOLデータ項目の名称に使用できない文字を指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
accessInfo属性の指定を省略した場合,またはaccessInfo属性に"no"を指定した場合,nameOfLengthVar属性の指定は無効となります。
accessInfo属性の指定例については,「3.3.3(1) 指定例」を参照してください。
-
nameOfLengthVar属性には,次に示す属性とは異なる名称を指定する必要があります。同じ名称を指定した場合,COBOL原始プログラムの生成時にエラーとなります。
- nameOfLengthVar属性と異なる名称を指定する属性
-
-
BaseElement要素のcobName属性※,nameOfBaseVar属性
-
Group要素のcobName属性※,nameOfGroupVar属性
-
Item要素のcobName属性※,nameOfFlagVar属性,nameOfLengthVar属性
-
Array要素のnameOfCountVar属性,nameOfTotalVar属性
-
AttrItem要素のcobName属性※,nameOfLengthVar属性,nameOfFlagVar属性
-
- 注※
-
cobName属性の指定を省略した場合は,elemName属性になります。
-
nameOfLengthVar属性の指定例については,「3.2.2(3) nameOfLengthVar属性の指定例」を参照してください。
(11) verbatim属性
- 形式
-
verbatim="yes|no"
- 機能
-
verbatim属性に"yes"を指定した場合,elemName属性で指定した要素の内容を文字列として,COBOLデータ項目に対応づけます。指定した要素の内容に含まれるタグはすべて文字列とみなされます。
verbatim属性に"yes"を指定したItem要素は,Group要素およびDTDに定義した#PCDATAキーワードを持つ要素に対応づけられます。また,再帰的構造を持つ要素をXMLドキュメントに入出力できます。
- 規則
-
-
verbatim属性を指定する場合,type属性に"alphanumeric"を指定する必要があります。type属性に"alphanumeric"以外を指定してverbatim属性を指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
verbatim属性を指定した場合,trim属性は指定できません。verbatim属性とtrim属性を同時に指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
verbatim属性の指定を省略した場合,"no"が仮定されます。
-
verbatim属性に対応する要素の内側の空白文字と改行文字は,XMLドキュメントからそのまま入力されます。
-
verbatim属性に対応する要素の内側に実体参照文字がある場合,定義済みの実体参照は「付録D.1 定義済み実体参照」の規則に従って変換されます。
-
- 指定例
-
- (DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE root [ <!ELEMENT root (item01, item02, item03)> <!ELEMENT item01 (#PCDATA)> <!ELEMENT item02 (#PCDATA)> <!ELEMENT item03 (#PCDATA)> ]> <root/>
- (DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?> <Interface interfaceName="EXAMPLE"> <BaseElement elemName="root"> <Item verbatim="yes" elemName="root" type="alphanumeric" size="200"/> </BaseElement> </Interface>
- (生成されるCOBOLデータ項目)
01 root PIC X(200).
- (入力ドキュメント)
<?xml version="1.0" encoding="Shift_JIS"?> <root> <item01>AAAAA</item01> <item02>BBBBB</item02> <item03>CCCCC</item03> </root>
- (COBOLデータ項目に格納される値)
[改行]<item01>AAAAA</item01>[改行]<item02>BBBBB</item02>[改行]<item03>CCCCC</item03>[改行]
注 [改行]は改行コード(0x0A)を表しています。
- (出力ドキュメント)
<?xml version="1.0" encoding="Shift_JIS"?> <root> <item01>AAAAA</item01> <item02>BBBBB</item02> <item03>CCCCC</item03> </root>
出力ドキュメントには,COBOLデータ項目の値が出力されます。COBOLデータ項目に変更がない場合,入力ドキュメントと出力ドキュメントは等しくなります。
(12) update属性
- 形式
-
update="yes"
- 機能
-
Item要素を更新の対象にするかどうかを指定します。更新機能については,「7.2.11 XMLドキュメントの更新」を参照してください。
- 規則
-
-
update属性に"yes"以外を指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
(13) emptyContentValue属性
- 形式
-
emptyContentValue="type属性値に対応したCOBOLの定数"
- 機能
-
入力するXMLドキュメントの,要素の内容が空である場合,emptyContentValue属性に指定したCOBOLの定数をCOBOLデータ項目に設定します。また,XMLドキュメントの出力時に,emptyContentValue属性に指定したCOBOLの定数をCOBOLデータ項目に設定した場合,対応する要素が空要素として出力されます。
emptyContentValue属性には,表2-7に示すtype属性値に対応したCOBOLの値を指定できます。
入力する要素の内容とemptyContentValue属性に指定した定数が同じ場合,要素が空であるかどうかを判定できません。必ず入力する要素の内容とemptyContentValue属性の定数が異なる値になるように,emptyContentValue属性の値を指定してください。
表2‒7 type属性の指定値とemptyContentValue属性に指定できる値 type属性値
指定できる値
英字
英数字
日本語文字
SPACE
数値
ZERO
HIGH-VALUE
LOW-VALUE
alphanumeric
○
○
○
○
○
○
○
○
national
×
×
○
○
×
○
○
○
numeric
×
×
×
×
○
○
○
○
packed
×
×
×
×
○
○
×
×
binary
×
×
×
×
○
○
×
×
float
×
×
×
×
○
○
×
×
double
×
×
×
×
○
○
×
×
- 規則
-
-
emptyContentValue属性に指定する文字列の長さは,同じItem要素のsize属性に指定するCOBOLデータ項目の長さを超えないようにしてください。超えた場合,size属性に指定した長さが有効となります。
-
accessInfo属性"yes"を指定したInterface要素,BaseElement要素の内側にあるItem要素にemptyContentValue属性は指定できません。emptyContentValue属性を指定した場合はCOBOL原始プログラムの生成時に警告メッセージが表示され,emptyContentValue属性は無視されます。
-
emptyContentValue属性に指定した文字列が160文字を超えた場合,先頭から160文字が採用されます。このとき,警告メッセージが表示されます。
-
「ZERO」「SPACE」「HIGH-VALUE」「LOW-VALUE」は,emptyContentValue属性の予約語です。これらの文字列は,COBOLの英数字定数としてemptyContentValue属性に指定できません。また,これらの文字列は,COBOL言語仕様の表意定数と同じように,英大文字と英小文字が等価として扱われます。
-
type属性とemptyContentValue属性に指定する値は,表2-7に記載された組み合わせだけが有効となります。これ以外の組み合わせを指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
emptyContentValue属性に指定した数字が18けたを超える場合,COBOL原始プログラムの生成時にエラーとなります。また,浮動小数点の仮数部が16けたを超える,指数部が2けたを超えるなど,浮動小数点の形式でない場合も,COBOL原始プログラムの生成時にエラーとなります。
なお,浮動小数点の形式で使用する「E」の文字は,大文字,小文字の両方を使用できます。
-
emptyValue属性とemptyContentValue属性に同じ値を指定し,XMLドキュメントを出力した場合,emptyValue属性が有効になります。ただし,対応する要素が省略できる要素でない場合は,その要素を削除できないため,emptyContentValue属性が有効になります。
-
- 注意事項
-
-
ATTLIST属性のデフォルト指定で#FIXED値を指定した属性の入力に対しては,emptyContentValue属性を指定しても,無効となります。必ず,#FIXED値で指定したデフォルト値を入力値として設定してください。
-
開始タグと終了タグ間の内容が空白文字(スペース,タブおよび改行)だけの場合でも空要素とみなしません。空要素とみなすのは,空タグの場合,および開始タグと終了タグ間の内容がない(<Item></Item>)場合だけです。
-
(14) invalidCharValue属性
- 形式
-
invalidCharValue="type属性値に対応したCOBOLの定数"
- 機能
-
入力するXMLドキュメントに対応する要素の内容に不当な文字がある場合,invalidCharValue属性に指定したCOBOLの定数がCOBOLデータ項目に返されます。
invalidCharValue属性には,表2-8に示すtype属性値に対応したCOBOLの値を指定できます。
入力時にチェックする文字は「9.2 入出力時に不当な文字をチェックする機能」の「表9-3 入力時にチェックする文字」の「-chkcharオプション指定あり」を参照してください。
表2‒8 type属性の指定値とinvalidCharValue属性に指定できる値 type属性値
指定できる値
英字
英数字
日本語文字
SPACE
数値
ZERO
HIGH-VALUE
LOW-VALUE
alphanumeric
○
○
○
○
○
○
○
○
national
×
×
○
○
×
○
○
○
numeric
×
×
×
×
○
○
○
○
packed
×
×
×
×
○
○
×
×
binary
×
×
×
×
○
○
×
×
float
×
×
×
×
○
○
×
×
double
×
×
×
×
○
○
×
×
- 規則
-
-
invalidCharValue属性に指定する文字列の長さは,同じItem要素のsize属性に指定するCOBOLデータ項目の長さを超えないようにしてください。超えた場合,size属性に指定した長さが有効となります。
-
accessInfo属性"yes"を指定したInterface要素,BaseElement要素の内側にあるItem要素にinvalidCharValue属性は指定できません。invalidCharValue属性を指定した場合,COBOL原始プログラムの生成時に警告メッセージが表示され,invalidCharValue属性は無視されます。
-
invalidCharValue属性に指定した文字列が160文字を超えた場合,先頭から160文字が採用されます。このとき,警告メッセージが表示されます。
-
「ZERO」「SPACE」「HIGH-VALUE」「LOW-VALUE」は,invalidCharValue属性の予約語です。これらの文字列は,COBOLの英数字定数としてinvalidCharValue属性に指定できません。また,これらの文字列は,COBOL言語仕様の表意定数と同じように,英大文字と英小文字が等価として扱われます。
-
type属性とinvalidCharValue属性に指定する値は,表2-8に記載された組み合わせだけが有効となります。これ以外の組み合わせを指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
invalidCharValue属性に指定した数字が18けたを超える場合,COBOL原始プログラムの生成時にエラーとなります。また,浮動小数点の仮数部が16けたを超える,指数部が2けたを超えるなど,浮動小数点の形式でない場合も,COBOL原始プログラムの生成時にエラーとなります。
なお,浮動小数点の形式で使用する「E」の文字は,大文字,小文字の両方を使用できます。
-
invalidCharValue属性とoverflowValue属性の両方を指定した場合で,XMLドキュメントからの入力値に不当文字があり,かつsize属性に指定した長さを超えていると,invalidCharValue属性が有効になります。
-
- 注意事項
-
invalidCharValue属性を指定した場合でも,XMLアクセスルーチンのステータスは「9.2 入出力時に不当な文字をチェックする機能」の-chkcharオプション指定の有無の条件に従ったステータスが返ります。
(15) overflowValue属性
- 形式
-
overflowValue="type属性値に対応したCOBOLの定数"
- 機能
-
入力するXMLドキュメントに対応する要素の内容がオーバフローした場合,overflowValue属性に指定したCOBOLの定数がCOBOLデータ項目に設定されます。
overflowValue属性には,表2-9に示すtype属性値に対応したCOBOLの値を指定できます。
入力値のオーバフローの条件は,「9.1 入力時のオーバフローをステータスで返す機能」の表9-1を参照してください。
表2‒9 type属性の指定値とoverflowValue属性に指定できる値 type属性値
指定できる値
英字
英数字
日本語文字
SPACE
数値
ZERO
HIGH-VALUE
LOW-VALUE
alphanumeric
○
○
○
○
○
○
○
○
national
×
×
○
○
×
○
○
○
numeric
×
×
×
×
○
○
○
○
packed
×
×
×
×
○
○
×
×
binary
×
×
×
×
○
○
×
×
float
×
×
×
×
○
○
×
×
double
×
×
×
×
○
○
×
×
- 規則
-
-
overflowValue属性に指定する文字列の長さは,同じItem要素のsize属性に指定するCOBOLデータ項目の長さを超えないようにしてください。超えた場合,size属性に指定した長さが有効となります。
-
accessInfo属性"yes"を指定したInterface要素,BaseElement要素の内側にあるItem要素にoverflowValue属性は指定できません。overflowValue属性を指定した場合はCOBOL原始プログラムの生成時に警告メッセージが表示され,overflowValue属性は無視されます。
-
overflowValue属性に指定した文字列が160文字を超えた場合,先頭から160文字が採用されます。このとき,警告メッセージが表示されます。
-
「ZERO」「SPACE」「HIGH-VALUE」「LOW-VALUE」は,overflowValue属性の予約語です。これらの文字列は,COBOLの英数字定数としてoverflowValue属性に指定できません。また,これらの文字列は,COBOL言語仕様の表意定数と同じように,英大文字と英小文字が等価として扱われます。
-
type属性とoverflowValue属性に指定する値は,表2-9に記載された組み合わせだけが有効となります。これ以外の組み合わせを指定した場合,COBOL原始プログラムの生成時にエラーとなります。
-
overflowValue属性に指定した数字が18けたを超える場合,COBOL原始プログラムの生成時にエラーとなります。また,浮動小数点の仮数部が16けたを超える,指数部が2けたを超えるなど,浮動小数点の形式でない場合も,COBOL原始プログラムの生成時にエラーとなります。
なお,浮動小数点の形式で使用する「E」の文字は,大文字,小文字の両方を使用できます。
-
invalidCharValue属性とoverflowValue属性の両方を指定した場合で,XMLドキュメントからの入力値に不当文字があり,かつsize属性に指定した長さを超えていると,invalidCharValue属性の値が設定されます。
-
- 注意事項
-
overflowValue属性を指定した場合でもXMLアクセスルーチンのステータスは「9.1 入力時のオーバフローをステータスで返す機能」の-chkovflowオプション指定の有無の条件に従ったステータスが返ります。