COBOL2002 XML連携機能ガイド
アクセス情報フラグには,入力した要素および属性の状態が格納されます。また,出力時にアクセス情報フラグを設定すると,要素および属性の出力状態を設定できます。アクセス情報フラグは32けたのブール項目として,cblxmlコマンドが生成するXMLアクセス用データ定義に生成されます。
次に,アクセス情報フラグの値について,説明します。
入力時に設定されるアクセス情報フラグの詳細を,表 3-3に示します。なお,XMLドキュメント入力時には,複数のフラグ値が設定される場合があります。
表3-3 入力時のアクセス情報フラグ
| 登録集原文"CBLXMLRC.cbl"の定義名(78レベル) | アクセス情報フラグ値 | アクセス情報フラグの意味 |
|---|---|---|
| CBLXML-FLAG-MISSING | B'100000〜0' | 要素または属性がない。 |
| CBLXML-FLAG-EMPTY | B'010000〜0' | 要素または属性の値が空である。※1 |
| CBLXML-FLAG-INVAL-CHAR | B'001000〜0' | 要素または属性の値にItem要素のtype属性に指定したCOBOLデータ形式で無効な文字が含まれている。※2 |
| CBLXML-FLAG-OVERFLOW | B'000100〜0' | 要素,属性の値の長さがItem要素のsize属性に指定した値を超えている。※3 |
出力時に設定するアクセス情報フラグの詳細を表 3-4に示します。
表3-4 出力時のアクセス情報フラグ
| 登録集原文"CBLXMLRC.cbl"の定義名(78レベル) | アクセス情報フラグ値 | アクセス情報フラグの意味 |
|---|---|---|
| CBLXML-FLAG-OK | B'00000〜0' | 要素または属性を出力する。 |
| CBLXML-FLAG-MISSING | B'10000〜0' | 要素を出力しない。※ |
| CBLXML-FLAG-EMPTY | B'01000〜0' | 空要素を出力する。 |
入出力データ情報定義機能を使用した場合のnameOfFlagVar属性の指定例を次に示します。
<?xml version="1.0" encoding="Shift_JIS"?> <!DOCTYPE root [ <!ELEMENT root (group01)> <!ELEMENT group01 (item01)> <!ELEMENT item01 (#PCDATA)> ]> <root/>
<?xml version="1.0" encoding="Shift_JIS"?>
<Interface interfaceName="EXAMPLE" accessInfo="yes">
<BaseElement elemName="group01">
<Group elemName="group01"
nameOfFlagVar="G01-FLAG">
<Item elemName="item01"
nameOfFlagVar="I01-FLAG"
type="alphanumeric" size="10"/>
</Group>
</BaseElement>
</Interface>01 group01-BASE. 02 group01. 03 item01 PIC X(10). * Access Information. 02 G01-FLAG PIC 1(32) USAGE BIT. 02 group01-GROUP. 03 I01-FLAG PIC 1(32) USAGE BIT. 03 item01-LEN PIC 9(9) USAGE COMP.
:
01 CHECK-FLAG PIC 1(32) BIT.
:
COMPUTE CHECK-FLAG = I01-FLAG AND CBLXML-FLAG-MISSING.
IF CHECK-FLAG = CBLXML-FLAG-MISSING THEN
DISPLAY 'CBLXML-FLAG-MISSING'
END-IF.
COMPUTE CHECK-FLAG = I01-FLAG AND CBLXML-FLAG-EMPTY.
IF CHECK-FLAG = CBLXML-FLAG-EMPTY THEN
DISPLAY 'CBLXML-FLAG-EMPTY'
END-IF.
COMPUTE CHECK-FLAG = I01-FLAG AND CBLXML-FLAG-INVAL-CHAR.
IF CHECK-FLAG = CBLXML-FLAG-INVAL-CHAR THEN
DISPLAY 'CBLXML-FLAG-INVAL-CHAR'
END-IF.
COMPUTE CHECK-FLAG = I01-FLAG AND CBLXML-FLAG-OVERFLOW.
IF CHECK-FLAG = CBLXML-FLAG-OVERFLOW THEN
DISPLAY 'CBLXML-FLAG-OVERFLOW'
END-IF.
:All Rights Reserved. Copyright (C) 2017, 2019, Hitachi, Ltd.