入出力データ情報定義機能を使用する場合の,DDL の各要素の規則と指定例について説明します。
3.3.1 BaseElement 要素
入出力データ情報定義機能を使用した場合,XML アクセス用データ定義の名称として BaseElement 要素 に対応した 01 レベルの集団項目が生成されます。
集団項目名は,BaseElement 要素の cobName 属性に指定した名称(省略時は elemName 属性)に"-BASE"を追加した名称になります。
(1) 規則
"-BASE"を追加した名称は,一意である必要があります。一意でない名称を指定した場合,COBOL 原始プ ログラムの生成時にエラーとなります。
(2) 指定例
BaseElement 要素に対応した集団項目の下位レベルには,次に示す入出力データ項目と入出力データ項目 に対応する入出力データ情報項目が生成されます。
(DTD の例)
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE root [
<!ELEMENT root (item01, item02)>
<!ELEMENT item01 (#PCDATA)>
<!ELEMENT item02 (#PCDATA)>
]>
<root/>
(DDF の例)
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
<BaseElement elemName="root" accessInfo="yes">
<Group elemName="root">
<Item elemName="item01" type="alphanumeric"
size="10" />
<Item elemName="item02" type="alphanumeric"
size="10" />
</Group>
</BaseElement>
</Interface>
(生成される COBOL データ項目)
01 root-BASE.
02 root.
03 item01 PIC X(10).
03 item02 PIC X(10).
* Access Information
02 root-FLG PIC 1(32) USAGE BIT.
02 root-GROUP.
03 item01-FLG PIC 1(32) USAGE BIT.
03 item01-LEN PIC 9(9) USAGE COMP.
03 item02-FLG PIC 1(32) USAGE BIT.
03 item02-LEN PIC 9(9) USAGE COMP.
3.3.2 Group 要素
入出力データ情報定義機能を使用した場合,入出力データ情報項目の名称として Group 要素に対応した集 団項目が生成されます。
集団項目名は,Group 要素の cobName 属性に指定した名称(省略時は elemName 属性)に"-GROUP"を追加した名称になります。
Group 要素に elemName 属性を使って要素を対応づけている場合は,Group 要素に対してアクセス情報 フラグが生成されます。Group 要素に cobName 属性だけを指定している場合は,アクセス情報フラグが 生成されません。
(1) 規則
"-GROUP"を追加した名称は,一意である必要があります。一意でない名称を指定した場合,COBOL 原 始プログラムの生成時にエラーとなります。
(2) 指定例
(DTD の例)
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE root [
<!ELEMENT root (group01, group02)>
<!ELEMENT group01 (item01)>
<!ELEMENT item01 (#PCDATA)>
<!ELEMENT group02 (item02)>
<!ELEMENT item02 (#PCDATA)>
]>
<root/>
(DDF の例)
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
<BaseElement elemName="group01" accessInfo="yes">
<Group elemName="group01">
<Item elemName="item01" type="alphanumeric"
size="10" />
</Group>
</BaseElement>
<BaseElement elemName ="group02" accessInfo="yes">
<Group cobName="group02">
<Item elemName="item02" type="alphanumeric"
size="10" />
</Group>
</BaseElement>
</Interface>
(生成される COBOL データ項目)
01 group01-BASE.
02 group01.
03 item01 PIC X(10).
* Access Information
02 group01-FLG PIC 1(32) USAGE BIT. …1.
02 group01-GROUP.
03 item01-FLG PIC 1(32) USAGE BIT.
03 item01-LEN PIC 9(9) USAGE COMP.
01 group02-BASE.
02 group02.
03 item02 PIC X(10).
* Access Information 02 group02-GROUP.
03 item02-FLG PIC 1(32) USAGE BIT.
03 item02-LEN PIC 9(9) USAGE COMP.
(説明)
1. Group 要素のアクセス情報フラグが生成されるのは,elemName 属性を指定した場合だけです。
3.3.3 Item 要素
入出力データ情報定義機能を使用した場合,Item 要素に対応したアクセス情報フラグとデータ長が生成さ れます。
(1) 指定例
(DTD の例)
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE root [
<!ELEMENT root (item01)>
<!ELEMENT item01 (#PCDATA)>
]>
<root/>
(DDF の例)
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
<BaseElement elemName="root" accessInfo="yes">
<Item elemName="item01" type="alphanumeric"
size="10" />
</BaseElement>
</Interface>
(生成される COBOL データ項目)
01 root-BASE.
02 item01 PIC X(10).
* Access Information
02 item01-FLG PIC 1(32) USAGE BIT.
02 item01-LEN PIC 9(9) USAGE COMP.
3.3.4 Array 要素
入出力データ情報定義機能を使用した場合,繰り返し項目に対応した繰り返し全要素数と繰り返し入出力数 が生成されます。
繰り返し要素が単一(Item 要素)の場合,Item 要素に対応するアクセス情報フラグとデータ長に OCCURS 句が付けられます。繰り返し要素が集団(Group 要素)の場合は,Group 要素に対応する集団項目に OCCURS 句が付けられます。
(1) 繰り返し要素が単一の場合
(DTD の例)
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE root [
<!ELEMENT root (item01*)>
<!ELEMENT item01 (#PCDATA)>
]>
<root/>
(DDF の例)
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
<BaseElement elemName="root" accessInfo="yes">
<Group cobName="root">
<Array max="10">
<Item elemName="item01" type="alphanumeric"
size="10" />
</Array>
</Group>
</BaseElement>
</Interface>
(生成される COBOL データ項目)
01 root-BASE.
02 root.
03 item01 PIC X(10) OCCURS 10.
* Access Information 02 root-GROUP.
03 item01-TOTAL PIC 9(9) USAGE COMP.
03 item01-COUNT PIC 9(9) USAGE COMP.
03 item01-FLG PIC 1(32) USAGE BIT OCCURS 10.
03 item01-LEN PIC 9(9) USAGE COMP OCCURS 10.
(2) 繰り返し要素が集団の場合
(DTD の例)
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE root [
<!ELEMENT root (group01*)>
<!ELEMENT group01 (item01, item02)>
<!ELEMENT item01 (#PCDATA)>
<!ELEMENT item02 (#PCDATA)>
]>
<root/>
(DDF の例)
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE">
<BaseElement elemName="root" accessInfo="yes">
<Group cobName="root">
<Array max="10">
<Group cobName="group1">
<Item elemName="item01" type="alphanumeric"
size="10" />
<Item elemName="item02" type="alphanumeric"
size="10" />
</Group>
</Array>
</Group>
</BaseElement>
</Interface>
(生成される COBOL データ項目)
01 root-BASE.
02 root.
03 group01 OCCURS 10.
04 item01 PIC X(10).
04 item02 PIC X(10).
* Access Information 02 root-GROUP.
03 group01-TOTAL PIC 9(9) USAGE COMP.
03 group01-COUNT PIC 9(9) USAGE COMP.
03 group01-GROUP OCCURS 10.
04 item01-FLG PIC 1(32) USAGE BIT.
04 item01-LEN PIC 9(9) USAGE COMP.
04 item02-FLG PIC 1(32) USAGE BIT.
04 item02-LEN PIC 9(9) USAGE COMP.