リソース出口
行データ変換には、ユーザーがリソースをフィルターに掛ける(除外する)ために使用できる出口があります。この出口は、リソースをファイル名レベルで制御する場合に便利です。たとえば、InfoPrint Manager提供フォント以外のフォントだけ使用すると仮定します。そのような場合は、InfoPrint 提供のすべてのフォントを含むテーブルを指定し、それらのフォントをフィルターに掛けてリソースファイルから除外するように、この出口プログラムをコーディングできます。指定した特定のリソースを組み込みの対象から外すことができるので、この出口のもう 1 つの用途として、セキュリティーのための使用が考えられます。この出口で呼び出されるプログラムは、line2afpコマンドのresexitキーワードによって定義されます。
この出口は、リソースをディレクトリーから読み取る前に制御を 受け取ります。この出口プログラムでは、リソースの処理または無視(スキップ)を要求できますが、要求対象リソースの代わりに別のリソース名は使用できません。出口で、オーバーレイの無視を要求した場合は、そのオーバーレイが参照するすべてのリソース(つまりフォントとページセグメント)は行データ変換で無視されます。
次の例は出口プログラムに渡す制御ブロックを記述したC言語ヘッダーの例を示しています。
/*********************************************************************/ /* RESEXIT STRUCTURE */ /*********************************************************************/ typedef struct _RESEXIT_PARMS /* Parameters for resource record exit */ { char *work; /* Address of 16-byte static work area */ PFATTR *pfattr; /* Address of print file attribute info*/ char resname[8]; /* Name of requested resource (8 byte) */ char restype; /* Type of resource */ char request; /* Ignore or process the resource */ char eof; /* Last call indicator */ unsigned short resnamel; /* Length of resource name @05A*/ char pad1[3]; /* padding byte @05A*/ char resnamf[250]; /* Rsrc name if more than 8 bytes@05A*/ } RESEXIT_PARMS;
次のパラメーターを含む制御ブロックのアドレスが、リソースレコード出口に渡されます。
- work(バイト1~4)
- 16バイトの静的メモリーブロックを指すポインター。出口プログラムは、このパラメーターを使用すると、呼び出し間の情報(作業領域を指すポインターなど)を保管できます。16バイトの作業領域は、最初の呼び出しの前に、フルワード境界に位置合せされ、2進ゼロに初期設定されます。ユーザー作成の出口プログラムには、この作業領域を管理するために必要なコードを指定しておく必要があります。
- pfattr(バイト5~8)
- 印刷ファイル属性データ構造を指すポインター。このデータ構造のフォーマットと、示される情報について詳しくは、「行データ入力ファイルの属性」を参照してください。
- resname(バイト9~16)
- 要求対象リソースの名前を指定します。出口プログラムで、この値の変更はできません。
- restype(バイト17)
- 名前の参照先のリソースのタイプを指定します。これは、次に示す1バイトの16進値です。
- X'03'
- GOCA (グラフィックス) オブジェクトを指定します。
- X'05'
- BCOCA (バーコード) オブジェクトを指定します。
- X'06'
- IOCA (入出力イメージ) オブジェクトを指定します。
- X'40'
- フォント文字セットを指定します。
- X'41'
- コードページを指定します。
- X'FB'
- ページセグメントを指定します。
- X'FC'
- オーバーレイを指定します。
行データ変換は、以下のリソースタイプについては、この出口を呼び出しません。
- ページ定義
- ページ定義(pagedefキーワード)は、行データファイル変換用の必須リソースです。
- 書式定義
- 書式定義(formdefキーワード)は、変換済み行データファイルを印刷するための必須リソースです。
- コード化フォント
- 行データ変換では、コードページの名前と参照するフォント文字セットの名前を判別するために、コード化フォントが処理されます。これは Map Coded Font-2 (MCF-2) 構造化フィールドを作成する場合に必要です。
- request(バイト18)
- 行データ変換でリソースをどのように処理するかを指定します。出口プログラムに入力するときは、このパラメーターはX'00'になります。出口プログラムが行データ変換に制御を戻すときは、このパラメーターはX'00'またはX'01'になります。
ここで、
- X'00'
- 行データ変換でリソースを処理することを指定します。
- X'01'
- 行データ変換でリソースを無視することを指定します。
出口プログラムへ入力する時点での値 X'00' は、リソースを処理することを指定します。リソースを無視する場合は、要求バイトの値を X'01' に変更します。X'01' より大きい値はすべて X'00' として解釈され、リソースが処理されます。
- eof(バイト19)
- ファイルの終わり (eof) インディケーター。このインディケーターは、行データ変換で最後のレコードの書き込みが終わったことを通知する 1 バイトの文字コードです。
eof が通知される時点 (
eof の値は「Y」
) では、最後のレコードはすでにリソース出口に送られています。ポインター record はすでに無効です。eof 信号が出た後は、レコードは挿入できません。このパラメーターには次の値だけ使用可能です。- Y
- 最後のレコードが書き込まれたことを示します。
- N
- 最後のレコードが書き込まれていないことを示します。
このファイルの終わりフラグは、最終呼び出しインジケーターとして使用され、行データ変換に制御を戻します。出口プログラムで、このパラメーターは変更できません。
- resnamel
resnamf
フィールド内の有意文字の長さ。resnamel では、最後の文字は l です。- pad1
resnamf
をワード境界に配置する埋め込みバイト。- resnamf
- 8 文字より長い場合のリソースの実際の名前。名前が 8 文字以下の場合、代わりにその名前は
resname
フィールドに格納されます。