typedef int SLONG;
typedef char SCHAR;
typedef short SSHORT;
typedef char TEXT;
typedef long ISC_STATUS;
const SLONG gds_arg_string = 2;
const SLONG gds_sys_request = 335544373L;
enum jrd_blk_t
{
    type_str, type_dcc, type_sbm, type_smb, type_blb, type_irb, type_jrn
};
struct blk
{
};
template < class RPT, SSHORT BLOCK_TYPE = 0 > class pool_alloc_rpt:public blk
{
};
class jrn:public pool_alloc_rpt < SCHAR, type_jrn >
{
public:ISC_STATUS * jrn_status_vector;
  TEXT jrn_server[1];
};
typedef jrn *JRN;
extern void IBERR_build_status (ISC_STATUS *, ISC_STATUS, ...);
static void
error (ISC_STATUS * status_vector, JRN journal, int status, TEXT * string)
{
  IBERR_build_status (status_vector, gds_sys_request, gds_arg_string, string,
		      gds_arg_string, (journal) ? journal->jrn_server : "",
		      0);
}
