リソース出口

行データ変換には、ユーザーがリソースをフィルターに掛ける(除外する)ために使用できる出口があります。この出口は、リソースをファイル名レベルで制御する場合に便利です。たとえば、InfoPrint Manager提供フォント以外のフォントだけ使用すると仮定します。この出口プログラムをコーディングInfoPrint Managerすると、 に同梱されるフォントの表を含めてリソースファイルからフィルターに掛けることができます。指定した特定のリソースを組み込みの対象から外すことができるので、この出口のもう 1 つの用途として、セキュリティーのための使用が考えられます。この出口で呼び出されるプログラムは、line2afpコマンドのresexitキーワードによって定義されます。

この出口は、リソースをディレクトリーから読み取る前に制御を 受け取ります。この出口プログラムでは、リソースの処理または無視(スキップ)を要求できますが、要求対象リソースの代わりに別のリソース名は使用できません。出口で、オーバーレイの無視を要求した場合は、そのオーバーレイが参照するすべてのリソース (つまりフォントおよびページセグメント) は行データ変換で無視されます。

サンプルリソース出口C言語ヘッダーは、出口プログラムに渡す制御ブロックを記述したC言語ヘッダーの例を示しています。

サンプルリソース出口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' は、リソースを処理することを指定します。リソースを無視したい場合は、requestバイトの値をX'01'に変更します。X'01' より大きい値はすべて X'00' として解釈され、リソースが処理されます。

resnamel
resnamef フィールド内の有意味文字の長さを指定します。
pad1
ワード境界で resnamef を取得するための埋め込みバイト。
resnamef
長さが 8 文字より長い場合のリソースの実際の名前。名前が 8 文字以下の場合、代わりにその名前が resname フィールドに格納されます。
eof(バイト19)
ファイルの終わり (eof) インディケーター。このインディケーターは、行データ変換で最後のレコードの書き込みが終わったことを通知する 1 バイトの文字コードです。

eof が通知される時点 (eof の値は「Y」) では、最後のレコードはすでにリソース出口に送られています。ポインター record はすでに無効です。eof 信号が出た後は、レコードは挿入できません。このパラメーターに有効な値は次の値だけです。

Y
最後のレコードが書き込まれたことを示します。
N
最後のレコードが書き込まれていないことを示します。

このファイルの終わりフラグは、最終呼び出しインジケーターとして使用され、行データ変換に制御を戻します。出口プログラムで、このパラメーターを変更することはできません。