/* Copyright (c) 1995, 2007, Oracle Corporation. All Rights Reserved. */ /*++ * FACILITY: * RDML -- Relational Data Manipulation Language Preprocessors * * ABSTRACT: * Include file for VAX C modules preprocessed by RDML * * VERSION: * RDML V7.0 *-- */ #include #include #ifndef vax11c #ifndef globalref #define globalref extern #define globaldef #endif #endif #ifndef TRUE #define TRUE (1==1) #define FALSE (1==0) #endif #define CHR(p) (char) p #define RDB$EOF CHR(1) #define RDB$NOTEOF CHR(0) #define RDB$TRUE CHR(1) #define BLR$K_DTYPE_B CHR(6) #define BLR$K_DTYPE_W CHR(7) #define BLR$K_DTYPE_L CHR(8) #define BLR$K_DTYPE_Q CHR(9) #define BLR$K_DTYPE_F CHR(10) #define BLR$K_DTYPE_G CHR(27) #define BLR$K_DTYPE_T CHR(14) #define BLR$K_DTYPE_VT CHR(37) #define BLR$K_DTYPE_ADT CHR(35) #define TPB$K_VERSION1 CHR(1) #define TPB$K_VERSION2 CHR(2) #define TPB$K_VERSION3 CHR(3) #define TPB$K_CONSISTENCY CHR(1) #define TPB$K_CONCURRENCY CHR(2) #define TPB$K_SHARED CHR(3) #define TPB$K_PROTECTED CHR(4) #define TPB$K_EXCLUSIVE CHR(5) #define TPB$K_WAIT CHR(6) #define TPB$K_NOWAIT CHR(7) #define TPB$K_READ CHR(8) #define TPB$K_WRITE CHR(9) #define TPB$K_LOCK_READ CHR(10) #define TPB$K_LOCK_WRITE CHR(11) #define TPB$K_VERB_TIME CHR(12) #define TPB$K_COMMIT_TIME CHR(13) #define TPB$K_BATCH_UPDATE CHR(14) #define TPB$K_RETAIN_LOCKS CHR(15) #define TPB$K_AUTO_LOCKS CHR(16) #define TPB$K_NOAUTO_LOCKS CHR(17) #define BLR$K_VERSION2 CHR(2) #define BLR$K_VERSION3 CHR(3) #define BLR$K_VERSION4 CHR(4) /* Verbs */ #define BLR$K_ASSIGNMENT CHR(1) #define BLR$K_TRANSFER CHR(1) /* Same as BLR$K_ASSIGNMENT */ #define BLR$K_BEGIN CHR(2) #define BLR$K_DCL_VARIABLE CHR(3) #define BLR$K_MESSAGE CHR(4) #define BLR$K_DCL_PORT CHR(4) /* Same as BLR$K_MESSAGE */ #define BLR$K_DECLARE_PORT CHR(4) /* Same as BLR$K_MESSAGE */ #define BLR$K_ERASE CHR(5) #define BLR$K_FETCH CHR(6) #define BLR$K_FOR CHR(7) #define BLR$K_IF CHR(8) #define BLR$K_LOOP CHR(9) #define BLR$K_MODIFY CHR(10) #define BLR$K_HANDLER CHR(11) #define BLR$K_RECEIVE CHR(12) #define BLR$K_SELECT CHR(13) #define BLR$K_SEND CHR(14) #define BLR$K_STORE CHR(15) #define BLR$K_WHILE CHR(16) #define BLR$K_LABEL CHR(17) #define BLR$K_LEAVE CHR(18) #define BLR$K_STORE2 CHR(19) #define BLR$K_PLACE CHR(20) /* Values */ #define BLR$K_LITERAL CHR(21) #define BLR$K_DBKEY CHR(22) #define BLR$K_FIELD CHR(23) #define BLR$K_FIELD_ID CHR(24) #define BLR$K_PARAMETER CHR(25) #define BLR$K_ARGUMENT CHR(25) /* Same as BLR$K_PARAMETER */ #define BLR$K_VARIABLE CHR(26) #define BLR$K_AVERAGE CHR(27) #define BLR$K_COUNT CHR(28) #define BLR$K_MAXIMUM CHR(29) #define BLR$K_MINIMUM CHR(30) #define BLR$K_TOTAL CHR(31) #define BLR$K_SMAX CHR(32) #define BLR$K_MAX CHR(32) /* Same as BLR$K_SMAX */ #define BLR$K_SMIN CHR(33) #define BLR$K_MIN CHR(33) /* Same as BLR$K_SMIN */ #define BLR$K_ADD CHR(34) #define BLR$K_PLUS CHR(34) /* Same as BLR$K_ADD */ #define BLR$K_SUBTRACT CHR(35) #define BLR$K_SUB CHR(35) /* Same as BLR$K_SUBTRACT */ #define BLR$K_MINUS CHR(35) /* Same as BLR$K_SUBTRACT */ #define BLR$K_MULTIPLY CHR(36) #define BLR$K_MUL CHR(36) /* Same as BLR$K_MULTIPLY */ #define BLR$K_TIMES CHR(36) /* Same as BLR$K_MULTIPLY */ #define BLR$K_DIVIDE CHR(37) #define BLR$K_DIV CHR(37) /* Same as BLR$K_DIVIDE */ #define BLR$K_NEGATE CHR(38) #define BLR$K_CONCATENATE CHR(39) #define BLR$K_SUBSTR CHR(40) #define BLR$K_PARAMETER2 CHR(41) #define BLR$K_FROM CHR(42) #define BLR$K_VIA CHR(43) /* Comparisons */ #define BLR$K_BOOL_MIN CHR(46) #define BLR$K_EQL CHR(47) #define BLR$K_NEQ CHR(48) #define BLR$K_GTR CHR(49) #define BLR$K_GEQ CHR(50) #define BLR$K_LSS CHR(51) #define BLR$K_LEQ CHR(52) #define BLR$K_CONTAINING CHR(53) #define BLR$K_MATCHES CHR(54) #define BLR$K_MATCHING CHR(54) /* Same as BLR$K_MATCHES */ #define BLR$K_STARTS CHR(55) #define BLR$K_BETWEEN CHR(56) #define BLR$K_OR CHR(57) #define BLR$K_AND CHR(58) #define BLR$K_NOT CHR(59) #define BLR$K_ANY CHR(60) #define BLR$K_MISSING CHR(61) #define BLR$K_UNIQUE CHR(62) #define BLR$K_IDENTITY CHR(63) #define BLR$K_LIKE CHR(64) #define BLR$K_ANY2 CHR(65) #define BLR$K_ALL CHR(66) /* Miscellaneous */ #define BLR$K_RSE CHR(67) #define BLR$K_FIRST CHR(68) #define BLR$K_PROJECT CHR(69) #define BLR$K_FIELDS CHR(69) /* Same as BLR$K_PROJECT */ #define BLR$K_SORT CHR(70) #define BLR$K_SORTS CHR(70) /* Same as BLR$K_SORT */ #define BLR$K_BOOLEAN CHR(71) #define BLR$K_ASCENDING CHR(72) #define BLR$K_DESCENDING CHR(73) #define BLR$K_RELATION CHR(74) #define BLR$K_RELATION_ID CHR(75) #define BLR$K_EOC CHR(76) #define BLR$K_AGGREGATE CHR(77) #define BLR$K_AGG_AVERAGE CHR(78) #define BLR$K_AGG_COUNT CHR(79) #define BLR$K_AGG_MAX CHR(80) #define BLR$K_AGG_MAXIMUM CHR(80) /* Same as BLR$K_AGG_MAX */ #define BLR$K_AGG_MIN CHR(81) #define BLR$K_AGG_MINIMUM CHR(81) /* Same as BLR$K_AGG_MIN */ #define BLR$K_AGG_TOTAL CHR(82) #define BLR$K_CONTROL_BITS CHR(83) #define BLR$K_GROUP_BY CHR(84) #define BLR$K_GROUP_VALUE CHR(85) #define BLR$K_MAP CHR(86) #define BLR$K_MERGE CHR(87) #define BLR$K_PARAMETER3 CHR(88) #define BLR$K_END CHR(255) /* DPB flags and constants */ #define RDB$K_DPB_VERSION1 CHR(1) #define RDB$K_DPB_VERSION2 CHR(2) #define RDB$K_DPB_CDD_PATHNAME CHR(1) #define RDB$K_DPB_ALLOCATION CHR(2) #define RDB$K_DPB_AIJ CHR(3) #define RDB$K_DPB_PAGE_SIZE CHR(4) #define RDB$K_DPB_NUM_BUFF CHR(5) #define RDB$K_DPB_BUFFER_LENGTH CHR(6) #define RDB$K_DPB_DEBUG CHR(7) #define RDB$K_DPB_GARBAGE_COLLECT CHR(8) #define RDB$K_DPB_VERIFY CHR(9) #define RDB$K_DPB_SWEEP CHR(10) #define RDB$K_DPB_ENABLE_JOURNAL CHR(11) #define RDB$K_DPB_DISABLE_JOURNAL CHR(12) #define RDB$K_DPB_DBKEY_SCOPE CHR(13) #define RDB$K_DPB_NUM_USERS CHR(14) #define RDB$K_DPB_NUMBER_OF_USERS CHR(14) /*Same as RDB$K_DPB_NUM_USERS*/ #define RDB$K_DPB_DB_EXTENT CHR(15) #define RDB$K_DPB_EXT_DB_MIN_NUM_PAGES CHR(16) #define RDB$K_DPB_EXT_DB_MAX_NUM_PAGES CHR(17) #define RDB$K_DPB_EXT_DB_PCT_GROWTH CHR(18) #define RDB$K_DPB_SNP_ALLOCATION CHR(19) #define RDB$K_DPB_SNP_ENABLED CHR(20) #define RDB$K_DPB_SNP_DISABLED CHR(21) #define RDB$K_DPB_SNP_EXTENT CHR(22) #define RDB$K_DPB_EXT_SNP_MIN_NUM_PAGES CHR(23) #define RDB$K_DPB_EXT_SNP_MAX_NUM_PAGES CHR(24) #define RDB$K_DPB_EXT_SNP_PCT_GROWTH CHR(25) #define RDB$K_DPB_AIJ_CONTINUOUS CHR(26) #define RDB$K_DPB_AIJ_ONCE CHR(27) #define RDB$K_DPB_AIJ_SPOOL_FILE CHR(28) #define RDB$K_DPB_DESCRIPTION_SOURCE CHR(29) #define RDB$K_DPB_CONVERT CHR(30) #define RDB$K_DPB_SNAPSHOT CHR(31) #define RDB$K_DPB_OPEN_MANUAL CHR(32) #define RDB$K_DPB_OPEN_AUTOMATIC CHR(33) #define RDB$K_DPB_DEFINE_STORAGE CHR(34) #define RDB$K_DPB_CHANGE_STORAGE CHR(35) #define RDB$K_DPB_STORAGE_NAME CHR(36) #define RDB$K_DPB_FILESPEC CHR(37) #define RDB$K_DPB_EXTENSIBLE CHR(38) #define RDB$K_DPB_SNP_DEFERRED CHR(39) #define RDB$K_DPB_NUM_NODES CHR(40) #define RDB$K_DPB_FILE_TYPE CHR(41) #define RDB$K_DPB_CDD_MAINTAINED CHR(42) #define RDB$K_DPB_CDD_REQUIRED CHR(43) #define RDB$K_DPB_SEGMENT_AREA CHR(44) #define RDB$K_DPB_SPAMS CHR(45) #define RDB$K_DPB_SPAM_THRESHOLD_1 CHR(46) #define RDB$K_DPB_SPAM_THRESHOLD_2 CHR(47) #define RDB$K_DPB_SPAM_THRESHOLD_3 CHR(48) #define RDB$K_DPB_SPAM_INTERVAL CHR(49) #define RDB$K_DPB_AIJ_ALLOCATION CHR(50) #define RDB$K_DPB_AIJ_EXTENT CHR(51) #define RDB$K_DPB_DBR_BUFFERS CHR(52) #define RDB$K_DPB_END_STORAGE_AREA CHR(53) #define RDB$K_DPB_MAX CHR(53) /* DPB 2 version specific */ #define RDB$K_FACILITY_ALL CHR(0) #define RDB$K_FACILITY_RDB_VMS CHR(1) #define RDB$K_FACILITY_RDB_ELN CHR(2) #define RDB$K_FACILITY_VIDA CHR(3) #define RDB$K_FACILITY_VIDA2 CHR(4) #define RDB$K_SECURE_VERSION1 CHR(1) /*version 1 of security buffer format*/ #define RDB$K_SECURE_FAC_UNKNOWN CHR(0) #define RDB$K_SECURE_FAC_VMS CHR(1) /* Rdb/VMS security information */ #define RDB$K_SECURE_FAC_ELN CHR(2) /* Rdb/ELN security information */ #define RDB$K_SECURE_FAC_REMOTE CHR(3) /* Rdb/Remote Database Interface */ #define RDB$K_SECURE_FAC_VIDA CHR(4) /* VIDA */ #define RDB$K_SECURE_FAC_VIDA2 CHR(5) #define RDB$K_DPB2_DBKEY_SCOPE CHR(1) #define RDB$K_DPB_ELN_NUM_BUFF CHR(1) /* Specific to Rdb/ELN */ #define RDB$K_DPB2_MIN CHR(1) #define RDB$K_DPB2_AIJ CHR(1) #define RDB$K_DPB2_ALLOCATION CHR(2) #define RDB$K_DPB2_PAGE_SIZE CHR(3) #define RDB$K_DPB2_NUM_BUFF CHR(4) #define RDB$K_DPB2_BUFFER_LENGTH CHR(5) #define RDB$K_DPB2_NUM_USERS CHR(6) #define RDB$K_DPB2_EXT_DB_MIN_NUM_PAGES CHR(7) #define RDB$K_DPB2_EXT_DB_MAX_NUM_PAGES CHR(8) #define RDB$K_DPB2_EXT_DB_PCT_GROWTH CHR(9) #define RDB$K_DPB2_SNP_ALLOCATION CHR(10) #define RDB$K_DPB2_SNP_FLAG CHR(11) #define RDB$K_DPB2_EXT_SNP_MIN_NUMPAGES CHR(12) #define RDB$K_DPB2_EXT_SNP_MAX_NUMPAGES CHR(13) #define RDB$K_DPB2_EXT_SNP_PCT_GROWTH CHR(14) #define RDB$K_DPB2_DB_EXTENT CHR(15) #define RDB$K_DPB2_CDD_PATHNAME CHR(16) #define RDB$K_DPB2_AIJ_ALLOCATION CHR(17) #define RDB$K_DPB2_AIJ_EXTENT CHR(18) #define RDB$K_DPB2_DBR_BUFFERS CHR(19) #define RDB$K_DPB2_SNP_ENABLED CHR(20) #define RDB$K_DPB2_SNP_DISABLED CHR(21) #define RDB$K_DPB2_SNP_EXTENT CHR(22) #define RDB$K_DPB2_SPAM_THRESHOLD_1 CHR(23) #define RDB$K_DPB2_SPAM_THRESHOLD_2 CHR(24) #define RDB$K_DPB2_SPAM_THRESHOLD_3 CHR(25) #define RDB$K_DPB2_AIJ_CONTINUOUS CHR(26) #define RDB$K_DPB2_AIJ_ONCE CHR(27) #define RDB$K_DPB2_AIJ_SPOOL_FILE CHR(28) #define RDB$K_DPB2_DESCRIPTION_SOURCE CHR(29) #define RDB$K_DPB2_CONVERT CHR(30) #define RDB$K_DPB2_SNAPSHOT CHR(31) #define RDB$K_DPB2_OPEN_MANUAL CHR(32) #define RDB$K_DPB2_OPEN_AUTOMATIC CHR(33) #define RDB$K_DPB2_DEFINE_STORAGE CHR(34) #define RDB$K_DPB2_CHANGE_STORAGE CHR(35) #define RDB$K_DPB2_STORAGE_NAME CHR(36) #define RDB$K_DPB2_FILESPEC CHR(37) #define RDB$K_DPB2_EXTENSIBLE CHR(38) #define RDB$K_DPB2_SNP_DEFERRED CHR(39) #define RDB$K_DPB2_NUM_NODES CHR(40) #define RDB$K_DPB2_FILE_TYPE CHR(41) #define RDB$K_DPB2_CDD_MAINTAINED CHR(42) #define RDB$K_DPB2_CDD_REQUIRED CHR(43) #define RDB$K_DPB2_SEGMENT_AREA CHR(44) #define RDB$K_DPB2_SPAMS CHR(45) #define RDB$K_DPB2_SPAM_INTERVAL CHR(46) #define RDB$K_DPB2_END_STORAGE_AREA CHR(47) #define RDB$K_DPB2_ALG CHR(48) #define RDB$K_DPB2_DELETE_STORAGE CHR(49) #define RDB$K_DPB2_LAYERED_ACCESS CHR(50) #define RDB$K_DPB2_REQUEST_SCOPE CHR(51) #define RDB$K_DPB2_READ_ONLY CHR(52) #define RDB$K_DPB2_PROTECTION CHR(53) #define RDB$K_DPB2_COLLATION_SEQUENCE CHR(54) #define RDB$K_DPB2_MAX CHR(54) #define RDB$K_DPB2_REQUEST_SCOPE_ATTACH CHR(0) #define RDB$K_DPB2_REQUEST_SCOPE_PROG CHR(1) #define RDB$K_DPB2_CLTN_MIN CHR(1) #define RDB$K_DPB2_CLTN_NAME CHR(1) #define RDB$K_DPB2_CLTN_DESCRIPTION CHR(2) #define RDB$K_DPB2_CLTN_SEQUENCE_TABLE CHR(3) #define RDB$K_DPB2_CLTN_MAX CHR(3) /* DBKEY_SCOPE Sub options */ #define RDB$K_DPB_DBKEY_SCOPE_TRANS CHR(0) #define RDB$K_DPB_DBKEY_SCOPE_ATTACH CHR(1) /* Deferred sub options */ #define RDB$K_DPB_SNP_DEFERRED_NO CHR(0) #define RDB$K_DPB_SNP_DEFERRED_YES CHR(1) /* CDD required suboptions */ #define RDB$K_DPB_EXT_DICT_IGNORED CHR(0) #define RDB$K_DPB_EXT_DICT_REQUIRED CHR(1) /* CDD update suboptions */ #define RDB$K_DPB_CLI_DICT_IGNORED CHR(0) #define RDB$K_DPB_CLI_DICT_MAINTAINED CHR(1) /* File types */ #define RDB$K_DPB_FT_PARTITIONED CHR(0) #define RDB$K_DPB_FT_CLUSTERED CHR(1) /* ALG suboptions */ #define RDB$K_DPB2_ALG_ENABLED CHR(0) #define RDB$K_DPB2_ALG_DISABLED CHR(1) /* Protection suboptions */ #define RDB$K_DPB_PROT_DEFAULT CHR(0) #define RDB$K_DPB_PROT_ANSI_COMPLIANT CHR(1) /* Other sub options */ #define RDB$M_DPB_SWP_PAGES CHR(1) #define RDB$M_DPB_SWP_RECORDS CHR(2) #define RDB$M_DPB_SWP_INDICES CHR(4) #define RDB$M_DPB_SWP_TRANSACTIONS CHR(8) #define RDB$K_DB_TYPE_ELAN CHR(2) /* Type Definitions Usable in the host program */ #define RDB$MSG_VECTOR_SIZE 20 typedef unsigned long RDB$MSG_VECTOR_TYPE[RDB$MSG_VECTOR_SIZE]; typedef unsigned long RDML$HANDLE_TYPE; /* Type Definitions and macro for handling messages */ typedef char RDML$MSG_BYTE; typedef char RDML$MSG_WORD[2]; typedef char RDML$MSG_LONG[4]; typedef char RDML$MSG_QUAD[8]; typedef char RDML$MSG_REAL[4]; typedef char RDML$MSG_GFLT[8]; typedef char RDML$MSG_TEXT; typedef char RDML$MSG_DATE[8]; #define RDML$CAST(data_type, message) (*((data_type*) &(message))) /* Global Constants that are externally defined */ globalref int RDB$_F_NO_CURRENCY; globalref int RDB$_F_STREAM_END; /* The undocumented macros used to declare varying string datatypes */ /* are no longer used by RDML. To continue to use them place a */ /* #define USE_OLD_RDML_MACROS in your source code before the */ /* database statements in your modules. These definitions will be */ /* removed from the next release of RDML. */ #ifdef USE_OLD_RDML_MACROS /* Define macro for declaring a Varying string datatype */ #define VARYING_STRING(maxsize)\ struct {\ unsigned short size; /* string size*/\ char string[(maxsize)]; /* string bytes */\ } #define VARYING_STRING_CONSTANT(name,str)\ VARYING_STRING(sizeof(str)-1) name = {sizeof(str)-1,str } #endif /* Define macro to convert C string (ASCIZ) to varying string */ /* Note that this macro will also copy the trailing '\0', so the */ /* .string portion of the resultant varying string is still ASCIZ. */ /* (cv and azptr are both assumed to be pointers) */ #define RDB$CSTRING_TO_VARYING(azptr,cv)\ {\ char *src, *start,\ *dst = (cv).string;\ for(src = start = (azptr); *dst++ = *src++;)\ ;\ (cv).size = --src - start;\ } /* Define macro to convert VARYING_STRING string to C string (ASCIZ) */ /* (cv and azptr are both assumed to be pointers) */ #define RDB$VARYING_TO_CSTRING(cv,azptr)\ {\ char *src = (cv).string,\ *dst = (azptr);\ unsigned int size;\ for (size = (cv).size ; size ; --size)\ *dst++ = *src++;\ *dst = '\0';\ } /* Define macro to copy text */ /* (dst and src are assumed to be the names of the char arrays) */ #define RDML$COPY_TEXT(dst, src)\ {\ char *pdst = (char *)(dst),\ *psrc = (char *)(src),\ *pcur, *pend;\ pcur = pdst;\ if (sizeof(dst) > sizeof(src)) /* determine a safe end point */\ pend = pdst + sizeof(src);\ else\ pend = pdst + sizeof(dst);\ while (pcur < pend) /* copy characters */\ *pcur++ = *psrc++;\ pend = pdst + sizeof(dst);\ while (pcur < pend) /* blank fill to right, if necessary */\ *pcur++ = ' ';\ } /* Define macros to deal with quadwords */ typedef struct /* Structure to represent a quadword */ { long q[2]; } RDML$QUADWORD_TYPE; /* Macro to copy one quadword to another */ /* (dst and src are assumed to be of datatype pointer to something) */ #define RDML$COPY_QUADWORD(dst, src)\ *((RDML$QUADWORD_TYPE *)(dst)) = *((RDML$QUADWORD_TYPE *)(src)) /* Macro to copy an int to a quadword */ /* (dst is assumed to be of datatype pointer to something) */ /* (src is assumed to be of datatype int) */ #define RDML$INT_TO_QUADWORD(dst, src)\ {\ RDML$QUADWORD_TYPE *tmp = (RDML$QUADWORD_TYPE *)(dst);\ tmp->q[0] = (src);\ tmp->q[1] = 0;\ } /* Old and new names for message vector and default transaction handle */ /* (To allow RDML modules to coexist with RDBPRE and SQLPRE modules) */ globalref RDB$MSG_VECTOR_TYPE RDB$MSG_VECTOR; /* old name */ globalref RDML$HANDLE_TYPE RDB$LU_TRHANDLE; /* old name */ extern RDB$MSG_VECTOR_TYPE RDB$MESSAGE_VECTOR; /* new name */ extern RDML$HANDLE_TYPE RDB$TRANSACTION_HANDLE; /* new name */ #ifdef __cplusplus extern "C" { /* define dsri call as extern */ extern RDB$CLOSE_SEGMENTED_STRING(...); extern RDB$COMMIT_TH_OE(...); extern RDB$COMPILE_REQUEST(...); extern RDB$CANCEL_SEGMENTED_STRING(...); extern RDB$CREATE_SEGMENTED_STRING(...); extern RDB$DETACH_DATABASE(...); extern RDB$GET_SEGMENT(...); extern RDB$OPEN_SEGMENTED_STRING(...); extern RDB$PUT_SEGMENT(...); extern RDB$PREPARE_TRANSACTION(...); extern RDB$RECEIVE(...); extern RDB$ROLLBACK_TH_OE(...); extern RDB$SEND(...); extern RDB$START_AND_SEND(...); extern RDB$START_REQUEST(...); extern RDB$START_TRANSACTION(...); extern RDB$UNWIND_REQUEST(...); /* define RDML run time call as extern */ extern RDML$VC_INITIALIZE2(...); extern RDML$SIGNAL_ERROR(...); extern RDML$SEGSTR_INIT(...); extern RDML$SEGSTR_COPY (...); extern RDML$SEGSTR_EOF(...); extern RDML$SEGSTR_ERROR(...); #else /* define dsri call as extern */ extern RDB$CLOSE_SEGMENTED_STRING(); extern RDB$COMMIT_TH_OE(); extern RDB$COMPILE_REQUEST(); extern RDB$CANCEL_SEGMENTED_STRING(); extern RDB$CREATE_SEGMENTED_STRING(); extern RDB$DETACH_DATABASE(); extern RDB$GET_SEGMENT(); extern RDB$OPEN_SEGMENTED_STRING(); extern RDB$PUT_SEGMENT(); extern RDB$PREPARE_TRANSACTION(); extern RDB$RECEIVE(); extern RDB$ROLLBACK_TH_OE(); extern RDB$SEND(); extern RDB$START_AND_SEND(); extern RDB$START_REQUEST(); extern RDB$START_TRANSACTION(); extern RDB$UNWIND_REQUEST(); /* define RDML run time call as extern */ extern RDML$VC_INITIALIZE2(); extern RDML$SIGNAL_ERROR(); extern RDML$SEGSTR_INIT(); extern RDML$SEGSTR_COPY (); extern RDML$SEGSTR_EOF(); extern RDML$SEGSTR_ERROR(); #endif #ifdef __cplusplus } #endif