Planet MVS Dave's unofficial HLASM web page Dave's HLASM FAQ |
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.
*-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)'
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..Martin Leist sent me an email on 1998-02-16 with this update:
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.
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.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.
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.
//SYSLIB DD DISP=SHR,DSN=SYS2.TRIMMAC.SYS1.MACLIB // DD DISP=SHR,DSN=SYS2.TRIMMAC.SYS1.MODGEN // DD DISP=SHR,DSN=SYS1.MACLIB // DD DISP=SHR,DSN=SYS1.MODGENUsually, you wouldn't run TRIMMAC against your whole SYS1.MACLIB and SYS1.MODGEN, just the macros you use the most. Since these libraries change with maintenance and Operating System levels, you may want to consider doing this:
Appended at 17:39:10 on 96/10/30 GMT (by IL68778 at ELINK) Subject: HLASM performance and 31-bit work areas (Suggestions) Ref: Append at 22:32:58 on 96/10/29 GMT (by PYCIOR at STLVM27) I did some testing with the latest version of SHOWMVS, which is about 12,000 lines long and uses 166 different macros. The chart below shows timing values from six different runs using three different SIZE values: o 4M i.e. SIZE(4M) o 9M i.e. SIZE(MAX) o 32M i.e. SIZE(MAX,ABOVE) and two different macro libraries: o FULL is the standard MACLIB+MODGEN concatenation o TRIMMAC is a reduced-size library in which the 166 macros required for this test have been copied and trimmed of the PL/S code and other comment lines PROCSTEP SIZE MACLIB EXCP CONN TCB SRB CLOCK SERV ASM4F 4M Full 6016 10090 .18 .00 .6 429K ASM9F 9M Full 3554 6216 .17 .00 .4 410K ASM4T 4M Trimmac 3813 6290 .18 .00 .5 407K ASMAF 32M Full 1480 2985 .16 .00 .3 385K ASM9T 9M Trimmac 1044 1915 .17 .00 .2 383K ASMAT 32M Trimmac 706 1394 .17 .00 .2 380K Notes: o HLASM 1.2 is used for this test o all tests run with REGION=32M o SYSLIN and SYSPRINT are DD DUMMY o Running with SIZE(32M) instead of SIZE(4M) saves about 75% of the EXCP and connect time (ASM4F vs ASMAF) o Using TRIMMAC instead of the Full MACLIB saves another 50% (ASMAF vs ASMAT) o SYSUT1 was allocated to real DASD because the VIO MAXSIZE value (set to 5 megs) does not allow for a large enough allocation. o CPU time is fairly constant o variations in elapsed time (CLOCK) depend on overall system load and are not significant HLASM gives statistics at the end of the SYSPRINT report which indicate the minimum SIZE required for an in-core assembly in which SYSUT1 is not used. Programmers who run assemblies on I/O-constrained systems (particularly on a P/390) should pay attention to the options they use. I also noticed in the IEF374I messages that if I run with SIZE(4M), HLASM allocates storage ABOVE; if I run SIZE(MAX), then it allocates storage BELOW ! As far as performance is concerned, BELOW or ABOVE don't make much difference. I was not expecting it, that's all. BTW, I used the TRIMMAC utility from file 183 of the CBT tape to automatically create the TRIMMAC library for this test. Gilbert Saint-flour Automated Migration Services |
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 |
dc c'&system_id' + dc c'z/OS 01.04.00'
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". |
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.)This entry was created from a post on the Assembler list by John Ehrman (FotHLASM) on 2004-10-07
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.
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. |