After you have generated an MVS 3.8j system, you may at times find that there are modifications you would like to make to the components of the Operating System. There are some changes for MVS 3.8j that people have made in the distant past; you can find these on the Internet, for example at the CBT Tape Site. Remember that this version of MVS, the predecessor of OS/390 and z/OS, is very old, so any changes you find for MVS, OS/390, and Z/OS will have to be examined closely to ensure that they will apply to this older Operating System without breaking something. There are also a few people who are interested in keeping this old system running and improving it, so at times users in that community will make useful enhancements to MVS 3.8j as well, so there will occasionally be a new update that shows up.
Changes to MVS (and its successors) are referred to as Usermods (User modifications) and are applied using the same System Modification Program that was used to build the distribution libraries and apply modifications during System Generation. You will be familiar with this process if you have used my instructions (Installing MVS 3.8j) to build an MVS 3.8j system from the IBM distribution tapes. The reason that all changes are expected to be applied using SMP, is that it maintains a history of all changes applied to the Operating System to ensure that any new change being applied will not break changes applied previously. The history that SMP retains for the Operating System begins when the Stage 2 jobstream (jobs SYSGEN1 through SYSGEN6) are examined and loaded into the SMP datasets.
If you decide to rebuild your system from the distribution tapes, you might decide to add all (or most) of the modifications included on this page into the build steps, along with any modifications you have personally created, so that all of the modifications that you want on your MVS 3.8j are all installed when the system is complete. Since I recently had the necessity to create a modification to my own system, even though I just rebuilt it, and also have had a modification submitted to me by another individual, I decided to create this page to collect MVS 3.8j User Modifications. I suspect there will be more user modifications added to this page over time. Just as a real world mainframe system is not a static thing, an instance of MVS 3.8j running under Hercules is an evolving system and changes to it will need to be made over time.
Each user modification must have a unique seven character identifier. In the terminology of the System Modification Program (SMP) this identifier is known as the SYSMOD-ID. There are four types of program code that are tracked/managed by SMP: FUNCTIONs, APARs, PTFs, and USERMODs. FUNCTIONs identify the elements of the MVS system code. APARs (Authorized Program Analysis Reports) identify problems that have been identified and for which corrective fixes have been issued. PTFs (Program, or Product, Temporary Fixes) identify fixes that have been issued to permanently correct previously issued APARs. USERMODs are modifications used to replace or update an element, or to introduce a totally new user-written element into the system.
All four types of program code are referenced by this seven character identifier, which must be unique. FUNCTIONs are typically identified by an identifier consisting of three alphabetic letters followed by four numbers; an example is EBB1102, which identifies the Base Control Program. APARs and PTFs are typically identified by an identifier consisting of two alphabetic letters followed by four numbers; an example is UY01186, which applies a fix to EBB1102. IBM or vendors supplying system code assign the identifiers for FUNCTIONs, APARs, and PTFs, although in the efforts to maintain MVS 3.8j executing under Hercules, there have been some PTFs issued by members of the community.
USERMODs are typically identified by an identifier consisting of three, but sometimes only two, alphabetic letters followed by numbers to complete the maximum length of seven characters. The choice of the SYSMOD-ID for USERMODs is completely at the discretion of the author of the modification. As long as the identifier is unique within the MVS system where it is applied, it is a valid identifier. Therefore, when User modifications are imported for use on a particular MVS system, it may be necessary to adjust the SYSMOD-ID to integrate the modification into the target MVS system without conflicting with an already present element. In surveying various User modifications for inclusion on this page I have seen that there are some modifications that are essentially the same code that have been identified in several different originating systems with a different SYSMOD-ID. That doesn't indicate an error, but it does present a situation that requires reconciliation before proceeding to include the modification here, in order to avoid unnecessary duplication. Also consider that, if a User modification is chosen from here to incorporate into any specific target system, an evaluation must be made to determine if there will be a conflict of identifiers, and, if so, the User modification will need to be given a new identifier before it may be installed on the target system.
Note: If you specify COMPRESS(ALL) in your SMP control statements, SYS1.LINKLIB will be compressed in place with IEBCOPY. Nine times out of ten this will work with no problems, but if you attempt this enough times eventually the load module for IEBCOPY will be relocated during the compress and IEBCOPY will abend. I believe a simple fix for this is to re-link edit IEBCOPY and eliminate the overlay structure with which it is installed during System Generation. See the MVS FAQ entry for more information.
I have several times received the question, "How can I tell what User Modifications are installed on my system?" SMP may be used to list all currently installed User Modifications. A jobstream to accomplish this may be downloaded from smpjob.jcl. The output from the job on my system may be viewed at smpjob.pdf.
Brian Westerman reworked the Amdahl modification that allows for the specification of a dynamic proclib in JCL. You can find the original Amdahl modification at the CBT Tape site in file #271 and Brian's modification, which was done for the Turnkey 3, in file #619. Brian distributed the modification in several forms, but I have reworked them a bit to combine the modification into a single jobstream. My jobstream builds the new load module from source, which avoids dealing with object code in decks that may have gone through EBCDIC/ASCII conversions, perhaps more than once.
Also, Brian left the ACCEPT step as a separate job, but I have combined it as the final step of the same job that does the APPLY of the modifications.
You may download the jobstream from dynproc.jcl. Expect a return code of 0012 from the fourth step, as there is a REJECT that will not work the first time you execute the job. Also expect a return code of 0004 on the final step due to link editor external links. All other return codes should be 0000. The output from the job on my system may be viewed at dynproc.pdf.
You will also need to modify your JES2 procedure in SYS1.PROCLIB. This is the modified version of my JES2 procedure: (changes shown in magenta)
//JES2 PROC M=JES2PM00, // N1=SYS1, // N2=SYS2, // L=LINKLIB, // U=3350, // P=PARMLIB //IEFPROC EXEC PGM=HASJES20, // TIME=1440, // DPRTY=(15,15) //STEPLIB DD UNIT=&U,DISP=SHR,DSN=&N1..&L //PROC00 DD DSN=&N1..PROCLIB,DISP=SHR // DD UNIT=&U,VOL=SER=SYSCPK,DISP=SHR,DSN=SYSC.PROCLIB // DD DSN=&N2..PROCLIB,DISP=SHR // DD DSN=&N1..PROCLIB,DISP=SHR //IEF0PDSI DD DSN=&N1..PROCLIB,DISP=SHR <---1ST CONVERTER // DD UNIT=&U,VOL=SER=SYSCPK,DISP=SHR,DSN=SYSC.PROCLIB // DD DSN=&N2..PROCLIB,DISP=SHR // DD DSN=&N1..PROCLIB,DISP=SHR //IEF1PDSI DD DSN=&N1..PROCLIB,DISP=SHR <---2ND CONVERTER // DD UNIT=&U,VOL=SER=SYSCPK,DISP=SHR,DSN=SYSC.PROCLIB // DD DSN=&N2..PROCLIB,DISP=SHR // DD DSN=&N1..PROCLIB,DISP=SHR //HASPPARM DD DSN=&N1..&P(&M),DISP=SHR //HASPLIST DD DDNAME=IEFRDER
As shown above, this will handle two converters. If you need more (up to sixteen), consult Brian's documentation in CBT file #619.
To execute a procedure in a user proclib, include a JOBPROC card in your job before the first EXEC card:
//JOBPROC DD DISP=SHR,DSN=MY.PROC.LIBRARY,SYSPROC=YES
The partitioned dataset specified must be fixed length, 80 character records. The optional SYSPROC=YES parameter specifies that the system procedure libraries are to be searched for the procedure to be executed if it is not found in the user proclib. If you omit the SYSPROC parameter, it defaults to SYSPROC=YES. If you specify SYSPROC=NO, the job will fail if the procedure to be executed is not found in the user proclib.
31 August 2020 Correction: There was an error in the DDnames for the two converter statements in the JES2 procedure above when it was first published. The DDnames shown above are correct. I do not know when or how this error occurred, as this page was created after the usermod had been successfully applied and tested on my system in May 2020. I apologize for anyone who has encountered problems because of my error. As always, I encourage anyone who finds errors, or knows of improvements that may be made, to please let me know directly as soon as you can. Thanks.
The sample program SAMP327L in SYS1.SAMPLIB does not compile as shipped. The RESETPL macros in both SYS1.MACLIB and SYS1.AMACLIB have RESETPOL in the macro header, rather than RESETPL.
Here is the complete jobstream to apply the modification:
//JWS0001 JOB (SYS),'USERMOD: JWS0001 ', // CLASS=S, // MSGCLASS=X, // MSGLEVEL=(1,1), // REGION=4096K /*JOBPARM LINES=100 //* //RECEIVE EXEC SMPREC,WORK='SYSALLDA' //SMPPTFIN DD DATA,DLM='><' ++USERMOD(JWS0001). ++VER(Z038) FMID(EBT1102) SUP(UZ57310) /* PROBLEM DESCRIPTION(S): THE PROTOTYPE STATEMENT IN THE RESETPL MACRO HAS THE NAME RESETPOL. SPECIAL CONDITIONS: ACTION: NONE REQUIRED, THE CHANGE IS IMMEDIATE. COMMENTS: LAST CHANGE: 2020/04/29 THE FOLLOWING MODULES AND/OR MACROS ARE AFFECTED BY THIS USERMOD: MODULES <NONE> MACROS RESETPL */. ++MACUPD(RESETPL) DISTLIB(AMACLIB). ./ CHANGE NAME=RESETPL &NAME RESETPL &DECB,&TYPE,&SPEC @JWS0001 02000000 >< //SMPCNTL DD * REJECT S(JWS0001) . RESETRC . RECEIVE S(JWS0001) . //* //APPLYCK EXEC SMPAPP,WORK='SYSALLDA' //SMPCNTL DD * APPLY S(JWS0001) CHECK . //* //APPLY EXEC SMPAPP,COND=(0,NE),WORK='SYSALLDA' //SMPCNTL DD * APPLY S(JWS0001) DIS(WRITE) COMPRESS(ALL) . //* //
You may download a copy of this job at jws0001.jcl. Expected return codes for all steps is 0000. (Note: you may see a 0012 return code from the REJECT command if you have not previously RECEIVEd this modification, but it is reset immediatly after by the RESETRC command. The REJECT is coded so that this job may be rerun, if required.) The output from the job on my system may be viewed at jws0001.pdf.
When (with the encouragement of Phil Roberts) I originally created the Compiler/Language/Tools Volume (in December 2008) I envisioned SYSCPK as a way to group all of the various language compilers into a single place for easy installation into MVS 3.8j running under Hercules. Over time it evolved to contain a number of additional programs, and some documentation, that did not fall strictly under the heading of language compilers, but were just useful to have. Recently I have been moving CBT batch programs that I had installed into SYS2.LINKLIB over onto the link library on SYSCPK. Then I remembered that libraries concatenated by inclusion into SYS1.PARMLIB(LNKLST00) must be catalogued in the Master Catalog. Since I did not want to keep modifying my jobstreams to include a STEPLIB DD to SYSC.LINKLIB, I went looking for a solution.
In November 1981, James Purdy submitted to SHARE a modification to IEAVNP03 to bypass the requirement that all libraries concatenated with the LNKLST parameter had to be catalogued in the Master Catalog. I found another file that had various other versions of this code, but all for even later versions of MVS, so this version was the closest to MVS 3.8j in age. The original version is included on the CBT Overflow tape (version 466) in file #130. This corresponds to SHARE tape #30, so you can also find the modification on the SPLA volume in SPLA.SPL623.FILE030.DATA.
IEAVNP03 is one of the programs that is executed during the MVS nucleus initialization, and at the time that it is executed, MVS is not far enough along to have access to User Catalogs. This modification adds code to IEAVNP03 so that when the normal lookup of the library fails, the code scans forward from the library name to see if there is an additional parameter coded following the library name, enclosed in parentheses. If so, that text is inserted as the Volume Serial Number of the DASD device where the library is located and IEAVNP03 processing resumes.
There were several steps to get from the original version of the modification to a version that would apply to MVS 3.8j. There is source code for IEAVNP03 provided in the MVS 3.8j optional materials tapes, but as expected, it does not match the version that is installed on MVS 3.8j from the distribution tapes. Using a listing of the disassembly of IEAVNP03 (from SYS1.NUCLEUS on a newly built MVS 3.8j) and a listing of the assembly of the source for IEAVNP03 (found on the optional materials tapes for MVS 3.8j), I modified the original MS00100 code created by James Purdy. You may view a side-by-side comparison of the original (James Purdy) version with my version altered for MVS 3.8j at IEAVNP03_modifications.pdf. This is just a fragment of the IEAVNP03 source, which is processed by an assembler (any version is acceptable), and the listing is then processed by the ASMTOZAP program (file #44 or #860 on the CBT tape). The output from ASMTOZAP is valid input to the SMP program. Here is the complete jobstream, with some documentation added, to apply the modification:
//MS00100 JOB (SYS),'USERMOD: MS00100 ', // CLASS=S, // MSGCLASS=X, // MSGLEVEL=(1,1), // REGION=4096K /*JOBPARM LINES=100 //RECEIVE EXEC SMPREC,WORK='SYSALLDA' //SMPPTFIN DD DATA,DLM='><' ++USERMOD(MS00100). ++VER(Z038) FMID(EBB1102) /* PROBLEM DESCRIPTION(S): DURING NIP PARMLIB LINK LIST CONCATENATION PROCESSING, LIBRARIES INCLUDED MUST BE CATALOGUED IN THE MASTER CATALOG OR THEY WILL NOT BE LOCATED AND THE ENTRY WILL BE IGNORED. THIS MODIFICATION ALLOWS THE INCLUSION OF A VOLUME SERIAL NUMBER IN PARENTHESES IMMEDIATELY AFTER THE LIBRARY NAME WHICH IS USED TO LOCATE THE LIBRARY. EXAMPLE: SYSC.LINKLIB(SYSCPK) COMPONENT: 5752-VS2-EBB1102 SPECIAL CONDITIONS: ACTION: AN IPL IS REQUIRED FOLLOWING THE SUCCESSFUL APPLICATION. COMMENTS: REWORKED FROM JAMES PURDY ORIGINAL, SOURCE: SPLA FILE #030, COPY OBTAINED FROM CBT OVERFLOW V466 FILE #130. LAST CHANGE: 2020/05/19 JAY MOSELEY THE FOLLOWING MODULES AND/OR MACROS ARE AFFECTED BY THIS USERMOD: MODULES SYS1.NUCLEUS(IEAVNP03) MACROS <NONE> */. ++ZAP(IEAVNP03) DISTLIB(AOSC5). NAME IEAVNP03 IEAVNP03 IDRDATA MS00100 * NP3LCLOC EQU * VER 0CAE 58A0,CCD7 L @10,LCNAMPTR * ORG IEAVNP03+X'CD2' * NP3LCLXT EQU * VER 0CD2 4180,8033 LA SCANREG,51(,SCANREG) * ORG IEAVNP03+X'CAE' REP 0CAE 47F0,D748 B PATCHLOC * ORG IEAVNP03+X'2768' * PATCHLOC EQU * REP 2768 41F0,0024 LA @15,36 * SCANLPAR EQU * REP 276C 41AF,8001 LA @10,1(@15,SCANREG) REP 2770 954D,A000 CLI 0(@10),C'(' REP 2774 4780,D760 BE FOUND REP 2778 46F0,D74C BCT @15,SCANLPAR REP 277C 47F0,D768 B NOTFOUND * FOUND EQU * REP 2780 955D,A007 CLI 7(@10),C')' REP 2784 4780,D770 BE MOVEVOL * NOTFOUND EQU * REP 2788 58A0,CCD7 L @10,LCNAMPTR REP 278C 47F0,BC90 B NP3LCLOC+4 * MOVEVOL EQU * REP 2790 D205,802D,A001 MVC LNKVOLID(6,SCANREG),1(@10) REP 2796 9240,A000 MVI 0(@10),C' ' REP 279A D206,A001,A000 MVC 1(7,@10),0(@10) REP 27A0 1FFF SLR @15,@15 REP 27A2 47F0,BCB0 B NP3LCLXT * DECK PRODUCED BY THE ASMTOZAP UTILITY 20/05/19 170131 >< //SMPCNTL DD * REJECT S(MS00100) . RESETRC . RECEIVE S(MS00100) . //* //APPLYCK EXEC SMPAPP,WORK='SYSALLDA' //SMPCNTL DD * APPLY S(MS00100) CHECK . //* //APPLY EXEC SMPAPP,COND=(0,NE),WORK='SYSALLDA' //SMPCNTL DD * APPLY S(MS00100) DIS(WRITE) COMPRESS(ALL) . //* //
You may download a copy of this job at ms00100.jcl. Expected return codes for all steps is 0000. (Note: you may see a 0012 return code from the REJECT command if you have not previously RECEIVEd this modification, but it is reset immediatly after by the RESETRC command. The REJECT is coded so that this job may be rerun, if required.) The output from the job on my system may be viewed at ms00100.pdf.
This modification updates IEAVNP03 to allow the inclusion of a Volume Serial Number in parentheses following the library name in SYS1.PARMLIB(LNKLST00) entries. You must edit SYS1.PARMLIB(LNKLST00) to add the Volume Serial Number where needed for uncatalogued libraries (or libraries catalogued in User Catalogs). See the example coding in the comments section of the modification code.
07 June 2020 Note: Application of this modification caused a minor 'break' of my system, which occurred the next time I applied a user modification that required SMP to execute the IFOX assembler. The IFOX assembler is present in both SYS1.LINKLIB and SYSC.LINKLIB on my system, and this will probably also be the case for any system where SYSCPK has been added. SMP links to the assembler whenever modifications required the re-assembly of source; during loading of subsequent phases of the assembler, the system will attempt to load the next phase from a different library than the previous phase and a S106-0F abend will occur. This is easily circumvented by the inclusion of a JOBLIB DD pointing to SYS1.LINKLIB in the SMP jobstream.
This is the JESMAXCC modification from Brian Westerman, obtained from CBT Tape file #641. There are two of Brian's JES2 modifications in that file, but if you built your system following my MVS 3.8j instructions and included all the user modifications, you have already applied the other JES2 modification in that CBT Tape file. After this modification, which is actually a pair of user modifications, is applied to your system, when you specify the NOTIFY parameter to the JOB statement of a job submitted through TSO, when the notify message is built, the maximum completion code returned by any step in the job is appended to the end of the message:
You may download the jobstream from syzj2001.jcl. Expect a return code of 0012 from the fourth step, as there is a REJECT that will not work the first time you execute the job. Also expect a return code of 0004 on the final step due to a warning about TJES801, another user modification that has been applied to EJE1103link editor external links. All other return codes should be 0000. The output from the job on my system may be viewed at syzj2001.pdf.
This user modification has long been included in my instructions for building MVS 3.8j and is also included on the Turnkey system. It has always had an ambiguous reference to the source, simply because I had lost track of where I got the copy I was using. In the process of cleaning up and organizing much of my MVS material, I tracked down the origin of this modification to the Bank of New South Wales, which then found its way onto the Aussie GUIDE tape, and then on to the CBT Overflow tape at File #15. If you are running a system built with my instructions or the Turnkey system, this modification is already present, however I am beginning to add some of those 'included' modifications onto this page after receiving a request to do so.
The modification adds two new JES2 commands that may be issued from the MVS console. The two commands are $DP and $U:
The format of the $DP command is:
$DP[class]
If the class operand is omitted, details of all queued printed output will be displayed, regardless of class. If a single class designation is included, details for output queued for that class will be displayed; only one class may be specified. Held output is not included in the display.
Examples of $DP:
$dp $HASP000 JOB MAPDISK #--208 CLASS L LINES 8 $HASP000 JOB MAPDISK #--208 CLASS L LINES 61 $HASP000 JOB MAPDISK #--208 CLASS L LINES 89 $HASP000 JOB MAPDISK #--208 CLASS L LINES 5086 $HASP000 JOB MAPDISK #--208 CLASS L LINES 22 $HASP000 JOB IEBCOPY #---76 CLASS P LINES 7 $HASP000 JOB IEBCOPY #---76 CLASS P LINES 9 $HASP000 JOB IEBCOPY #---76 CLASS P LINES 34 $HASP000 JOB IEBCOPY #---76 CLASS P LINES 835 $HASP000 JOB RECV370 #--584 CLASS X LINES 14 $HASP000 JOB RECV370 #--584 CLASS X LINES 4 $HASP000 JOB RECV370 #--584 CLASS X LINES 39 $HASP000 JOB RECV370 #--584 CLASS X LINES 19 $HASP000 JOB RECV370 #--584 CLASS X LINES 9 $HASP000 1 PERCENT SPOOL UTILIZATION$dpx $HASP000 JOB RECV370 #--584 CLASS X LINES 14 $HASP000 JOB RECV370 #--584 CLASS X LINES 4 $HASP000 JOB RECV370 #--584 CLASS X LINES 39 $HASP000 JOB RECV370 #--584 CLASS X LINES 19 $HASP000 JOB RECV370 #--584 CLASS X LINES 9 $HASP000 1 PERCENT SPOOL UTILIZATIONThe format of the $U command is:
$U <jobid>,O=<fromclass>,C=<toclass>
<jobid> can be JOB/TSU/STC number or range of numbers, e.g.: J10, S23-25, T51
or job name in quotes, e.g.: 'TSTJOB'<fromclass> can be one or more classes, e.g.: A, ABV, ABCDEF, or * to signify all classes.
<toclass> is a single class specification, e.g.: C
Examples of $U:
$us320,o=y,c=x $HASP000 SYSOUT CLASS/ES CHANGEDchange class Y output queued for started task 320 to class X
$uj208-209,c=D,o=* $HASP000 SYSOUT CLASS/ES CHANGEDchange output queued in any class for jobs 208 and 209 to class D
$u'ickdsf',c=n,o=* $HASP000 SYSOUT CLASS/ES CHANGEDchange output queued in any class for ICKDSF to class N
$uj1-999,o=*,c=x $HASP000 SYSOUT CLASS/ES CHANGEDchange output queued in any class for all jobs, 1 through 999, to class X
Notes:
- The operands O and C may be in any order.
- Output currently being printed cannot be changed.
- Output that is held cannot be changed.
- Changing output to the Z queue requeues output to a Z queue, but does not automatically delete the output.
The response to the $U command will be either:
$HASP000 SYSOUT CLASS/ES CHANGED
or
$HASP000 NO OUTPUT FOUND
You may download the jobstream for this user modification from wm00017.jcl. The return code from the REJECT operation may be 0004. All other return codes should be 0000. The output from the job on my system may be viewed at wm00017.pdf.
This user modification, from Shelby Beach, installs TSO exit IKJEFF53, written by Greg Price (available from CBT File #134), which validates the JOBNAME when a TSO user issues the STATUS, OUTPUT or CANCEL TSO commands to access batch jobs. You may download the jobstream for this user modification from slb0001.jcl. The output from the job on my system may be viewed at slb0001.pdf.
This user modification, from Shelby Beach, allows the specification of REGION size on both the JOB and EXEC statements in megabytes (MB). Most recent descendants of MVS, by which I mean z/OS, have allowed this for some time, but MVS 3.8j, as distributed, only allows the REGION specification to be in kilobytes (K). I have coded a RESTORE operation, in the case you have a need to rerun the job. You may download the jobstream for this user modification from slb0002.jcl. The output from the job on my system may be viewed at slb0002.pdf. Following the successful execution of the job, you will need to shut down MVS and re-IPL, specifing CLPA to rebuild the Link Pack Area.
This user modification, from Kevin Leonard, corrects the TCTRSZ field, which incorrectly reflects the size of the private area, rather than the requested region size. This modificdation is required in order for the IEFACTRT (step accounting exit) to produce correct output. You may download the jobstream for this user modification from ay12275.jcl. The output from the job on my system may be viewed at ay12275.pdf.
This user modification will be on almost every MVS system, although it is a very localized modification so may have a name that is particular to the installation. It is the step accounting report that is generated at the end of each execution step. The actual program load module is IEFACTRT. There are a number of versions of IEFACTRT around, and quite a few of them will work on MVS 3.8j, but not all, so investigate carefully. The source for IEFACTRT installed in my jobstream here is one that I wrote specifically for the version of MVS installation instructions I was writing in 2020. If you wish to try other IEFACTRT programs, you may substitute them for my source and submit the jobstream to install a new version. If you don't like the results, you can try another, or simply re-install the one included in the jobstream here. You may download the jobstream for this user modification from jlm0001.jcl. The output from the job on my system may be viewed at jlm0001.pdf.
This user modification is also a standard on most MVS systems, and on any I build it is the second installed after IEFACTRT (above). There are a few different versions on the CBT tape, but all accomplish the same function, which is to detect system message IEE362A informing the operator that the SMF data collection dataset has been switched and the previous dataset is ready to be dumped. This can occur for three reasons: a 'switch' command has been issued by the operator, the SMF dataset is closed during the processing of the Z EOD command, or the active dataset has filled. IEFU29 is link-edited into IEEMB829, which calls it and to which the IEFU29 routine returns control upon completion. The single function of IEFU29 is to issue a START operator command to initiate the catalogued procedure that dumps the filled dataset; it also issues a WTO to record that the START command was issued by IEFU29. If IEFU29 is called because of the Z EOD command, JES2 is not running, so IEFU29 simply returns without issuing the START command, and SMF will continue using the same dataset upon the next IPL. The JLM0002 jobstream also installs the catalogued procedure and control cards required for the SMFDUMP program. You may download the jobstream for this user modification from jlm0002.jcl. The output from the job on my system may be viewed at jlm0002.pdf.
This user modification is necessary to enable certain TSO commands to be utilized, since any program that requires authorization will require an entry in the table maintained in the CSECT IKJEFTE2 (IKJEFTE02 load module in SYS1.LPALIB), which is installed by this modification. You may find that you will need to update this table in the assembler source code and then RESTORE and APPLY this modification any time that you install a user written TSO command that requires authorization. You may download the jobstream for this user modification from jlm0003.jcl. The output from the job on my system may be viewed at jlm0003.pdf.
This user modification is necessary to enable certain programs to execute under TSO, since any program that requires authorization will require an entry in the table maintained in the CSECT IKJEFTE8 (IKJEFTE02 load module in SYS1.LPALIB), which is installed by this modification. You may find that you will need to update this table in the assembler source code and then RESTORE and APPLY this modification any time that you install a user written program that requires authorization which you wish to execute under TSO. You may download the jobstream for this user modification from jlm0004.jcl. The output from the job on my system may be viewed at jlm0004.pdf.
This user modification, from Kevin Leonard, modifies VTAM initialization to bypass reading the resource definition from VTAMOBJ and instead reads it from VTAMLST. You may download the jobstream for this user modification from tist801.jcl. The output from the job on my system may be viewed at tist801.pdf.
There are a couple of user modifications that have been in use for quite a while to correct the century of dates displayed in TSO to year 2000+. Although they are effective, they simply replace the century portion of the year with a constant '20'. On MVS 3.8j systems built using my instructions, the two user modifications are ZUM0007 and ZUM0008. I recently decided to investigate the origin of this problem, the TSO Date-Time routine IKJEFLPA, when I noticed that the century was incorrect for listings produced by the PRINTOFF TSO command. The source for IKJEFLPA (which contains 2 CSECTs: IKJEFLPA and IKJEFLPB) is available from the optional MVS source materials. I disassembled IKJEFLPA from SYS1.AOST4 and found the optional material source matches that load module. Looking at IKJEFLPA source, it is simply plugging '19' into the century portion of the year, completely ignoring the century flag returned by the TIME call. I modified the program to use a field generated by adding 19 to the century flag returned rather than the constant. That will yield a correct century in the year, whether you are running with your MVS set to a date in the 1900s or the 2000s. You may download the jobstream for this user modification from jlm0005.jcl. The output from the job on my system may be viewed at jlm0005.pdf. (Note: library compression output has been removed from the listing to reduce output pdf by over 200 pages.)
I hope that you have found my instructions useful. If you have questions that I can answer to help expand upon my explanations and examples shown here, please don't hesitate to send them to me:
Return to Site Home Page Frequently Asked Questions
This page was last updated on May 25, 2024 .