RDOHELP72.HLB  —  Preprocessors  Callable RDO
    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.
Close Help