Running Version 2 Applications
6.2 Recompiling and Relinking
6.2.1RTR Version 2 Applications Running on RTR Version 3
•Linking Version 2 applications
Existing RTR Version 2 applications will run if they have been linked against RTRSHR. (RTRSHR has been superseded by LIBRTR.EXE. Existing RTR Version 2 application executables will run without relinking since RTR$STARTUP.COM defines RTRSHR as a logical name that points to LIBRTR.EXE.)
However, as RTRSHR.EXE is no longer distributed, change the linker options file referencing RTRSHR (that is, change SYS$SHARE:RTRSHR/SHARE to SYS$SHARE:LIBRTR/SHARE). After making this change, you can remove SYS$SHARE:RTRSHR.EXE from your system.
If you are linking on a system where RTR Version 2 was never installed, always use SYS$SHARE:LIBRTR/SHARE.
•Event status
With RTR Version 2, an application could pass event status as a parameter when calling $ENQ with the RTR$M_BROADCAST flag set. This broadcast $ENQ was delivered with the event status stored in the RTR$L_EVT_ STATUS field of the RTR$_EVT data structure, and passed as a parameter to the broadcast AST.
When running RTR Version 2 applications on RTR Version 3, event status is not passed from sender to receiver. All User events received by an RTR Version 2 application have the event status parameter set to 0 as shown in the following table:
If the sender is: | Then: |
|
|
A Version 2 application | RTR Version 3 does not pass event status. |
A Version 3 application | There is no event status. |
|
|
•Channel number
In some cases, RTR Version 2 returned the error status RTR$_INVALCH if an operation was attempted using an invalid channel number (for example, 0), and RTR$_CHNOTALLOC for potentially valid channel numbers that have not been declared. RTR Version 3 always returns RTR$_CHNOTALLOC.
•RTR STOP/ABORT
If an RTR STOP RTR/ABORT command is issued with RTR Version 2, RTR executes an AST in the context of any applications that have an RTR channel open. The applications exit with the status RTR$_RTRWASSTO.
In RTR Version 3, there is no difference in behaviour between the commands STOP RTR and STOP RTR/ABORT. If either of these commands is entered, RTR is always stopped. Any application with an RTR channel open receives an error status on any RTR operation in progress on that channel, but
the application is not terminated. The application must handle the error correctly. (The error status returned in this case is RTR$_NOACP, the same status that is returned if the RTR ACP fails for any reason.)
Running Version 2 Applications