非 REXX ユーザー出口のバッファー・データ・フォーマット

このセクションに記載される情報は、REXX に書き込まれていないユーザー出口にのみ適用できます。

特定文字フィールドのデータ長が最大フィールド・サイズを超える場合、Fault Analyzer はすべてのフィールド・データに十分なサイズのバッファーを割り振り、フィールドの相対オフセット・ゼロを起点にして 3 つのフルワードで以下のようにバッファーに関する情報を提供します。

  • 最初のフルワードの最初のバイトは X'FF' に設定され、このフィールドがバッファー情報を 含むことを示します。他の 3 バイトは使用されませんが、Fault Analyzer により X'00' に設定されます。
  • 2 番目のフルワードは、データがそのフィールド自体に指定されたときと同じフォーマットでデータが含まれるバッファーのアドレスです。
  • 3 番目のフルワードは、割り振られたバッファーの長さを示します。

このバッファー・フォーマットが適用されるデータ・フィールドは、データ域の記述内で別個に識別されます。

分析制御ユーザー出口は、Fault Analyzer がそのフィールドに対して割り振ったバッファーを解放できません。代わりに、フィールド・サイズやバッファー・サイズが不十分な場合、この出口は独自のバッファーを割り振り、このフィールドの相対オフセット・ゼロを起点にしてアドレスおよび長さ情報を 3 つのフルワードで配置します。Fault Analyzer は、割り振られたストレージを後で解放する際に使用するために保存される、元のバッファー・アドレスに依存しません。

ユーザー出口によって割り振られたバッファーはユーザーが解放しなければなりません。この解放を行うには、ENV.USER_1 フィールドまたは ENV.USER_2 フィールドを使用して、実行されたバッファー割り振りに関する情報が含まれているストレージ域を指し示します。End Processingユーザー出口のような後の出口は、割り振られたストレージの解放に使用できます。

REXX ユーザー出口の場合、Fault Analyzer は必要なバッファーの割り振りと解放を自動的に処理し、フィールド・サイズを超えるデータ長に適応します。