Freeware: Assembler - TINA
MacroFever!
Program TINALIBX (part of the TINA
package) is a HLASM Library exit. It allows you to obtain copy members
and macros from:
If TINALIBX doesn't find a //HFSLIB DD concatenation which has
paths or a TINAMAC load module, we tell the HLASM not
to consider calling us when looking for members.
Frequently Asked Questions:
Q. How do I tell the HLASM to use this library exit?
A. Add: "EXIT(LIBEXIT(TINALIBX))' to your HLASM parameter.
For example, add this to the IBM HLASM proc:
PARM.C='EXIT(LIBEXIT(TINALIBX))'
Q. I specified the Library exit parm and got this message:
ASMA932U Unable to load specified EXIT module - TINALIBX
A. You need to put the TINALIBX load module in the normal
module search order. The STEPLIB is a good place, see the sample
JCL below.
Q. I'm running this for the first time and it doesn't do the things
I expect it to. Is there a way to find out what's happenning
under the covers?
A. Run with the debugging option to see all messages:
PARM.C='EXIT(LIBEXIT(TINALIBX(D)))'
and add: //C.TINAMOUT DD SYSOUT=*
Q. How do I tell this program where my macros reside in the HFS?
A. Use the //HFSLIB dd statement. Concatenation of HFS paths are
supported.
Q. How do I get the TINAMAC load module into the LPA without an IPL?
A. Use the IBM command: SETPROG LPA,ADD,MODNAME=TINAMAC,DSNAME=dsn
Q. Do
you have a benchmark that compares using TINALIBX
reading macros from the LPA versus from the actual SYS1.MACLIB
and SYS1.MODGEN datasets.
A. Yes, I took a batch job that assembled SHOWMVS v703 (19,000+
lines) using OS/390 R10 maclibs and system. I ran the assembly
the first time and got the name of every macro that came from
SYS1.MACLIB and SYS1.MODGEN. I then fed all of these macros into
Gilbert's TRIMMAC program to create the trimmed maclib. The next
benchmark was assembling SHOWMVS with this trimmed library.
instead of SYS1.MACLIB and SYS1.MODGEN.
I followed that with assembling SHOWMVS with the TINALIBX
HLASM library exit which obtained these trimmed macros from
the LPA and then another benchmark when it obtained the macros from
the load module loaded into private storage.
Here are the results:
Benchmark | EXCP | Conn | TCB | SRB | Clock | Serv |
VANILLA | 6857 | 10879 | .26 | .00 | 1.1 | 1107K |
TRIMMAC | 3350 | 4890 | .24 | .00 | .7 | 995K |
LPA | 2479 | 2780 | .24 | .00 | .4 | 989K |
PVT | 3445 | 4625 | .24 | .00 | .3 | 1042K |
Guide to results:
- Benchmark VANILLA used the actual SYS1.MACLIB & SYS1.MODGEN
datasets to assemble SHOWMVS
- Benchmark TRIMMAC used the trimmed down version of the macros
from SYS1.MACLIB and SYS1.MODGEN which were processed by Gilbert
Saint-flour's TRIMMAC program from file 183 of the CBT tape) to
trim out the comment lines.
- Benchmark LPA is using this program, TINALIBX, to get the
trimmed macros from the TINAMAC load module which resided in the
LPA.
- Benchmark PVT is using this program, TINALIBX, to get the
trimmed macros from the TINAMAC load module which resided in the
private area (loaded from //STEPLIB).
The largest gain is just using TRIMMAC (half the EXCPs!).
If you do nothing else, use TRIMMAC. If you want even faster
assemblies, consider using this program.
|
Sample JCL:
//TESTPGM EXEC HLASMC,
// PARM.C='EXIT(LIBEXIT(TINALIBX))' <- Tell HLASM to use us
//C.SYSLIB DD
// DD DISP=SHR,DSN=SYS1.MODGEN
//C.SYSIN DD *
testpgm CSECT ,
longmacro1 ,
copy longcopymember1 ,
end ,
//C.STEPLIB DD DISP=SHR,DSN=load.library.with.TINALIBX <- Specify
//C.HFSLIB DD PATH='/u/ibmuser/macros' <- Specify
// DD PATH='/u/ibmuser/killerapp/macros/' <- Specify
HLASM is a registered trademark of IBM.
This software is provided on an asis basis and no warranty is
provided. Use at your own risk
Return to Dave's MVS Freeware web page.
Last Updated: 2003-12-12
This web page is © 1997-2003+ by
David Alcock.
All Rights Reserved.