Dave's HLASM FAQ

New releases of the HLASM may override information given here:
When was the HLASM born?


June 26, 1992


Where can I find the HLASM manuals?


The latest manuals can be found at IBM's HLASM library page


How do I specify the HLASM in SMP/E?


When setting up your CSI, specify the following SMP/E control cards:
SET BDY(GLOBAL).
UCLIN.
ADD      OPTIONS(name)
         ASM(ASMA90)
         ...other options here...
ADD      UTILITY(ASMA90)
         NAME(ASMA90)
         PARM(NOOBJECT,DECK)
         PRINT(SYSPRINT)
         RC(4).
ENDUCLIN.
How do I get an assembly date in the ISO date format?


The HLASM added the &SYSDATC (yyyymmdd) system variable which generates a 4 digit year as opposed to the older &SYSDATE (mm/dd/yy) variable. I add the following lines to generate a ISO Date Format variable which is easier to read than the IBM-supplied &SYSDATC format:
*-Convert assembly date from SYSDATC format "YYYYMMDD" to "YYYY-MM-DD"
         LCLC  &ASMDATE
&ASMDATE SETC  '&SYSDATC'(1,4).'-'.'&SYSDATC'(5,2).'-'.'&SYSDATC'(7,2)
Here's an example of how to use these dates later in the program:
ASMINFO  DC    'This program was assembled on &SYSDATC (IBM)'
         DC    'which is &ASMDATE (ISO date format)'
Can I debug authorized programs using the HLASM Toolkit IDF, Interactive Debugging Facility?


Not out of the box.

Martin Leist posted the following entry on the bit.listserv.asm370 newsgroup on 1996-08-01:
IBM's High Level Assembler Toolkit provides an Interactive Debug Facility (IDF) as one of its components. While it is documented as only being supported in a non-authorised environment, in practice it works in authorised environments as well except..

I have been successfully using IDF to debug authorised programs by re-linking IDF (as ASMIDFA) with AC(1) into an APF library. Both ASMIDFA and the target program have been placed in IKJTSO00 as both AUTHPGM and AUTHCMD (just to make sure).

All went well with authorised progs until I came to the first program to use cross-memory (AR mode). The SSAR to set the secondary ASID works fine, but all subsequent instructions fail as, I assume, the SVC97 cannot be used in AR mode, - ABEND 0F8 Reason Code 16 on any instruction after the SSAR. Tried using NOSVC97 as an option, but now the MODESET MODE=SUP,KEY=ZERO "fails". I get no error, but the PSW is still key(8), problem state after the SVC 107.
Martin Leist sent me an email on 1998-02-16 with this update:
I got a private reply from the great John Erhman [the father of the HLASM -Dave], saying that it was used internally on some authorized functions and they were unable to find the source of the problems after a quick look, but that they might look further "if they had time" but pointed out I was using it for unsupported functions. I guess they havent found time yet as I never did hear any more.

I still occasionally use the IDF authorized on our test partition and have found no other problems as long as I steer clear of full cross-memory mode - not something I do often anyway. I don't get much chance to use my assembler skills these days but still enjoy it when I can.
As seen in Martin's post on where he uses the IDF authorized, I would only recommend doing this workaround on your test machine and not to your production HLASM Toolkit load library.

Ed Jaffe posted this on IDF and Authorized Programs


How can I speed up the HLASM?


HLASM release 5 helps by avoiding the SYSUT1 work file and does all it's processing in memory. Here's what we can do additionally:

The fastest I/O is the I/O you don't do. With that in mind:
How does the HLASM support the RSECT?


HLASM checks RSECTs for reentrancy violations, as though the RENT option had been specified on a CSECT basis.

Because Program Objects are capable of creating multiple independently relocatable segments, the idea of RSECT was to provide an attribute that might some day be used by the Binder and Program Loader to create read-only segments. Other attributes on the HLASM CATTR statement are not supported by the binder; they are intended for potential future use.

This entry was taken from a post by John R. Ehrman (Father of the HLASM) on the Assembler mailing list dated Tue, 10 Jul 2001 10:20:05 PDT.


What is the format of the &SYSTEM_ID system variable?


Apparently at HLASM release 3 and above, the HLASM gets the operating system name and version from the MVS ECVT control block:

Operating
System
HLASM
Release
Value
OS/390 R5 R2 MVS/ESA SP 6.0.5
OS/390 R7 R3 OS/390 02.07.00
z/OS 1.4 R4 z/OS 01.04.00
z/OS 1.6 R5 z/OS 01.06.00


Here's an example of using it:
   dc c'&system_id'
+  dc c'z/OS 01.04.00'


Can you explain the HLASM V1R1 button? New [2006-01-01]


John R. Ehrman (Father of the HLASM) posted on the Assembler mailing list dated Wed, 29 Jun 2005 11:33:04 -0700

Those "elephant" buttons were introduced at the time of HLASM V1R1 in 1992. There were enough for about 2 SHAREs. The button you have is from the second of two slides: the first slide showed a very tired elephant and bored jockey fumbling with and dropping logs, with the elephant labeled "Old Assemblers".


Are there other non-IBM HLASM web sites? New [2006-01-01]


  • A.F. Kornelis' High Level Assembler web site. Others on the hlasm.com team are Martin Truebner, Ray Mullins, René Brandt, Walter Marguccio and others.

  • The SYSPROG.NET HLASM pages.

  • Yahoo Groups: HLASM HLL High Level Assembler

  • The CBT Tape has a lot of mainframe assembler code.

  • If you are currently without access to a mainframe,there are a few freeware emulators that will allow you do do assembler programming:



How do I invoke the HLASM from the Unix Shell? New [2006-01-01]


I received the following from one of the developers of c89:
The existing c89 utility supports the assembler, has for a long time. Being c89, the link-edit is C oriented. So you have to get c89 to behave. The two main offenders are -e and -u options. (The SYSLIBs are generally OK, because the user's go in front anyway.)

For -e (entry point), specify -e// to bypass the creation of an ENTRY card, or -e//name for your own name.

For -u (unresolved), you have to come up with a harmless name to give it. So typically the easiest is your own CSECT name (especially easy if that's your file name) since then no autocall happens as a result. An alternative is to create a DUMMY part so they can all do -u//dummy .

That all said, if you just want assemble, use the -c option, and do the link-edit however you like.
This entry was created from a post on the Assembler list by John Ehrman (FotHLASM) on 2004-10-07






Dave's unofficial HLASM web page is not affiliated with IBM.
High Level Assembler and HLASM are registered trademarks of IBM.
If you find this page useful, you may also want to check out IBM's HLASM web site

BC 15,Dave's HLASM web page.

Dave's HLASM FAQ web page IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.



Last Updated: 2006-01-01
This web page is © 1997-2006+ by David Alcock. All Rights Reserved.