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.