入力データユーザー出口プログラム
InfoPrint Manager入力データユーザー出口プログラムは、次の目的で使用できます。
- InfoPrint Managerへの入力印刷データストリームを監視します。
- 入力レコードを処理前に破棄します。
- 既存の入力レコードを1つ以上のレコードで置換する(置換後のレコードには、元のレコードまたは元のレコードの変更バージョンが含まれることがあります)。
- 入力レコードを未変更のままで処理を続行します。
追加の入力レコードを挿入するために出口を使用している場合、出口に渡される元の入力レコードを、追加の入力レコードの前または後に処理できます。構造化フィールドリストに現行構造化フィールドを挿入する場所に応じ、現行構造化フィールドの前後に追加の入力レコードを挿入できます。
重要な考慮事項
上記の制約があるため、まず、制限を持たない変換サブシステムを使用してデータを処理することを検討してください。たとえば、変換オブジェクトを使用すると、すべての入力データ(制約なし)にアクセスし、リソースとページを両方とも追加、削除、変更できます。また、変換サブシステムの処理は、印刷開始前に実行されるため、プリンターのパフォーマンスや動作に影響しません。 入力データユーザー出口は、データストリーム内の個々の文書境界を識別できません。 たとえば、ジョブに個別の文書が5つあり、各10ページのデータがあると仮定します。出口では、これを5つの10ページのデータではなく、50ページのデータとして見ます。変換サブシステムにはこの制限がありません。 |
PSF 入力レコード出口の責務は、割り振るすべてのメモリーを管理することです。出口では、ainuexit.h
で提供された作業域ポインターを使用し、呼び出し間のメモリーを再利用できます。PSF は、INDATA_EXITDATA
構造または PSFINSERTRECS
構造のいずれかのフィールドによって指されたメモリーを解放しません。出口は、定義されたメモリーまたは割り当てられたメモリーにポイントできます。必要に応じて、出口では割り振られたメモリーまたは解放されたメモリーを再利用できます。PSF
入力レコード出口がメモリーの管理を誤ると、PSF はメモリー不足になる場合があります。
使用可能なサンプルユーザー出口プログラムページに示したサンプルの入力データユーザー出口プログラムのソースコード(C言語で作成されたもの)は、/usr/lpp/psf/exits/ainuxind.cファイルにあります。このサンプルプログラムは 1 つの戻りコードだけで構成されていて、 関数は何も実行しません。
入力データユーザー出口プログラムのデータ構造は、/usr/lpp/psf/exits/ainuexit.hファイルのソースコードに含まれます。
この出口の宣言は次のとおりです。
void INDATA (INDATA_EXITDATA *exitdata)
INDATA_EXITDATA入出力パラメーターには、InfoPrint Managerとユーザー出口プログラム間の通信に必要なすべての入出力データがあります。
入力データユーザー出口には、以下のフィールドもあります。
- version
- この変数はこれまで
reserved1
と呼ばれていました。出口が変形した場合にマイグレーションエイドとして使用します。この変数には、この構造用の以下のバージョンIDが含まれています。- X'00'=前のバージョン(2005年8月より前)
- X'01'= 2005年8月バージョン(入力レコードの削除/挿入のサポートを追加)
- Copy
- この出口への呼び出しに関連付けられるのがどのコピーかを識別します。最初に1に設定され、出口が呼び出されるたびに1ずつ増分します。
- DataSize
- 入力データレコードの長さが含まれています。
- DataPointer
- 処理される入力データレコードを指します。
- DataType
- 常時 0 に設定されます (AFP。MO:DCA データのみ)。
注意: ジョブ処理の終了を示すために出口が呼び出されている場合、次のようになります。
- DataSizeは0に設定されます。
- DataPointerはNULLに設定されます。
- DataTypeは0に設定されます。
その時点でレコードは渡されません。 PSFINSERTRECS構造には、入力データ出口の要求に応じて挿入される構造化フィールドに関する情報が含まれます。PSFINSERTRECS構造には、次のフィールドがあります。
- version
- versionは、PSFに、提供されているPSFINSERTRECS構造のバージョンを識別します。出口は、値0x01を提供してください。 提供しない場合は、レコード(
next_p
ポインターを含む)は無視されます。 - next_p
- 挿入する次のレコードへのポインターが含まれています。
- record_p
- 挿入する MO:DCA (AFP) 構造化フィールドへのポインターが含まれています。
/usr/lpp/psf/exits/内のainuexit.h
ソースファイルの、追加のデータ定義およびコメントを参照してください。
入力データユーザー出口プログラムを作成した後で、makeコマンドを使用し、コードをコンパイルしてください(ユーザー出口プログラムをコンパイル/インストールするを参照)。