Installing the IFOX00 Assembler (from MVS) Under MVT
Responding to some prompting from Chris Cheney (who has been extremely diligent in pointing out my grammatical errors and has made some very helpful suggestions for new material -- Thanks, Chris!), I recently performed a complete re-edit of my pages relating to the language compilers. As a result of that communication with Chris, I decided it would be useful to provide a means to install the assembler that installs with MVS 3.8j for use under MVT -- this because he quoted a paragraph from Jay Maynard's site indicating that the assembler installed with MVT is not sufficient to assemble HASP. Now, the strange thing is that once I started thinking about this task, it began to seem awfully familiar. After digging through some archives from the back of my storage closet on ZIP cartridges, I found what I was remembering. On a very early version of my Hercules site, back when MVS 3.8j was only beginning to look like it might become a reality for us, I had an IFOX00 installation page for the MVT users in the Hercules' community. So, here is a revamped version of that page, in the same format as the other compiler installation archives on my site.
The benefits of using the assembler distributed with MVS 3.8j (IFOX00) over the one distributed with MVT (IEUASM) include faster assembly, additional symbolic variables, and more efficient coding. I have had some assembler source programs that simply wouldn't assemble under IEUASM that comes through with zero statements flagged under IFOX00, and judging from the Jay Maynard's comments regarding HASP installation, I am not alone in this.
Technically, both of these assemblers are considered to be Assembler F, but there needs to be some method of distinguishing between them. So, I am going to use the designations others have already used and call the MVT assembler (IEUASM) Assembler F and the MVS assembler (IFOX00) Assembler XF.
The archive asmxf.tgz [MD5: F4C0AADD038D6057189B669D9F5FC4ED] contains:
The first dataset on the tape was created with IEBCOPY on an MVS 3.8j system. You will need to have already installed VSCOPY on your MVT system to reload this dataset. If you haven't already installed VSCOPY, you can download it from my site and install it using the instructions found here: vscopy.
The link edit steps use SYS2.LINKLIB as the target for the sixteen assembler load modules, so if you have not defined a SYS2.LINKLIB, you will need to modify the jobstream to match your system. Since the names of the load modules comprising IFOX00 do not conflict with those of IEUASM, SYS1.LINKLIB could be used as a target for the installation. Under MVS 3.8j, there are two aliases for IFOX00 - IEUASM and ASMBLR - but I have removed those from the link edit control statements so that both IEUASM and IFOX00 can co-exist under MVT without conflict.
The last dataset on the tape contains an IEBUPDTE input stream to add the procedure library members used to invoke the compiler, and they will be restored into SYS2.PROCLIB. As with the load module aliases, I have modified the names of the procedures to allow them to co-exist with the Assembler F procedures installed along with MVT. I have substituted ASMX for the ASMF prefix in each of the procedure names.
If you wish to change the target dataset for the load modules or PROCedure members, search the installation jobstream for the keyword TARGET.
To complete the installation:
Paul Gorlinsky has utilized PTF object decks and disassembled load modules for the MVS 3.8j version of Assembler XF to update the source distributed with MVS 3.8j so that there is a complete set of matching source from which the assembler may be built. Although there is nothing wrong with installing the load modules in the archive described above, this provides the means of installing from source code. You can read Paul's release notes in ifox00.memo.pdf.
To install from the source, download the archive: ifox.tgz (note: this is an 11.4 megabyte file) [MD5: DDD13C5FEAA83FE951F989D8EB35CB39]. The archive contains a copy of Paul's tape (iifoxdist.het) and a jobstream (ifox$.jcl). The only modification from Paul's original tape is that I converted it to a compressed HET image from the original AWS image; even though only two datasets are required from the tape, the additional datasets might be of interest for some. The jobstream loads the assembler source and macro datasets (files #6 and #7 on the tape) to temporary PDS datasets, assembles all of the source members to a temporary PDS dataset, and link-edits the assembler load modules to SYS1.LINKLIB. If you want to change the target library, modify the target library DD statement in the final step of the jobstream.
Because of a report I received from someone who had difficulty in loading the source/macro libraries from the tape image in the above archive, I have created an alternate jobstream with the IEBUPDTE input for the two libraries included instream. The jobstream - ifox$.jcl - has the same name and functions identically to the jobstream in the archive above, except that it does not require the tape image. This alternate jobstream is available in the archive: ifoxjcl.tgz [MD5: FE4320E6DE3250D30878D08627E8C680]. An added benefit is that this archive is much smaller than the one above.
Revised Assemble/Link Procedures
It was suggested to me that a means of making a system on which both assemblers has been installed more user friendly would be a modified set of procedures that could be used with either assembler simply by including a parameter to designate which assembler should be executed. To that end, utilizing the standard procedures installed under MVT and MVS, I have created the following set of procedures:
Parameter variables which have the same function across procedures are named identically. The first character of each variable alludes to the step in which it is used: A - assemble, L - link, G - execute. The parameter variables, with their default values, are:
A jobstream to place these procedures in your Procedure Library may be downloaded from my site at asmprocs.tgz [MD5: 01EF37B245FB8D7D74E5DD58D70A57A2]. The single jobstream contained in the archive - IEBUPDTE.JCL - will install the four procedures (ASMC, ASMCG, ASMCL, ASMCLG) into SYS2.PROCLIB. If you do not use a SYS2.PROCLIB in your system, the JCL may be modified to use SYS1.PROCLIB as the target library as the procedure names shouldn't conflict with any existing system procedures.
Prior to submitting the jobstream that installs the procedures, customize the default values of the variables to provide the values you will most often prefer. For example, if you will most frequently want to execute Assembler XF, change the value of APGM from IEUASM to IFOX00. Other variables you might want to modify are those providing options to the assembler and linkage editor.
The two assemblers have some differences when recognizing options. The following table, provided by Chris Cheney, summarizes them:
All of the IEUASM options, with the exception of DOS/OS, are accepted by IFOX00. For example: IFOX00 will accept ALGN or ALIGN.
Alternate IFOX00 Installation Verification Program
The installation archive for Assembler XF (above) includes a "Hello World" program as a test program for the assembler. The MVS 3.8j distribution includes an installation verification program for Assembler XF. A jobstream that utilizes the revised procedures (above) to assemble and execute this program is available in the archive asmxfivp.tgz [MD5: 864DE1D82C6F0E365C800938107AECF3].
If I can answer any questions about this or any other page on my site or if you find errors in these instructions, please don't hesitate to send them to me:
This page was last modified on November 15, 2010.