MVS 3.8j User Modifications

May, 2020

 

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.

 

Modifications by Name

Modifications by Target [Usermod]

Modifications by Originator [Usermod]
AY12275
correct region size in IEFACTRT
JES2 
[#DYP001-#DYP005, #DYPDMY]
Bank of New South Wales 
[WM00017]
#DYP001-#DYP005, #DYPDMY
enable dynamic PROCLIBs
JES2 
[SYZJ201-SYZJ202]
Shelby Beach 
[SLB0001]
JLM0001
IEFACTRT step accounting reporting
JES2 
[WM00017]
Shelby Beach 
[SLB0002]
JLM0002
IEFU29 SMF dataset switch
SYS1.LINKLIB(IKJEFF53) 
[SLB0001]
Kevin Leonard 
[AY12275]
JLM0003
IKJEFTE2 Authorized TSO commands
SYS1.LINKLIB(ISTINM01) (ISTSDCRC)
[TIST801]
Kevin Leonard
[TIST801]
JLM0004
IKJEFTE8 Authorized TSO programs
SYS1.LPALIB (IEEMB829) (IEFU29)
[JLM0002]
Jay Moseley 
[JLM0001]
JWS0001
correct RESETPL macro
SYS1.LPALIB (IKJEFTE02) (IKJEFTE2)
[JLM0003]
Jay Moseley
[JLM0002]
MS00100
allow LNKLST libraries not
catalogued in Master Catalog
SYS1.LPALIB (IKJEFTE02) (IKJEFTE8)
[JLM0004]
Jay Moseley
[JLM0003]
SLB0001
TSO exit to verify JOBNAME
STATUS, OUTPUT, and CANCEL
SYS1.LPALIB (IEFVEA) (IEFVJA) 
[SLB0002]
Jay Moseley
[JLM0004]
SLB0002
allow REGION size in MB (megabytes)
SYS1.LPALIB (IEFW21SD & aliases) 
[JLM0001]
James Purdy (CBT/SHARE{SPLA} 
[MS00100]
SYZJ201-SYZJ202
add maximum CC in TSO
NOTIFY message
SYS1.MACLIB(RESETPL) 
[JWS0001]
Jeff Snyder 
[JWS0001]
TIST801
Bypass VTAMOBJ and fetch resource 
definition from VTAMLST
SYS1.NUCLEUS(IEAVNP03) 
[MS00100]
Brian Westerman 
[#DYP001-#DYP005, #DYPDMY]
WM00017
new JES2 commands: $DP and $U
SYS1.NUCLEUS(IEAVPRT0) 
[AY12275]
Brian Westerman 
[SYZJ201-SYZJ202]

 


#DYP001 - #DYP005, #DYPDMY

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.


JWS0001

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.


MS00100

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.


SYZJ201-SYZJ202

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.


WM00017

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 UTILIZATION                     

The 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 CHANGED 

change class Y output queued for started task 320 to class X

$uj208-209,c=D,o=* 
$HASP000 SYSOUT CLASS/ES CHANGED 

change output queued in any class for jobs 208 and 209 to class D

$u'ickdsf',c=n,o=* 
$HASP000 SYSOUT CLASS/ES CHANGED 

change output queued in any class for ICKDSF to class N

$uj1-999,o=*,c=x 
$HASP000 SYSOUT CLASS/ES CHANGED 

change output queued in any class for all jobs, 1 through 999, to class X

Notes:

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.


SLB0001

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.


SLB0002

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.


AY12275

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.


JLM0001

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.


JLM0002

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.


JLM0003

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.


JLM0004

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.


TIST801

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.



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 February 16, 2022 .