構造体のデータを XML としてバッファーにダンプします。その後、PL/I SAX パーサーを使用するコードなど、他のアプリケーションにこの XML を渡すことができます。
XMLCHAR(x, p, n)
x は、構造体参照です。
構造体参照 x には、文字列および数値データのみを指定する必要があります。
構造体参照 x はサブ構造体を含むことができます。ただし、内包されたサブ構造体では、名前の代わりにアスタリスク (*) を使用することはできません。アスタリスクはベース要素名として使用できますが、名前のない要素はターゲット バッファーに書き込まれません。
p は、ターゲット バッファーのアドレスです。
n は、ターゲット バッファーの長さです。
バッファーの長さは計算型でなければならず、FIXED BINARY(31,0) に変換されます。
バッファーの長さは負でない長さである必要があります。
このコード サンプルを次に示します。
XMLCHAR: PROC() OPTIONS(MAIN); DCL 1 REDSOX, 5 WINS(5) FIXED BIN(31) INIT(1,2,3,4,5), 5 PITCHERS(5) CHAR(15) VARYING INIT('Clay Buchholtz', 'Jon Lester', 'John Lackey', 'Ryan Dempster', 'Koji Uehara'); DCL BUFFER CHAR(4000); DCL LEN FIXED BIN(31); LEN = XMLCHAR(REDSOX, ADDRDATA(BUFFER), STG(BUFFER)); PUT SKIP LIST(SUBSTR(BUFFER, 1, LEN)); END;
この場合、次の内容がバッファーに書き込まれます。
<REDSOX><WINS>1</WINS><WINS>2</WINS><WINS>3</WINS><WINS>4</WINS><WINS>5</WINS><PITCHERS>Clay Buchholtz</PITCHERS><PITCHERS>Jon Lester</PITCHERS><PITCHERS>John Lackey</PITCHERS><PITCHERS>Ryan Dempster</PITCHERS><PITCHERS>Koji Uehara</PITCHERS></REDSOX>
なし。
説明
XMLCHAR 関数は、バッファーに書き込まれたバイト数を返します。バッファーが小さすぎる場合は、構造体データが切り捨てられ、構造体をバッファーに格納するために必要なバイト数が返されます。
指定された構造体のデータが XML としてバッファーにダンプされる際、次の処理が行われます。
スペースより小さい文字はすべてスペースに置き換えられます。
キャリッジ リターンはすべて次の文字列に置き換えられます。 
< 文字はすべて次の文字列に置き換えられます。 <
> 文字はすべて次の文字列に置き換えられます。 >
一重引用符文字はすべて次の文字列に置き換えられます。 '
二重引用符文字はすべて次の文字列に置き換えられます。 "
& 文字はすべて次の文字列に置き換えられます。 &