リソース出口

行データ変換には、ユーザーがリソースをフィルターに掛ける(除外する)ために使用できる出口があります。この出口は、リソースをファイル名レベルで制御する場合に便利です。たとえば、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 フィールドに格納されます。