RDBPRE is a preprocessor for BASIC, COBOL, and FORTRAN programs
that contain embedded RDO data manipulation statements. Each RDO
statement is flagged by the special &RDB& flag.
Because the RDBPRE preprocessor submits your source program to
the appropriate host language compiler and creates an object
file, you should never submit the output from the RDBPRE
preprocessor to a host language compiler.
When you create the source BASIC, COBOL, or FORTRAN program
files, use the RDBPRE preprocessor default input file types.
See the subtopic "Default_file_types" for a table that shows the
RDBPRE default input file types and the output file types.
1 – Default file types
RDBPRE Preprocessor
Default Input Output List
Language File Type Source File Type File Type
-------- ------------- ---------------- ---------
BASIC .RBA .BAS .LIS and
.RDBERR.LOG
COBOL .RCO .COB .LIS and
.RDBERR.LOG
FORTRAN .RFO .FOR .LIS and
.RDBERR.LOG
The .LIS file is generated by the host language compiler, not by
the RDBPRE preprocessor.
2 – Precompiling
Before you invoke the RDBPRE preprocessor, define the following
symbol:
$ RDBPRE :== $RDBPRE
Invoke the preprocessor and specify a file name and the language.
The following example shows how to preprocess the file COB_
SAMPLE.RCO:
$ RDBPRE
INPUT FILE> COB_SAMPLE.RCO/COB
You can use RDBPRE and host language compile qualifiers when you
precompile a program.
2.1 /DISTRIBUTED_TRANSACTIONS
Starts distributed transactions for those transactions that
involve more than one attachment to a database. This qualifier
starts the distributed transactions by calling DECdtm system
services implicitly.
2.2 /[NO]INITIALIZE_HANDLES
Instructs RDBPRE to generate code that automatically initializes
the declared database and request handles generated by RDBPRE.
This qualifier has no effect on whether or when handles are
cleared in the generated code. It only controls initialization
of handles in declarations. The /INITIALIZE_HANDLES qualifier is
the default.
The /NOINITIALIZE_HANDLES qualifier lets the shareable image
and the program that calls it access the database. When you use
the /NOINITIALIZE_HANDLES qualifier, any handle you specify in
your application program must also be specified in the shareable
image.
2.3 /MESSAGE_MAP
This qualifier is for BASIC programs only. The /MESSAGE_MAP
qualifier causes the precompiler to generate MAP (RDB$module-
name_MAP) declarations instead of DECLARE declarations. If the
application will be linked SHAREABLE, the PSECTS that the MAP
declarations create will have to be made non-shareable before
using this qualifier.
3 – Linking
You link the object files for RDBPRE RDO programs just as you
would link any program object file. Invoke the OpenVMS Linker
and specify one or more object file specifications and any link
switches you want to use. The following example shows how to link
all the modules of the program COB_SAMPLE.RCO:
$ LINK COB_SAMPLE, COB_CALL_OTHER, COB_CALLABLE_ERROR_HANDLER
4 – Query governor
Using the Oracle Rdb query governor feature, you can specify the
following for RDBPRE queries:
o The maximum elapsed time that the query optimizer can spend
compiling a query
o The maximum number of rows delivered during query processing
There is no RDBPRE interface for the query governor feature, but
this feature can be enabled for RDBPRE queries by defining the
RDMS$BIND_QC_REC_LIMIT and RDMS$BIND_QC_TIMEOUT logical names.
See the top-level topic "Logical_Names" in the RDO interface help
utility for information on how to define and set values for the
RDMS$BIND_QC_REC_LIMIT and RDMS$BIND_QC_TIMEOUT logical names.