On Sat, Jul 13, 2024 at 2:50 PM John Levine <johnl@taugh.com> wrote:
The more relevant question is how they used the macros. If the macros
were used consistently for semantically higher level things, the
translator can use the semantics of the macros when translating.

There is an assembly macro for each of the user-mode VMS system services   These are wrappers around the RTL subroutines.  So, for example, the $QIO (queue I/O) macro is a wrapper around a call to the SYS$QIO runtime library routine.  There is a similar set of macros for the RMS (record management services--the VMS file I/O system) data structures and routines.

The VAX MACRO compiler could perhaps use the semantics of the macros when translating, but it doesn't.  It has to support semantics-free macro expansion since users can write their own macros, so there is little point in building semantic knowledge into the translator.

-Paul W.