D attendee_type...
D DS qualified template
D name 20a varying
D phone 4s 0
D meeting DS qualified
D location 20a varying
D attendee likeds(attendee_type)
D dim(100)
D numAttendee...
D 10i 0
D email DS qualified
D to 40a varying
D cc 40a varying
D from 40a varying
D countCc 5i 0
D subject 100a varying
D countSubject 5i 0
D body 1000a varying
D order1 DS qualified
D numpart 10i 0
D part 20a varying dim(100)
D order2 DS qualified
D numpart 10i 0
D part 20a varying dim(100)
D countpart 10i 0
<meeting>
<location>Room 7a</location>
<attendee name="Jim" phone="1234"/>
<attendee name="Mary" phone="2345"/>
<attendee name="Abel" phone="6213"/>
</meeting>
この XML-INTO 命令は、countprefix サブフィールドである numAttendee を 3、 つまり、この命令によって設定された attendee サブフィールドの数に設定します。 配列 attendee 用の countprefix サブフィールドがあることによって、 この特定の配列に対する XML データの欠落は暗黙的に許容されるため、オプション allowmissing=yes を 指定する必要はありません。
xml-into meeting %xml('meeting123.xml'
: 'doc=file countprefix=num');
// meeting.attendee(1): name='Jim' phone=1234
// meeting.attendee(2): name='Mary' phone=2345
// meeting.attendee(3): name='Abel' phone=6213
// meeting.numAttendee = 3 for i = 1 to meeting.numAttendee;
if meeting.attendee(i) ...
endfor;
配列 attendee に対する XML データが不十分であるため、この XML-INTO 命令は 失敗し、numAttendee の XML データはまったくありません。
xml-into(e) meeting %xml('meeting123.xml'
: 'doc=file');
// %error = *on
<email to="jack@anywhere.com" from="jill@anywhere.com">
<subject>The hill</subject>
<body>How are you feeling after your fall?</body>
</email>
countprefix=count オプションが指定され、 countprefix サブフィールドの 接頭部が count であると指示しています。
cc サブフィールドに対する XML データはありませんが、countprefix サブフィールドである countCc が あって、cc サブフィールドが XML から設定されなかったという情報を受け取る ことができるため、この XML-INTO 命令は成功します。
xml-into email %xml('email456.xml'
: 'doc=file countprefix=count');
// email.to = 'jack@anywhere.com'
// email.from = 'jill@anywhere.com'
// email.cc = ?? (not set by XML-INTO)
// email.countCc = 0
// email.subject = 'The hill'
// email.countSubject = 1
// email.body = 'How are you feeling after your fall?'
if email.countCc = 1;
cc = email.cc;
else;
cc = '';
endif;
if email.countSubject = 1;
subj = email.subject;
else;
subj = "NO SUBJECT";
endif;
<order numpart="2">
<part>hammer</part>
<part>saw</part>
</order>
XML 文書には、属性 numpart が 含まれていて、文書中にある part 要素の数を示しています。
この XML-INTO 命令は失敗します。サブフィールド numpart は countprefix サブフィールド であるため、明示的に XML-INTO 命令で設定することはできません。
xml-into(e) order1 %xml('order789.xml'
: 'doc=file countprefix=num path=order');
// %error is set on
この XML-INTO 命令は成功します。サブフィールド numpart は XML 文書から 2 に 設定され、サブフィールド countpart は countprefix 処理によって 2 に 設定されます。part 配列 は countprefix オプションによってカウントされるため、 配列全体を設定するための十分な XML データがないことはエラーにはなりません。
xml-into order2 %xml('order789.xml'
: 'doc=file countprefix=count path=order');
// order2.numpart = 2
// order2.part(1) = 'hammer'
// order2.part(2) = 'saw'
// order2.countpart = 2
