countprefix オプションの例
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
- ファイル meeting123.xml に以下が含まれていると想定します。
<meeting> <location>Room 7a</location> <attendee name="Jim" phone="1234"/> <attendee name="Mary" phone="2345"/> <attendee name="Abel" phone="6213"/> </meeting>- countprefix オプションは num 接頭部を指定します。
この 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; - countprefix サブフィールドは指定されません。
配列 attendee に対する XML データが不十分であるため、この XML-INTO 命令は 失敗し、numAttendee の XML データはまったくありません。
xml-into(e) meeting %xml('meeting123.xml' : 'doc=file'); // %error = *on
- countprefix オプションは num 接頭部を指定します。
- ファイル email456.txt に以下が含まれていると想定します。
<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?'プログラムは countCc および countSubject サブフィールドの 値を使用して、cc および subject サブフィールド が XML-INTO 命令によって設定されたかどうかを判別します。if email.countCc = 1; cc = email.cc; else; cc = ''; endif; if email.countSubject = 1; subj = email.subject; else; subj = "NO SUBJECT"; endif; - ファイル File order789.txt に以下が含まれていると想定します。
<order numpart="2"> <part>hammer</part> <part>saw</part> </order>XML 文書には、属性 numpart が 含まれていて、文書中にある part 要素の数を示しています。
- オプション countprefix=num が指定され、numpart が
配列 part 用の countprefix サブフィールドであると指示しようとしています。
この XML-INTO 命令は失敗します。サブフィールド numpart は countprefix サブフィールド であるため、明示的に XML-INTO 命令で設定することはできません。
xml-into(e) order1 %xml('order789.xml' : 'doc=file countprefix=num path=order'); // %error is set on - オプション countprefix=count が指定され、countpart が
配列 part 用の countprefix サブフィールドであると指示しています。
この 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
- オプション countprefix=num が指定され、numpart が
配列 part 用の countprefix サブフィールドであると指示しようとしています。
