HLASM and Language Environment Callable Services
LEzVSE 0600025UDN Visits (6627)
For this entry I thought I would discuss the use of the vast array of language environment callable services within LE-enabled HLASM routines.
Even though the manuals often only show examples of how to use these callable services with COBOL, C, or PL/1 - so long as the linkage and parameter configurations are honoured - these callable services can also be used by LE-enabled assembler routines.
Just as required with use of a callable service by a High Level Language (HLL) program, an LE-enabled assembler routine can setup the services parameters and then call the applicable service routine as described in the LE Programming Reference Guide.
This means all of the date/time, condition handling, memory management and messaging services can all be utilised within an LE-enabled assembler routine. The reason the services are restricted to LE-enabled assembler is that they require a language environment to be present to support the functions and services they use internally.
So what is an LE-enabled assembler routine? Simply put it is an HLASM routine that uses the provided LE macros to establish an environment, restricts use of general purpose registers 12 and 13 (for CAA and DSA addressability), sets up a dynamic storage area on the stack and identifies itself in an LE-conforming manner via the PPA macro. Each of the HLL compilers include a language-specific version of a PPA so any assembler routine needs to include one as well.
So by using the CEEE
By making your HLASM routines LE-enabled you then expand the capabilities of your HLL programs by now enabling your HLASM routines to be exploited and utilised from within a language environment HLL program.