Chapter Contents

Previous

Next
SAS/C Software: Changes and Enhancements, Release 6.50


Assembly Language Implementation

The program invocation exit is invoked using standard IBM linkage conventions. Any registers used by the routine should be saved (the standard save area addressed by register 13 can be used for this) and restored on exit. You should write the exit so that it can be entered in AMODE 31; however, it always starts in the same addressing mode as the remote debugger's first load module.

When the program invocation exit receives control, register 1 points to the following parameter block.

Offset Description
0 Address of null-terminated string for the _DB_COMM environment variable value. This value indicates the debugger communications access method and will be "APPC", "TCPIP", or the "TCPIP_xxx" variant.
4 Address of null-terminated string for the _DB_HOST (TCP/IP) or _DB_LU (APPC) environment variable value.
8 Address of null-terminated string for the _DB_PORT (TCP/IP) or _DB_TP (APPC) environment variable value.
12 Address of area mapped by C struct RDBG_RUNOPTS or assembler RDBGOPTS DSECT.
16 Address of the value from CRABUSR1 (CRAB user word1).
20 Address of the value from CRABUSR2 (CRAB user word2).
24 Address of the value from CRABUSR3 (CRAB user word3).
28 Address of the value from CRABTUSR (CRAB user word4).

 

Offset 12 addresses the area mapped by the RDBGOPTS DSECT shown in RDBGOPTS DSECT Mapping . This DSECT is created from the runtime options specified when  SASCDBG is invoked, and provides access to the name of the program to be debugged, its runtime arguments, and the program invocation method (  fork,  oeattach,  ATTACH, manual).

RDBGOPTS DSECT Mapping

         SPACE 3
RDBGOPTS DSECT
RDBBPNAM DS    A        Address of program name to be invoked
RDBGARGS DS    A        Address of runtime arguments passed to program
*
         DS    XL2      --Reserved
RDBGOPTF DS    XL1      Option flag
RDBGSUPD EQU   X'01'    Suppress automatic =D runtime arg insertion
RDBGDBTN EQU   X'02'    Intercept OpenEdition Terminal I/O
*
RDBGINVM DS    XL1      Request invocation method for program
RDBGMANU EQU   X'00'    Manual invocation
RDBGFORK EQU   X'01     Via OpenEdition fork and exec services
RDBGOEAT EQU   X'02'    Via OpenEdition/TSO OEATTACH service
RDBGATTA EQU   X'03'    Via MVS ATTACH
*
         DS    0D
RDBGOLEN EQU   *-RDBGOPTS Length of DSECT

Offsets 16, 20, 24, and 28 address CRAB user words one through four, respectively. The CRAB user words are the remote debugger's CRAB, since the program being debugged has not yet received control. You can modify the CRAB user words by replacing the values in the parameter block. When the program invocation exit returns, the new values will be copied into the debugger's CRAB.

You can also modify other information in the RDBGOPTS DSECT to affect later debugger invocation processing. 

The program invocation exit must return one of the values described in section Return Codes . These return codes are used by exit routines written in both assembly language and C.


Chapter Contents

Previous

Next

Top of Page

Copyright © Mon Mar 9 09:11:22 EST 1998 by SAS Institute Inc., Cary, NC, USA. All rights reserved.