COBOL2002 XML連携機能ガイド


7.2.9 属性の入出力

属性の入出力動作は,属性のデフォルト指定によって異なります。

この節では,属性のデフォルト指定と属性の入出力動作の関係を表にして説明します。また,属性のデフォルト指定および属性値の入力動作についての注意事項を説明したあとに,属性の入力例と出力例を示します。

〈この項の構成〉

(1) 属性のデフォルト指定値と属性の入力

表7‒3 属性のデフォルト指定値と属性の入力動作

ATTLIST属性のデフォルト指定

AttrItem要素のemptyValue属性,emptyContentValue属性,accessInfo属性

入力XMLドキュメントの属性値

COBOLデータ項目(アクセス情報フラグ)の入力値

emptyValue

emptyContentValue

accessInfo="yes"

#REQUIRED

×

×

属性あり(値あり)

属性値

属性あり(値なし)

type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1

属性なし

emptyValue属性の指定値※2

×

属性あり(値あり)

属性値

属性あり(値なし)

emptyContentValue属性の指定値

属性なし

emptyValue属性の指定値※2

×

×

属性あり(値あり)

属性値

(CBLXML-FLAG-OK)

属性あり(値なし)

type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1

(CBLXML-FLAG-EMPTY)

属性なし

type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1

(CBLXML-FLAG-MISSING)

#IMPLIED

×

×

属性あり(値あり)

属性値

属性あり(値なし)

type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1

属性なし

emptyValue属性の指定値※2

×

属性あり(値あり)

属性値

属性あり(値なし)

emptyContentValue属性の指定値

属性なし

emptyValue属性の指定値※2

×

×

属性あり(値あり)

属性値

(CBLXML-FLAG-OK)

属性あり(値なし)

type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1

(CBLXML-FLAG-EMPTY)

属性なし

type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1

(CBLXML-FLAG-MISSING)

×

×

属性あり(値あり)

属性値

属性あり(値なし)

type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1

属性なし

ATTLIST属性に指定したデフォルト値

×

属性あり(値あり)

属性値

属性あり(値なし)

emptyContentValue属性の指定値

属性なし

ATTLIST属性に指定したデフォルト値

×

×

属性あり(値あり)

属性値

(CBLXML-FLAG-OK)

属性あり(値なし)

type属性の指定によって,英数字と日本語はSPACE,数値はZERO※1

(CBLXML-FLAG-EMPTY)

属性なし

※3

#FIXED 値

×

×

属性あり(値あり)

ATTLIST属性に指定したデフォルト値

属性あり(値なし)

属性なし

×

属性あり(値あり)

ATTLIST属性に指定したデフォルト値

属性あり(値なし)

属性なし

×

×

属性あり(値あり)

ATTLIST属性に指定したデフォルト値

(CBLXML-FLAG-OK)

属性あり(値なし)

※4

属性なし

※5

(凡例)

○:指定あり

×:指定なし

  • emptyValue属性とaccessInfo属性を同時に指定した場合,accessInfo属性の指定値が優先され,emptyValue属性の指定は無効となります。

  • emptyContentValue属性とaccessInfo属性を同時に指定した場合,accessInfo属性の指定値が優先され,emptyContentValue属性の指定は無効となります。

注※1

type属性の指定が"alphanumeric"または"national"の場合はSPACEが設定されます。

type属性の指定が"numeric","packed","binary","float",または"double"の場合はZEROが設定されます。

注※2

emptyValue属性の指定がない場合,emptyValue属性の省略値が設定されます。

注※3
DTDあり

ATTLIST属性に指定したデフォルト値

(CBLXML-FLAG-OK)

DTDなし

cblxmlコマンドに指定したXMLドキュメントのATTLIST属性に指定したデフォルト値

(CBLXML-FLAG-MISSING)

注※4
DTDあり

ATTLIST属性に指定したデフォルト値

(CBLXML-FLAG-EMPTY)

DTDなし

cblxmlコマンドに指定したXMLドキュメントのATTLIST属性に指定したデフォルト値

(CBLXML-FLAG-EMPTY)

注※5
DTDあり

ATTLIST属性に指定したデフォルト値

(CBLXML-FLAG-OK)

DTDなし

cblxmlコマンドに指定したXMLドキュメントのATTLIST属性に指定したデフォルト値

(CBLXML-FLAG-MISSING)

(2) 属性のデフォルト指定値と属性の出力

表7‒4 属性のデフォルト指定値と属性の出力動作

ATTLIST属性のデフォルト指定

AttrItem要素のemptyValue属性,emptyContentValue属性,accessInfo属性

COBOLデータ項目(アクセス情報フラグ)の出力値

出力XMLドキュメントでの属性

emptyValue

emptyContentValue

accessInfo="yes"

#REQUIRED

×

×

emptyValue属性の指定値以外の値

指定した値の属性を出力する

emptyValue属性の指定値

空の属性を出力する

×

emptyValue属性,emptyContentValue属性の指定値以外の値

指定した値の属性値

emptyContentValue属性の指定値

空の属性値

emptyValue属性の指定値

空の属性値

emptyContentValue属性とemptyValue属性が同じ指定値

空の属性値

×

×

値(アクセス情報フラグにCBLXML-FLAG-OKが設定される)

指定した値の属性値

値(アクセス情報フラグにCBLXML-FLAG-EMPTYが設定される)

空の属性値

値(アクセス情報フラグにCBLXML-FLAG-MISSINGが設定される)

空の属性値

#IMPLIED

×

×

emptyValue属性の指定値以外の値

指定した値の属性値

emptyValue属性の指定値

出力しない

×

emptyValue属性,emptyContentValue属性の指定値以外の値

指定した値の属性値

emptyContentValue属性の指定値

空の属性値

emptyValue属性の指定値

出力しない

emptyContentValue属性とemptyValue属性が同じ指定値

出力しない

×

×

値(アクセス情報フラグにCBLXML-FLAG-OKが設定される)

指定した値の属性値

値(アクセス情報フラグにCBLXML-FLAG-EMPTYが設定される)

空の属性値

値(アクセス情報フラグにCBLXML-FLAG-MISSINGが設定される)

出力しない

×

×

emptyValue属性の指定値以外の値

指定した値の属性値

emptyValue属性の指定値

出力しない

×

emptyValue属性,emptyContentValue属性の指定値以外の値

指定した値の属性値

emptyContentValue属性の指定値

空の属性値

emptyValue属性の指定値

出力しない

emptyContentValue属性とemptyValue属性が同じ指定値

出力しない

×

×

値(アクセス情報フラグにCBLXML-FLAG-OKが設定される)

指定した値の属性値

値(アクセス情報フラグにCBLXML-FLAG-EMPTYが設定される)

空の属性値

値(アクセス情報フラグにCBLXML-FLAG-MISSINGが設定される)

出力しない

#FIXED 値

×

×

emptyValue属性の指定値以外の値

属性のデフォルト指定値

emptyValue属性の指定値

出力しない

×

emptyValue属性,emptyContentValue属性の指定値以外の値

属性のデフォルト指定値

emptyContentValue属性の指定値

空の属性値

emptyValue属性の指定値

出力しない

emptyContentValue属性とemptyValue属性が同じ指定値

出力しない

×

×

値(アクセス情報フラグにCBLXML-FLAG-OKが設定される)

属性のデフォルト指定値

値(アクセス情報フラグにCBLXML-FLAG-EMPTYが設定される)

空の属性値

値(アクセス情報フラグにCBLXML-FLAG-MISSINGが設定される)

出力しない

(凡例)

○:指定あり

×:指定なし

  • emptyValue属性とaccessInfo属性を同時に指定した場合,accessInfo属性の指定値が優先され,emptyValue属性の指定は無効となります。

  • emptyContentValue属性とaccessInfo属性を同時に指定した場合,accessInfo属性の指定値が優先され,emptyContentValue属性の指定は無効となります。

注※

emptyValue属性の指定がない場合,emptyValue属性の省略値を設定します。

(3) 属性がDDFで対応づけされていない場合の属性の入出力

表7‒5 属性がDDFで対応づけされていない場合

ATTLIST属性のデフォルト指定

XMLドキュメントの入力

XMLドキュメントの出力

#REQUIRED

無視する。

空の属性値(attr = "")を出力する。

#IMPLIED

無視する。

属性を出力しない。

無視する。

属性を出力しない。

#FIXED 値

無視する。

属性を出力しない。

注※

属性値のデフォルト指定が#REQUIREDの場合は,必ずその属性をDDFで対応づけてください。DDFで対応づけていない場合,適正な属性値が出力されません。

DDFで対応づけた属性のデフォルト指定に#REQUIREDを使用した場合の指定例については,「(4) 属性のデフォルト指定時の注意事項」を参照してください。

(4) 属性のデフォルト指定時の注意事項

属性のデフォルト指定を使用する場合の注意事項を次に示します。

(DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?>
 <!DOCTYPE table [
    <!ELEMENT table (item1, item2, item3, item4, item5)>
  <!ELEMENT item1 EMPTY>
  <!ELEMENT item2 EMPTY>
  <!ELEMENT item3 EMPTY>
  <!ELEMENT item4 EMPTY>
  <!ELEMENT item5 EMPTY>
  <!ATTLIST item1 attr11 CDATA #REQUIRED>
  <!ATTLIST item1 attr12 CDATA #IMPLIED>
  <!ATTLIST item1 attr13 CDATA "abc" >
  <!ATTLIST item1 attr14 CDATA #FIXED "def">
  <!ATTLIST item2 attr21 ID #IMPLIED >
  <!ATTLIST item2 attr22 IDREF #IMPLIED>
  <!ATTLIST item2 attr23 IDREFS #IMPLIED>
  <!ATTLIST item2 attr24 NMTOKEN #IMPLIED>
  <!ATTLIST item2 attr25 NMTOKENS #IMPLIED>
  <!ATTLIST item3 attr31 (blue|red|yellow) #IMPLIED>
  <!ATTLIST item4 attr41 CDATA #IMPLIED>
  <!ATTLIST item5 attr51 CDATA #REQUIRED>
  <!ATTLIST item5 attr52 CDATA #IMPLIED>
]>
<table/>
(DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
  <BaseElement elemName="table">
    <Group cobName="grp1">
      <AttrItem elemName="item1" attrName="attr11"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item1" attrName="attr12"
      type="alphanumeric" emptyValue="xxx" size="10"/>
      <AttrItem elemName="item1" attrName="attr13"
      type="alphanumeric" emptyValue="yyy" size="10"/>
      <AttrItem elemName="item1" attrName="attr14"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item2" attrName="attr21"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item2" attrName="attr22"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item2" attrName="attr23"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item2" attrName="attr24"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item2" attrName="attr25"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item3" attrName="attr31"
      type="alphanumeric" size="10"/>
      <AttrItem elemName="item4" attrName="attr41"
      type="numeric" trim="no" size="4"/>
    </Group>
  </BaseElement>
</Interface>
(生成されるCOBOLデータ項目)
01 grp1.
 02 item1-attr11 PIC X(10).
 02 item1-attr12 PIC X(10).
 02 item1-attr13 PIC X(10).
 02 item1-attr14 PIC X(10).
 02 item2-attr21 PIC X(10).
 02 item2-attr22 PIC X(10).
 02 item2-attr23 PIC X(10).
 02 item2-attr24 PIC X(10).
 02 item2-attr25 PIC X(10).
 02 item3-attr31 PIC X(10).
 02 item4-attr41 PIC 9(4).

(5) 属性値の入力動作についての注意事項

(6) 属性の入力例

次に示すXMLドキュメントを入力した場合にCOBOLデータ項目に格納される値を表 7-6に示します。

(入力ドキュメント)
<?xml version="1.0" encoding="Shift_JIS"?>
<table>
 <item1 attr11="aaa" attr14="ddd"/>
 <item2 attr21="id1" attr22="id1" attr23="id1 id1"
        attr24="1cm" attr25="1cm 2cm"/>
 <item3 attr31="red"/>
 <item4 attr41="nan"/>
 <item5 attr51="foo"/>
</table>
表7‒6 COBOLデータ項目に格納される値

COBOLデータ項目

備考

attr11

aaa

attr12

xxx

属性が存在しないため,emptyValueで指定した値が格納される。

attr13

abc

属性が存在しないため,DTDのデフォルト値が格納される。

attr14

def

#FIXEDが指定されているため,ドキュメント上の属性値に関係なくDTDのデフォルト値が格納される。

attr21

id1

attr22

id1

attr23

id1△id1

attr24

1cm

attr25

1cm△2cm

attr31

red

attr41

0000

数字項目に文字列が入力されたため,0が格納される。

(凡例)

△:半角空白文字

(7) 属性の出力例

表7‒7 COBOLデータ項目に設定した出力値

COBOLデータ項目

attr11

aaa

attr12

xxx

attr13

zzz

attr14

bbb

attr21

id1

attr22

id1

attr23

id1△id1

attr24

1cm

attr25

1cm△2cm

attr31

blue

attr41

0012

(凡例)

△:半角空白文字

表 7-7に示した値をCOBOLデータ項目に設定した場合,次のようなXMLドキュメントが出力されます。

(出力ドキュメント)
<table>
 <item1 attr11="aaa"attr13="zzz"attr14="def"/>    …1.
        attr13="zzz"
        attr14="def"/>           …2.
 <item2 attr21="id1"
        attr22="id1"
        attr23="id1 id1"
        attr24="1cm"
        attr25="1cm 2cm"
 <item3 attr31="blue"/>
 <item4 attr41="0012"/>          …3.
 <item5 attr51=""                …4.
 />
                                 …5.
</table>
(説明)
  1. COBOLデータ項目の値がemptyValueの値に等しいため,属性は出力されません。

  2. #FIXEDが指定されているため,COBOLデータ項目の値に関係なく"def"が出力されます。

  3. trim="no"が指定されているため,前に0が付いて出力されます。

  4. DDFで対応づけてはいませんが,#REQUIREDが指定されているため,空文字列が出力されます。

  5. DDFで対応づけていないため,attr52は出力されません。