COBOL2002 XML連携機能ガイド


2.3.1 Interface要素(インタフェースの定義)

Interface要素は,COBOLプログラムとXMLとを対応づけるインタフェースを宣言する要素です。Interface要素を定義すると,XMLドキュメントにアクセスするためのCOBOL副プログラム(XMLアクセスルーチン)や登録集原文(XMLアクセス用データ定義)などのインタフェースが対応して生成されます。

[図データ]

Interface要素は,ドキュメントのルート(最上位の要素)としてDDL中に1回だけ記述できます。また,子要素として一つ以上のBaseElement要素を持つ必要があります。

形式

<Interface interfaceName="インタフェース名"〔accessInfo="yes|no"〕>

BaseElement要素

</Interface>

〈この項の構成〉

(1) interfaceName属性

形式

interfaceName="インタフェース名"

機能

Interface要素に対応するインタフェース名を指定します。インタフェース名は,Interface要素に対応して生成されるXMLアクセスルーチンのプログラム名の一部に使用されます。XMLアクセスルーチンの名称については,「4.2.1 XMLアクセスルーチンの名称形式」を参照してください。

規則
  • インタフェース名称は,COBOLプログラム名に指定できる次の文字で構成する必要があります。

    英文字(A〜Z,a〜z),数字(0〜9),ハイフン(-),下線(_),#,¥,@,日本語文字

  • インタフェース名は,ほかのインタフェース名と重複しない一意な名称を指定する必要があります。

  • インタフェース名と,BaseElement要素のcobName属性(省略時はelemName属性)に指定した名称の長さの合計は,19バイト以下の文字列で指定する必要があります。19バイトを超える名称を指定した場合,動作は保証しません。

指定例

インタフェース「EXAMPLE」を宣言します。

(DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE table [
  <!ELEMENT table (person)*>
  <!ELEMENT person (name, address)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT address (#PCDATA)>
]>
<table/>
(DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
 <BaseElement elemName="person">
  <Group elemName="person">
   <Item elemName="name" cobName="FULLNAME"
         type="alphanumeric" size="30"/>
   <Item elemName="address" cobName="FULLADDRESS"
         type="alphanumeric" size="120"/>
  </Group>
 </BaseElement>
</Interface>
(生成されるCOBOLデータ項目の例)
01 person.
 02 FULLNAME PIC X(30).
 02 FULLADDRESS PIC X(120).
(XMLアクセスルーチンの呼び出し例)
  :
CALL 'CBLXML-OP-EXAMPLE'
    USING XML-FILE-NAME-POINTER XML-FILE-LENGTH
          XML-FILE-MODE XML-POINTER
    RETURNING CBLXML-RETURN-CODE.
  :

(2) accessInfo属性

形式

accessInfo="yes|no"

機能

Interface要素の下位の要素で入出力データ情報定義機能を使用するかどうか指定します。入出力データ情報定義機能については,「3. 入出力データ情報定義機能」を参照してください。

規則
  • accessInfo属性の指定を省略した場合は,"no"が仮定されます。

  • Interface要素とBaseElement要素の両方にaccessInfo属性を指定した場合,BaseElement要素のaccessInfo属性値が優先されます。

  • accessInfo属性に"yes""no"以外の値を指定した場合,COBOL原始プログラムの生成時にエラーとなります。

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

指定例
(DTDの例)
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE root [
  <!ELEMENT root (item01, item02)>
  <!ELEMENT item01  (#PCDATA)>
  <!ELEMENT item02  (itema, itemb)*>
  <!ELEMENT itema   (#PCDATA)>
  <!ELEMENT itemb   (#PCDATA)>
]>
<root/>
(DDFの例)
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE"
   accessInfo="yes">
  <BaseElement elemName="root">
    <Group cobName="root">
      <Item elemName="item01" type="alphanumeric"
            size="10" />
      <Array max="10">
        <Group cobName="item02">
          <Item elemName="itema"
                type="alphanumeric" size="10" />
          <Item elemName="itemb"
                type="alphanumeric" size="10" />
        </Group>
      </Array>
    </Group>
  </BaseElement>
</Interface>
(生成されるCOBOLデータ項目)
 01 root-BASE.
  02 root.
   03 item01 PIC X(10).
   03 item02 OCCURS 10.
    04 itema PIC X(10).
    04 itemb PIC X(10).
* Access Information
  02 root-GROUP.
   03 item01-FLG PIC 1(32) USAGE BIT.
   03 item01-LEN PIC 9(9) COMP.
   03 item02-TOTAL PIC 9(9) COMP.
   03 item02-COUNT PIC 9(9) COMP.
   03 item02-GROUP OCCURS 10.
    04 itema-FLG PIC 1(32) USAGE BIT.
    04 itema-LEN PIC 9(9) COMP.
    04 itemb-FLG PIC 1(32) USAGE BIT.
    04 itemb-LEN PIC 9(9) COMP.