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.