Callable RDO is a program interface that you must use when Oracle Rdb does not support a preprocessor for your program language. You can also use this interface when you want to perform Rdb data definition tasks or dynamic data manipulation tasks in BASIC, C, COBOL, FORTRAN, or Pascal programs. When you use the Callable RDO program interface, your program communictes with Oracle Rdb using a callable function, RDB$INTERPRET. Unlike preprocessor interfaces, the Callable RDO interface performs in an interpretive manner. The Rdb statements you use in your pgoram are string literals. When the program executes, the statements are passed to Oracle Rdb in the calls to RDB$INTERPRET. The interactive Rdb interface, RDO, then interprets and executes them. You call the RDB$INTERPRET function as you would call a VMS Run-Time Library routine. In the calling sequence, you pass both Rdb statements and host language variables that cuase values from teh database to be retrieved or updated. The call to RDB$INTERPRET returns a status value that indicates the success or failure of the statements. If the call was successful, RDB$INTERPRET also returns retrieved database values to the appropriate program variables. For more information, refer to the Guide to Using RDO, RDBPRE, and RDML.
1 – Restriction
If the program that uses Callable RDO (RDB$INTERPRET) is linked implicitly with SYS$SHARE:RDBINTSHR (that is, allows the OpenVMS Linker utility (LINKER) to resolve the reference using SYS$LIBRARY:IMAGELIB.OLB) then the message vector and transaction handle values are not returned to the caller. However, if the program is linked explicitly with SYS$SHARE:RDBINTSHR as the following example shows, then message vector and transaction handle values are returned. In this case, there must be two PSECTs declared and named RDB$TRANSACTION_HANDLE (8 bytes long) and RDB$MESSAGE_VECTOR (20 longwords, that is, 80 bytes long) in the caller's program. $ LINK PROGRAM,SYS$INPUT/OPT SYS$SHARE:RDBINTSHR.EXE/SHARE PSECT_ATTR=RDB$MESSAGE_VECTOR,SHR PSECT_ATTR=RDB$TRANSACTION_HANDLE,SHR However the explicit linking against the shareable image SYS$SHARE:RDBINTSHR is not upward compatible and the application will need to be relinked for each new version of Oracle Rdb released. There is no workaround for this problem.