On Wed, 20 Feb 91 00:35:00 EST Ken Hornstein (814) 862-7007 said:
Quote:
>Hi. I've written some code that I'm sending to other sites, but I'm running
>into a problem with my use of the HNDEXT macro. What I'm currently doing is
>this:
> HNDEXT SET,(R4)
>Which works fine on our ESA system, XA systems, and some other CMS systems.
>But other sites generate a P-list which looks like this:
> DC CL8'TRAP'
> DC A((R4))
You have encountered the thorny problem of incompatibility between systems.
The valid format of the HNDEXT macro in CMS 5 and earlier releases (I can't
speak for CMS 6) is much more restrictive, as it provides only
HNDEXT SET,address
or HNDEXT CLR
and <address> must be a reference to storage. (Note that it could be an
external reference.) There is no provision for register specification of the
address, list and execute forms, or any of the other goodies provided in CMS
5.6.
Assuming that the address in R4 is dynamically obtained, you are caught between
a rock and a hard place. You have to resort to what is known as "dual
pathing". This can be done either at the source or execution level. If at
the source level, you will want to insert conditional assembly statements
which will cause the selection of the appropriate statements based on the
level of CMS. If at the execution level, you can determine under which level
of CMS the program is running (see the CMSLEVEL macro - the value is stored at
CMSPROG in NUCON) and execute one of two paths accordingly. Of course, either
choice requires access to the documentation and the ability to test on all the
systems for which you want to provide support ;-(.
- Lawrence