2.3.1 Interface要素(インタフェースの定義)
Interface要素は,COBOLプログラムとXMLとを対応づけるインタフェースを宣言する要素です。Interface要素を定義すると,XMLドキュメントにアクセスするためのCOBOL副プログラム(XMLアクセスルーチン)や登録集原文(XMLアクセス用データ定義)などのインタフェースが対応して生成されます。
Interface要素は,ドキュメントのルート(最上位の要素)としてDDL中に1回だけ記述できます。また,子要素として一つ以上のBaseElement要素を持つ必要があります。
- 形式
-
<Interface interfaceName="インタフェース名"〔accessInfo="yes|no"〕>
</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.