PLISAXB サブルーチン

目的

ファイル内にある XML ドキュメントを処理するために XML パーサーを呼び出します。

構文

CALL PLISAXB(e, p, x, c)

パラメーター

e は、イベント構造体です。

p は、パーサーからイベント関数に渡すポインター値またはトークンです。

x は、入力ファイルの文字列式です。

c は、処理対象の XML ドキュメントのコード ページを指定する数値式です。

説明

PLISAXB 組み込みサブルーチンは、libmxml2 XML パーサーに基づく内部 SAX 解析を提供します。24 種類のイベントに対応しており、ファイルを操作できます。入力ファイルの文字列式のコードは ASCII でも EBCDIC でも構いません。

この例は、PLISAXB 組み込みサブルーチンの使用法を示しています。この例では、PLISAXB を呼び出すメイン ルーチンのみが示されており、イベント構造体や型宣言は示されていません。

dcl token        char(8);
dcl xmlDocument  char(4000) var;
xmlDocument =
    '<?xml version="1.0" standalone="yes"?>'
||  '<!--This document is just an example-->'
||  '<sandwich>'
||  '<bread type="baker's best"/>'
||  '<?spread please use real mayonnaise ?>'
||  '<meat>Ham &amp; turkey</meat>'
||  '<filling>Cheese, lettuce, tomato, etc.</filling>'
||  'We should add a <relish> element in future!'.
||  '</sandwich>'
||  ' ';
call plisaxb( eventHandler,
              addr(token),
              addrdata(xmlDocument),
              length(xmlDocument) );
end;

制約事項

-ebcdic オプションを使用してプログラムをコンパイルする場合、コールバック イベント ロジックでは、入力フォーマットが EBCDIC であってもコールバックに渡されるデータは ASCII であることが考慮されている必要があります。このため、データは使用前にコールバック内で変換される必要があります。さらに、FIXED BIN(31) として渡されるリファレンス値はすべて、ASCII 文字エンコーディング用です。

UNIX では、XML 入力が EBCDIC で、左角かっこおよび右角かっこ ([] など) を含んでおり、その値が X'BA' および X'BB' である場合、これらのルーチンを変換するためには、独自のカスタム コードセット モジュールを作成する必要があり、それらを実行する際には、カスタム コードセットをポイントするように環境変数 MFCODESET を設定する必要があります。これは ASCII 入力には適用されません。

Intel Chip 上でプログラムが動作している場合、そのプログラムは -bigendian コンパイラ オプションを使用してビルドされたものと見なされます。-bigendian コンパイラ オプションを使用せずにプログラムをコンパイルした場合は、使用前に -bigendian に対するパラメーター タイプの変換が必要になります。

次に、既存の z/OS ベースのアプリケーションを移行する場合の考慮事項を示します。

  • PLISAXA および PLISAXB イベント構造の一部である (ただし PLISAXC の一部でない) イベント unknown_attribute_reference (E20) が IBM の SAX プロセッサと同じコンテンツをともなって生成されますが、解析のより早い段階で発生します。
  • イベント unknown_content_reference (E21) の参照は、実際の値に拡張されます。
  • 2 つのイベント start_of_prefix_mapping (E22) および end_of_prefix_mapping (E23) は、IBM の PLISAXA および PLISAXB 機能によって記述されたアプリケーションとの互換性を維持するために現時点ではサポートされません。
  • SAX パーサーを使用する場合は、イベント exception (E24) は 1 回のみ発生してエラーを示し、exception イベントを文字ごとに 1 回発生させることは行いません。イベント exception (E24) の Micro Focus エラー コードのリストについては、「XML パーサーの例外イベント エラー コード」トピックを参照してください。
  • PLISAXB では、第 3 のパラメーターとして、バッチの file://dd:ddname (ddname はファイルを指定する DD 文の名前)UNIX の file://filename (filename は UNIX ファイルの名前) の形式でファイル名を受け入れます。入力ファイルを指定する文字列には、先頭または末尾に空白があってはなりません。この形式に該当しない場合は、パラメーター値は実際のファイル名と見なされます。RECFM=F、FB、FS、FBS、LSEQ のファイルのみが、受け入れられる入力です。