リソース出口
行データ変換には、ユーザーがリソースをフィルターに掛ける
(除外する)ために使用できる出口があります。この出口は、リソースをファイル名レベルで制御する場合に便利です。たとえば、InfoPrint Manager提供フォント以外のフォントだけ使用すると仮定します。この出口プログラムをコーディングInfoPrint Managerすると、 に同梱されるフォントの表を含めてリソースファイルからフィルターに掛けることができます。指定した特定のリソースを組み込みの対象から外すことができるので、この出口のもう
1 つの用途として、セキュリティーのための使用が考えられます。この出口で呼び出されるプログラムは、line2a
fpコマンドの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
- 最後のレコードが書き込まれていないことを示します。
このファイルの終わりフラグは、最終呼び出しインジケーターとして使用され、行データ変換に制御を戻します。出口プログラムで、このパラメーターを変更することはできません。