CLIST, ISPF 2.x, MVS38J, TSO, Utility

Personal DSMON in MVS38J

Overview

One day, while reviewing output from the ISPF VTOC Utility add-on, option V (=3.7.V in TK5), with my userid HLQ as the DSN search argument, a numerous set of datasets were listed! Some resulting from manual testing. Others from applications…

At this juncture, I realized an alert-type process (aka personal dataset monitor) could be a handy tool to peak my interest and engage in investigating where/why personal datasets are occupying residency on my MVS 3.8J system.

Desiring a quick solution, use of a handy utility or set of utilities wrapped into a CLIST became first and foremost:

  • a CLIST can be customized at a moments notice
  • reside in CLIB library with parameters stored in my personal CLIST/CLIB library, sharing a common set of logic
  • execute, at will (randomly)

Design Rational

The LISTCAT command is readily available under TSO!

Using LISTCAT LEVEL(userid) NONVSAM can create a fairly lengthy DSN (dataset name) list.

Using LISTCAT LEVEL(userid.CARDS) NONVSAM narrows down the list by targeting non-vsam DSNs whose dataset name contains userid.CARDS in the first two DSN nodes.

Note: LISTCAT version supplied with MVS 3.8J does not support wild-cards.

Therefore, LISTCAT LEVEL(userid.CARDS) NONVSAM will list DSN userid.CARDS.MYFILE, but will NOT list DSN userid.CARDS. A third node must be present in the DSN when the first two nodes match.

Ok – acceptable limitation…

Stringing several LISTCAT LEVEL commands with some additional logic to provide alerts is a favorable base solution.

Today, I introduce a solution as an MVS 3.8J community contribution.

Enjoy!
Larry Belmontes

Solution

This solution is predicated on output from LISTCAT, which produces 2 lines per dataset when executed under TSO as shown in the below snippet:

READY
LISTCAT LEVEL(LARRY01.LOGIT) NONVSAM 

 NONVSAM ------- LARRY01.LOGIT.D24323.T105203  
      IN-CAT --- SYS1.UCAT.TSO                 
 NONVSAM ------- LARRY01.LOGIT.D24323.T232449  
      IN-CAT --- SYS1.UCAT.TSO                 
 NONVSAM ------- LARRY01.LOGIT.D24323.T232749  
      IN-CAT --- SYS1.UCAT.TSO                 
 NONVSAM ------- LARRY01.LOGIT.D24324.T112756  
      IN-CAT --- SYS1.UCAT.TSO                 
 NONVSAM ------- LARRY01.LOGIT.D24324.T122827  
      IN-CAT --- SYS1.UCAT.TSO                 
 NONVSAM ------- LARRY01.LOGIT.D24326.T113838  
      IN-CAT --- SYS1.UCAT.TSO                 
 NONVSAM ------- LARRY01.LOGIT.D24330.T223318  
      IN-CAT --- SYS1.UCAT.TSO                 
 NONVSAM ------- LARRY01.LOGIT.D24332.T090059  
      IN-CAT --- SYS1.UCAT.TSO                 
 NONVSAM ------- LARRY01.LOGIT.D24332.T102652  
      IN-CAT --- SYS1.UCAT.TSO                 
 NONVSAM ------- LARRY01.LOGIT.D24332.T102742  
      IN-CAT --- SYS1.UCAT.TSO                 
 NONVSAM ------- LARRY01.LOGIT.D24333.T094501  
      IN-CAT --- SYS1.UCAT.TSO                 
 NONVSAM ------- LARRY01.LOGIT.D24334.T104802  
      IN-CAT --- SYS1.UCAT.TSO                 
 NONVSAM ------- LARRY01.LOGIT.D24334.T233628  
      IN-CAT --- SYS1.UCAT.TSO                 
 ***
.
.
.       

When a non-existing entry is found, the output from LISTCAT is as follows:

READY
LISTCAT LEVEL(LARRY01.MYCAR) NONVSAM 

 ENTRY LARRY01.MYCAR. NOT FOUND+
      LASTCC=4
 ***
.
.
.       

 

C$DSMON

The common set of logic (CLIST), named C$DSMON, executes under TSO or TSO/ISPF and resides in SYS2.CMDLIB.

The command syntax is:


 C$DSMON DEBUG LOG CLEAR DSL() MYTUTOR DSMONDSN() DSMONMBR()

 where:

 DEBUG    optional, used to display DEBUG information for
          developer use.

 LOG      optional, used to log DSN counts and threshold
          exceeded messages to User LOG dataset.
          DD=DSMLOG  DSN=&SYSUID..DSMON.LOG
          RECFM=FBA  LRECL=121  BLKSIZE=1210

 CLEAR    optional, used to clear User LOG dataset before
          writing log entries.
          Otherwise, log entries are appended to end of current
          log content.

 DSL      optional, dataset level for single monitor request.
          DSL can be fully-qualified by using double-quotes.
          Otherwise, DSL is prepended with userid.
          Only DSL request is processed.

 MYTUTOR  optional, start ISPF tutorial if ISPF is available
          Other command options are ignored.

 DSMONDSN optional, C$DSMON user entries dataset name.
          Default = &SYSUID..TEST.CNTL

 DSMONMBR optional, C$DSMON user entries member name.
          Use '-' to designate no use of member name and
          use of a sequential dataset.
          default = DSM$USR

DSM$USR (Input file for C$DSMON)

The default input file is a PDS named &SYSUID.TEST.CNTL with member name DSM$USR. This naming approach allows a common declaration of pdsname(member) for use by C$DSMON CLIST.

The content of this input dataset is simply a set of records, each containing a DSNLevel and Threshold Limit.

The below snippet shows a representation of DSM$USR:



**********************************************************************
*  DSM$USR: Data input file for C$DSMON                              *
**********************************************************************
*  * * *                                                      * * *  *
*  * * *    Dataset Name LEVEL and Threshold Limit entries    * * *  *
*  * * *                                                      * * *  *
**********************************************************************
*                                                                    *
*  Format:  DSNLevel ThresholdLimit                                  *
*                                                                    *
*  Each entry must include a DSNLevel value and ThresholdLimit       *
*  numeric limit separated by a blank (space).                       *
*                                                                    *
*  For example:                                                      *
*  cards 10        --> DSNLevel = &SYSUID..CARDS    Threshold = 10   *
*  "larry01.test"  --> DSNLevel = LARRY01.TEST      Threshold = 3    *
*                                                                    *
*                                                                    *
*  - Use double-quotes to fully qualify a DSN                        *
*  - TSO SYSUID is prepended to non-fully qualified DSN              *
*  - Two or more DSN nodes are required for DSNLevel                 *
*  - Threshold = 3  when value not numeric or not specified          *
*  - Use asterisk in col. 1   for comment record(s)                  *
*  - Use // or /$ in col. 1-2 as logical EOF record                  *
*  - BLANK records are considered comment records                    *
*                                                                    *
**********************************************************************
test 10            check for sysuid.test datasets
cards 10           check for sysuid.cards datasets
logit              check for sysuid.logit datasets w default threshold of 3
listit 10          check for sysuid.listit datasets
catmgt 10          check for sysuid.catmgt datasets
compare 10         check for sysuid.compare datasets
vtocout 10         check for sysuid.vtocout datasets
prtscr 10          check for sysuid.prtscr datasets
cloc8 10           check for sysuid.cloc8 datasets
cprt36 10          check for sysuid.cprt36 datasets

//        Logical EOF record, processing stops here!

"HERC01.TEST"  5   fully-qualified DSN, check for HERC01.TEST datasets
temp  5            check for sysuid.temp datasets


Sample executions of C$DSMON

Using below command from ISPF main menu command line
TSO C$DSMON

 ==> *****   D A T A S E T   M O N I T O R   *****   hh:mm:ss mm/dd/yy
 ==> OPTIONS IN EFFECT: **NONE**                                         
 ==> USER ENTRIES FROM: LARRY01.TEST.CNTL(DSM$USR)                       
 ==> RC=00: 28 DATASETS FOR LEVEL LARRY01.TEST.*                         
     ** EXCEEDS THRESHOLD OF 10 **                                       
 ==> RC=00:  5 DATASETS FOR LEVEL LARRY01.CARDS.*                        
 ==> RC=00: 74 DATASETS FOR LEVEL LARRY01.LOGIT.*                        
     ** EXCEEDS THRESHOLD OF 3 **  LIMIT NOT PROVIDED, USING 3           
 ==> RC=00: 19 DATASETS FOR LEVEL LARRY01.LISTIT.*                       
     ** EXCEEDS THRESHOLD OF 10 **                                       
 ==> RC=00:  1 DATASET  FOR LEVEL LARRY01.CATMGT.*                       
 ==> RC=00:  2 DATASETS FOR LEVEL LARRY01.COMPARE.*                      
 ==> RC=00:  2 DATASETS FOR LEVEL LARRY01.VTOCOUT.*                      
 ==> RC=04:  0 DATASETS FOR LEVEL LARRY01.PRTSCR.*                       
 ==> RC=04:  0 DATASETS FOR LEVEL LARRY01.CLOC8.*                        
 ==> RC=04:  0 DATASETS FOR LEVEL LARRY01.CPRT36.*                       
 EOF RECORD DETECTED... //                                               
 REQUESTS:10  PROCESSED:10                                               
 RUN STATS: 2.07 SECONDS  3322 SERVICE UNITS                             
 ***                                                                     

Using command
TSO C$DSMON LOG

 ==> *****   D A T A S E T   M O N I T O R   *****   hh:mm:ss mm/dd/yy 
 ==> OPTIONS IN EFFECT: LOG                                   
 ==> USER ENTRIES FROM: LARRY01.TEST.CNTL(DSM$USR)            
 ==> RC=00: 28 DATASETS FOR LEVEL LARRY01.TEST.*              
     ** EXCEEDS THRESHOLD OF 10 **                            
 ==> RC=00:  5 DATASETS FOR LEVEL LARRY01.CARDS.*             
 ==> RC=00: 74 DATASETS FOR LEVEL LARRY01.LOGIT.*             
     ** EXCEEDS THRESHOLD OF 3 **  LIMIT NOT PROVIDED, USING 3
 ==> RC=00: 19 DATASETS FOR LEVEL LARRY01.LISTIT.*            
     ** EXCEEDS THRESHOLD OF 10 **                            
 ==> RC=00:  1 DATASET  FOR LEVEL LARRY01.CATMGT.*            
 ==> RC=00:  2 DATASETS FOR LEVEL LARRY01.COMPARE.*           
 ==> RC=00:  2 DATASETS FOR LEVEL LARRY01.VTOCOUT.*           
 ==> RC=04:  0 DATASETS FOR LEVEL LARRY01.PRTSCR.*            
 ==> RC=04:  0 DATASETS FOR LEVEL LARRY01.CLOC8.*             
 ==> RC=04:  0 DATASETS FOR LEVEL LARRY01.CPRT36.*            
 EOF RECORD DETECTED... //                                    
 REQUESTS:10  PROCESSED:10                                    
 RUN STATS: 1.57 SECONDS  2710 SERVICE UNITS                  
 ***                                                          

The User LOG dataset contains logged entries as shown in the below snippet:

1*****   D A T A S E T   M O N I T O R   *****   hh:mm:ss mm/dd/yy
 ==> OPTIONS IN EFFECT: LOG                               
 USER ENTRIES FROM: LARRY01.TEST.CNTL(DSM$USR)            
 RC=00: 28 DATASETS FOR LEVEL LARRY01.TEST.*              
 ** EXCEEDS THRESHOLD OF 10 **                            
 RC=00:  5 DATASETS FOR LEVEL LARRY01.CARDS.*             
 RC=00: 74 DATASETS FOR LEVEL LARRY01.LOGIT.*             
 ** EXCEEDS THRESHOLD OF 3 **  LIMIT NOT PROVIDED, USING 3
 RC=00: 19 DATASETS FOR LEVEL LARRY01.LISTIT.*            
 ** EXCEEDS THRESHOLD OF 10 **                            
 RC=00:  1 DATASET  FOR LEVEL LARRY01.CATMGT.*            
 RC=00:  2 DATASETS FOR LEVEL LARRY01.COMPARE.*           
 RC=00:  2 DATASETS FOR LEVEL LARRY01.VTOCOUT.*           
 RC=04:  0 DATASETS FOR LEVEL LARRY01.PRTSCR.*            
 RC=04:  0 DATASETS FOR LEVEL LARRY01.CLOC8.*             
 RC=04:  0 DATASETS FOR LEVEL LARRY01.CPRT36.*            
 REQUESTS:10  PROCESSED:10                                

Using command (under TSO READY prompt without ISPF environment)
C$DSMON LOG

 ==> *****   D A T A S E T   M O N I T O R   *****   hh:mm:ss mm/dd/yy
 ==> TSO SERVICES ONLY, ISPF SERVICES NOT AVAILABLE
 ==> OPTIONS IN EFFECT: LOG                                      
 ==> USER ENTRIES FROM: LARRY01.TEST.CNTL(DSM$USR)                    
 ==> RC=00: 28 DATASETS FOR LEVEL LARRY01.TEST.*                      
     ** EXCEEDS THRESHOLD OF 10 **                                    
 ==> RC=00:  5 DATASETS FOR LEVEL LARRY01.CARDS.*                     
 EOF RECORD DETECTED... /$                                            
 REQUESTS:2  PROCESSED:2                                              
 RUN STATS: 0.37 SECONDS  669 SERVICE UNITS                           
 ***                                                                  
                               

Prerequisites

No prerequisites necessary excluding user-mods.

See README file for a complete list of required and/or optional software including download sites.

Software Disclaimer

No guarantee; No warranty; Install / Use at your own risk.

This software is provided “AS IS” and without any expressed or implied warranties, including, without limitation, the implied warranties of merchantability and fitness for a particular purpose.

The author requests keeping authors name intact to any modified versions.

In addition, the author requests readers to submit any code modifications / enhancements and associated comments for consideration into a subsequent release (giving credit to contributors) thus, improving overall functionality benefiting the MVS 3.8J hobbyist public domain community.

Access DSMON now for a demo!

Take DSMON for a ‘test drive’ before downloading and installing onto your MVS38J system.

Point your TN3270 terminal emulator using TLS to access TK4- v8 system

  • URL: mywhs.belmontes.net
  • PORT: 5000
  • TLS : Version 1.2

or, point your TN3270 terminal emulator using TLS to access TK5 system

  • URL: mywhs.belmontes.net
  • PORT: 5050
  • TLS : Version 1.2

Once connected, log on using any TK4- or TK5 default user ids and passcodes.

On TK4-, select option I (I for ISPF) from the TSO Applications Menu to display ISPF Main Menu.
Note, option I is not listed on the menu – this is intentional.

On TK5, the ISPF Main menu displays.

Use option L to display the ShareABitOfIT Software Demo Menu.

Use option M to display next set of menu options.

Use option DSMON to display dataset levels exceeding set thresholds (if any).

Use option 3.4 to browse dataset userid.DSMON.LOG.

Use PF3 (repeatedly) to exit from application returning to the TSO READY prompt.

Log off TSO.

Terminate 3270 session.

Installing Software

After downloading the ZIP file, the approach for this installation procedure is to transfer the distribution content file (HET or XMI) from your personal computing device to MVS.

When the transfer completes, associated load JCL (HET, RECV370 or TSO RECEIVE) can also be transferred to MVS to load the distribution software.

Alternatively, the load JCL may be submitted from your device if a TCP/IP socket reader is setup on you device hosting Hercules / MVS 3.8J.

Continue the installation procedure using supplied JCL from the MVS CNTL data set under TSO per the readme.txt instructions.

The below README file includes a ZIP file content list, pre-installation requirements (notes, credits) and installation steps.


DSMON for MVS 3.8J / Hercules                                               . 
=============================                                               .
                                                                            .

Date: 02/18/2025  Release V0R9M00  **INITIAL software distribution

*  Author:  Larry Belmontes Jr.
*           https://ShareABitofIT.net/Personal-DSMON-in-MVS38J
*           Copyright (C) 2025  Larry Belmontes, Jr.


----------------------------------------------------------------------
|    DSMON        I n s t a l l a t i o n   R e f e r e n c e        |
----------------------------------------------------------------------

   The approach for this installation procedure is to transfer the
distribution content from your personal computing device to MVS with
minimal JCL and to continue the installation procedure using supplied
JCL from the MVS CNTL data set under TSO.

   Below are descriptions of ZIP file content, pre-installation
requirements (notes, credits) and installation steps.

Thanks!
-Larry Belmontes



----------------------------------------------------------------------
|    DSMON        C h a n g e   H i s t o r y                        |
----------------------------------------------------------------------
*
*  MM/DD/CCYY Version  Change Description
*  ---------- -------  -----------------------------------------------
*  02/18/2025 0.9.00   Initial version released to MVS 3.8J
*                      hobbyist public domain
*
*
======================================================================
* I. C o n t e n t   o f   Z I P   F i l e                           |
======================================================================

o  $INST00.JCL          Define Alias for HLQ in Master Catalog

o  $INST01.JCL          Load CNTL data set from distribution tape

o  $RECVXMI.JCL         RECV370 Receive XMI SEQ to MVS PDSs

o  $RECVTSO.JCL         TSO Receive XMI SEQ to MVS PDSs

o  DSMON.V0R9M00.HET    Hercules Emulated Tape (HET) multi-file volume
   volser=VS0900        containing software distribution library.

o  DSMON.V0R9M00.XMI    XMIT file containing software distribution library.

o  DSCLAIMR.TXT         Disclaimer

o  PREREQS.TXT          Required user-mods

o  README.TXT           This File
   Note: See application web page for any updates to readme.txt


Note:   ISPF v2.1+ (ISPF-like product from Wally Mclaughlin) must be     
-----   installed under MVS 3.8J TSO including associated user-mods
        per ISPF Installation Pre-reqs.

Note:   Two user-mods, ZP60014 and ZP60038, are REQUIRED to process
-----   CLIST symbolic variables via the IKJCT441 API on MVS 3.8J before
        using this software.
        More information and download links at:
        http://www.prycroft6.com.au/vs2mods/

Note:   CUTIL00 is a TSO utility that performs various functions using
-----   CLIST variables and must be installed as a pre-requisite.  
        More information including current version download link at:
        
CUTIL00 for MVS 3.8J
====================================================================== * II. P r e - i n s t a l l a t i o n R e q u i r e m e n t s | ====================================================================== o The Master Catalog name for HLQ aliases. o The Master Catalog password may be required for some installation steps. o If loading via tape files, device 480 is utilized. o DATASET List after distribution library load for reference purposes: DATA-SET-NAME------------------------------- VOLUME ALTRK USTRK ORG FRMT % XT SHRABIT.DSMON.V0R9M00.ASM PUB006 20 5 PO FB 25 1 SHRABIT.DSMON.V0R9M00.CLIST PUB006 2 1 PO FB 50 1 SHRABIT.DSMON.V0R9M00.CNTL PUB006 20 5 PO FB 25 1 SHRABIT.DSMON.V0R9M00.HELP PUB006 2 1 PO FB 50 1 SHRABIT.DSMON.V0R9M00.ISPF PUB006 10 6 PO FB 60 1 SHRABIT.DSMON.V0R9M00.MACLIB PUB006 10 3 PO FB 30 1 **END** TOTALS: 64 TRKS ALLOC 21 TRKS USED 6 EXTENTS Confirm the TOTAL track allocation is available on your device. Note: A different DASD device type (e.g. 3380) may yield different usage. o TSO user-id with sufficient access rights to update SYS2.CMDPROC, SYS2.CMDLIB, SYS2.HELP, SYS2.LINKLIB and/or ISPF libraries. o For installations with a security system (e.g. RAKF), you MAY need to insert additional JOB statement information. // USER=???????,PASSWORD=???????? o Names of ISPCLIB (Clist), ISPMLIB (Message), ISPLLIB (Load) and/or ISPPLIB (Panel) libraries. o Download ZIP file to your PC local drive. o Unzip the downloaded file into a temp directory on your PC device. o Install pre-requisite (if any) software and/or user modifications. o JCL from your local device (after unzip) may be edited using Notepad or nano (based on you host OS) and submitted via TCP/IP sockets reader if your system configuration supports this option. This option can replace some copy-paste tasks during installation. For more information on submitting JCL to MVS 3.8J, see
Submitting JCL to MVS 3.8J
o For more information on SHRABIT software distribution library, see
SHRABIT Distributions for MVS38J
o For more information on SHRABIT software installation, see
SHRABIT Installations for MVS38J
====================================================================== * III. I n s t a l l a t i o n S t e p s | ====================================================================== +--------------------------------------------------------------------+ | Step 1. Determine software installation source | +--------------------------------------------------------------------+ | HET or XMI ? | +--------------------------------------------------------------------+ a) Software can be installed from one of two sources, HET or XMI. - For tape installation (HET), proceed to STEP 3. **** or - For XMIT installation (XMI), proceed to next STEP. +--------------------------------------------------------------------+ | Step 2. Load distribution source from XMI file | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.DSMON.V0R9M00.CNTL($RECVXMI) | | JCL Member: SHRABIT.DSMON.V0R9M00.CNTL($RECVTSO) | +--------------------------------------------------------------------+ ______________________________________________________________________ //RECV000A JOB (SYS),'Receive DSMON XMI', <-- Review and Modify // CLASS=A,MSGCLASS=X,REGION=0M, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * JOB: $RECVXMI Receive Application XMI Files * //* * using RECV370 * //* -------------------------------------------------------* //RECV PROC HLQ='SHRABIT.DSMON',VRM=V0R9M00,TYP=XXXXXXXX, // DSPACE='(TRK,(10,05,40))',DDISP='(,CATLG,DELETE)', // DUNIT=DISK,DVOLSER=PUB006 <-- Review and Modify //* //RECV370 EXEC PGM=RECV370 //RECVLOG DD SYSOUT=* //XMITIN DD DISP=SHR,DSN=&&XMIPDS(&TYP) //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=&&SYSUT1, // UNIT=SYSALLDA,SPACE=(CYL,(10,05)),DISP=(,DELETE,DELETE) //SYSUT2 DD DSN=&HLQ..&VRM..&TYP,DISP=&DDISP, // UNIT=&DUNIT,SPACE=&DSPACE,VOL=SER=&DVOLSER //SYSIN DD DUMMY //SYSUDUMP DD SYSOUT=* // PEND //* //* -------------------------------------------------------* //* Ensure parent HLQ alias is declared //* -------------------------------------------------------* //DEFALIAS EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * PARM GRAPHICS(CHAIN(SN)) LISTCAT ALIAS ENT(SHRABIT) /* Review and modify catalog name below */ IF LASTCC NE 0 THEN - DEFINE ALIAS(NAME(SHRABIT) RELATE(SYS1.UCAT.MVS)) /* //* //* -------------------------------------------------------* //* RECV370 DSMON Software Distribution //* -------------------------------------------------------* //XMIPDS EXEC RECV,TYP=XMIPDS,DSPACE='(CYL,(10,05,10),RLSE)' //RECV370.XMITIN DD DISP=SHR,DSN=your.transfer.xmi <-- XMI File //RECV370.SYSUT2 DD DSN=&&XMIPDS,DISP=(,PASS), // UNIT=SYSDA,SPACE=&DSPACE //* //CNTL EXEC RECV,TYP=CNTL //RECV370.SYSUT2 DD DDNAME=&TYP //CNTL DD DSN=&HLQ..&VRM..CNTL,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(20,10,10)), // DISP=&DDISP //* //HELP EXEC RECV,TYP=HELP //RECV370.SYSUT2 DD DDNAME=&TYP //HELP DD DSN=&HLQ..&VRM..HELP,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP //* //CLIST EXEC RECV,TYP=CLIST //RECV370.SYSUT2 DD DDNAME=&TYP //CLIST DD DSN=&HLQ..&VRM..CLIST,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP //* //ISPF EXEC RECV,TYP=ISPF //RECV370.SYSUT2 DD DDNAME=&TYP //ISPF DD DSN=&HLQ..&VRM..ISPF,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(05,05,10)), // DISP=&DDISP //* //ASM EXEC RECV,TYP=ASM //RECV370.SYSUT2 DD DDNAME=&TYP //ASM DD DSN=&HLQ..&VRM..ASM,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(10,10,10)), // DISP=&DDISP //* //MACLIB EXEC RECV,TYP=MACLIB //RECV370.SYSUT2 DD DDNAME=&TYP //MACLIB DD DSN=&HLQ..&VRM..MACLIB,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP // ______________________________________________________________________ Figure 1a: $RECVXMI.JCL ______________________________________________________________________ //RECV000B JOB (SYS),'TSO RECEIVE XMI', <-- Review and Modify // CLASS=A,MSGCLASS=X,REGION=0M, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * JOB: $RECVTSO TSO RECEIVE APPLICATION XMI FILES * //* * for DSMON software distribution * //* -------------------------------------------------------* //* //* This JOB executes two steps: //* //* 1) IDCAMS to ensure parent HLQ alias (SHRABIT) is //* defined on master catalog //* Note: Alias definition bypassed if alias already //* ----- defined. //* //* 2) Executes TSO in BATCH mode and issues //* TSO RECEIVE commands to load the XMI distribution //* library (an XMI SEQ dataset) to a temporary PDS. //* Each software PDS is loaded from before deleting //* temporary PDS. //* //* //* This JCL may be modified to suit your installation //* needs. //* //* The TSO RECEIVE commands use INdataset, DAtaset, VOL, //* and NOPRompt parms. //* //* //* -------------------------------------------------------* //* * * //* * PROC: PBTSO * //* * Batch TSO * //* * * //* -------------------------------------------------------* //PBTSO PROC //STEP01 EXEC PGM=IKJEFT01 //SYSPROC DD DISP=SHR,DSN=SYS2.CMDPROC //*STEPLIB DD DISP=SHR,DSN=SYS2.LINKLIB //SYSPRINT DD SYSOUT=* //SYSTSPRT DD SYSOUT=* //SYSTSIN DD DUMMY Command Line Input //* // PEND //* //* -------------------------------------------------------* //* Ensure parent HLQ alias is declared //* -------------------------------------------------------* //DEFALIAS EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * PARM GRAPHICS(CHAIN(SN)) LISTCAT ALIAS ENT(SHRABIT) /* Review and modify catalog name below */ IF LASTCC NE 0 THEN - DEFINE ALIAS(NAME(SHRABIT) RELATE(SYS1.UCAT.MVS)) /* //* //* -------------------------------------------------------* //* TSO RECEIVE DSMON Software Distribution //* -------------------------------------------------------* //TSORCV EXEC PBTSO //* -------------------------------------------------------* //* Review and Modify the DSN of the transferred XMI <----- //* used in the TSO RECEIVE SYSTSIN DD. <----- //* -------------------------------------------------------* //STEP01.SYSTSIN DD * /* Modify 'SHRABIT.' with your parent HLQ, if different */ /* Modify 'your.transfer.xmi' with transferred XMI SEQ DSN */ /* Modify 'volser' with VOLSER on your system */ RECEIVE IN('your.transfer.xmi') - DA('SHRABIT.DSMON.V0R9M00.XMIPDS') - VOL(volser) NOPROMPT /* Receive CNTL */ RECEIVE IN('SHRABIT.DSMON.V0R9M00.XMIPDS(CNTL)') - DA('SHRABIT.DSMON.V0R9M00.CNTL') - VOL(volser) NOPROMPT /* Receive HELP */ RECEIVE IN('SHRABIT.DSMON.V0R9M00.XMIPDS(HELP)') - DA('SHRABIT.DSMON.V0R9M00.HELP') - VOL(volser) NOPROMPT /* Receive CLIST */ RECEIVE IN('SHRABIT.DSMON.V0R9M00.XMIPDS(CLIST)') - DA('SHRABIT.DSMON.V0R9M00.CLIST') - VOL(volser) NOPROMPT /* Receive ISPF */ RECEIVE IN('SHRABIT.DSMON.V0R9M00.XMIPDS(ISPF)') - DA('SHRABIT.DSMON.V0R9M00.ISPF') - VOL(volser) NOPROMPT /* Receive ASM */ RECEIVE IN('SHRABIT.DSMON.V0R9M00.XMIPDS(ASM)') - DA('SHRABIT.DSMON.V0R9M00.ASM') - VOL(volser) NOPROMPT /* Receive MACLIB */ RECEIVE IN('SHRABIT.DSMON.V0R9M00.XMIPDS(MACLIB)') - DA('SHRABIT.DSMON.V0R9M00.MACLIB') - VOL(volser) NOPROMPT /* Delete XMIPDS */ DELETE 'SHRABIT.DSMON.V0R9M00.XMIPDS' /* // ______________________________________________________________________ Figure 1b: $RECVTSO.JCL a) Transfer DSMON.V0R9M00.XMI to MVS using your 3270 emulator. Make note of the DSN assigned on MVS transfer. Use transfer IND$FILE options: NEW BLKSIZE=3200 LRECL=80 RECFM=FB - or - NEW BLKSIZE(3200) LRECL(80) RECFM(FB) Ensure the DSN on MVS exists with the correct DCB information: ORG=PS BLKSIZE=3200 LRECL=80 RECFM=FB b) If using RECV370 to load XMI, Copy and paste the $RECVXMI JCL to a PDS member, update JOB statement to conform to your installation standard. - or - If using TSO RECEIVE to load XMI, Copy and paste the $RECVTSO JCL to a PDS member, update JOB statement to conform to your installation standard. c) The first step ensures the HLQ alias is defined and the subsequent steps perform the XMI load. Review JCL and apply any modifications per your installation including the DSN assigned during the transfer above for the XMI file. d) Submit the job. e) Review job output for successful load of the following PDSs: SHRABIT.DSMON.V0R9M00.ASM SHRABIT.DSMON.V0R9M00.CLIST SHRABIT.DSMON.V0R9M00.CNTL SHRABIT.DSMON.V0R9M00.HELP SHRABIT.DSMON.V0R9M00.ISPF SHRABIT.DSMON.V0R9M00.MACLIB f) Subsequent installation steps will be submitted from members contained in the CNTL data set. g) Proceed to STEP 6. **** +--------------------------------------------------------------------+ | Step 3. Define Alias for HLQ DSMON in MVS User Catalog | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.DSMON.V0R9M00.CNTL($INST00) | +--------------------------------------------------------------------+ ______________________________________________________________________ //DSMON000 JOB (SYS),'Def DSMON Alias', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * DSMON for MVS3.8J TSO / Hercules * //* * JOB: $INST00 Define Alias for parent HLQ SHRABIT * //* * Note: The master catalog password may be required * //* -------------------------------------------------------* //DEFALIAS EXEC PGM=IDCAMS //SYSPRINT DD SYSOUT=* //SYSIN DD * PARM GRAPHICS(CHAIN(SN)) LISTCAT ALIAS ENT(SHRABIT) /* Review and Modify catalog name below */ IF LASTCC NE 0 THEN - DEFINE ALIAS(NAME(SHRABIT) RELATE(SYS1.UCAT.MVS)) /* // ______________________________________________________________________ Figure 2: $INST00 JCL Note: This distribution is installed under the HLQ alias SHRABIT. $INST00 bypasses the DEFINE ALIAS action when the alias is already defined. a) Copy and paste the above JCL to a PDS member, update JOB statement to conform to your installation standard. b) Submit the job. c) Review job output for successful DEFINE ALIAS. Note: When $INST00 runs for the first time, Job step DEFALIAS returns RC=0004 due to LISTCAT ALIAS function completing with condition code of 4 and DEFINE ALIAS function completing with condition code of 0. Note: When $INST00 runs after the ALIAS is defined, Job step DEFALIAS returns RC=0000 due to LISTCAT ALIAS function completing with condition code of 0 and DEFINE ALIAS function being bypassed. +--------------------------------------------------------------------+ | Step 4. Load CNTL data set from distribution tape | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.DSMON.V0R9M00.CNTL($INST01) | +--------------------------------------------------------------------+ ______________________________________________________________________ //DSMON001 JOB (SYS),'Install CNTL PDS', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * DSMON for MVS3.8J TSO / Hercules * //* * JOB: $INST01 Load CNTL PDS from distribution tape * //* * Note: Uses tape drive 480 * //* -------------------------------------------------------* //LOADCNTL PROC THLQ=DSMON,TVOLSER=VS0900, // HLQ='SHRABIT.DSMON',VRM=V0R9M00, // DDISP='(,CATLG,DELETE)', // TUNIT=480,DVOLSER=PUB006,DUNIT=DISK <-- Review and Modify //LOAD001 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //INCNTL DD DSN=&THLQ..&VRM..CNTL.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(1,SL) //CNTL DD DSN=&HLQ..&VRM..CNTL,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(20,10,10)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) // PEND //STEP001 EXEC LOADCNTL Load CNTL PDS //SYSIN DD * COPY INDD=INCNTL,OUTDD=CNTL // ______________________________________________________________________ Figure 3: $INST01 JCL a) Before submitting the above job, the distribution tape must be made available to MVS by issuing the following command from the Hercules console: DEVINIT 480 X:\dirname\DSMON.V0R9M00.HET READONLY=1 where X:\dirname is the complete path to the location of the Hercules Emulated Tape file. b) Issue the following command from the MVS console to vary device 480 online: V 480,ONLINE c) Copy and paste the above JCL to a PDS member, update JOB statement to conform to your installation standard. Review JCL and apply any modifications per your installation. d) Submit the job. e) Review job output for successful load of the CNTL data set. f) Subsequent installation steps will be submitted from members contained in the CNTL data set. +--------------------------------------------------------------------+ | Step 5. Load Other data sets from distribution tape | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.DSMON.V0R9M00.CNTL($INST02) | +--------------------------------------------------------------------+ ______________________________________________________________________ //DSMON002 JOB (SYS),'Install Other PDSs', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * DSMON for MVS3.8J TSO / Hercules * //* * JOB: $INST02 Load other PDS from distribution tape * //* * Tape Volume: File 1 - CNTL * //* * File 2 - CLIST * //* * File 3 - HELP * //* * File 4 - ISPF * //* * File 5 - ASM * //* * File 6 - MACLIB * //* * Note: Default TAPE=480, DASD=DISK on PUB006 * //* -------------------------------------------------------* //LOADOTHR PROC THLQ=DSMON,TVOLSER=VS0900, // HLQ='SHRABIT.DSMON',VRM=V0R9M00, // DDISP='(,CATLG,DELETE)', // TUNIT=480,DVOLSER=PUB006,DUNIT=DISK <-- Review and Modify //LOAD02 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //INCLIST DD DSN=&THLQ..&VRM..CLIST.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(2,SL) //INHELP DD DSN=&THLQ..&VRM..HELP.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(3,SL) //INISPF DD DSN=&THLQ..&VRM..ISPF.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(4,SL) //INASM DD DSN=&THLQ..&VRM..ASM.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(5,SL) //INMACLIB DD DSN=&THLQ..&VRM..MACLIB.TAPE,UNIT=&TUNIT, // VOL=SER=&TVOLSER,DISP=OLD,LABEL=(6,SL) //CLIST DD DSN=&HLQ..&VRM..CLIST,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //HELP DD DSN=&HLQ..&VRM..HELP,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //ISPF DD DSN=&HLQ..&VRM..ISPF,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(05,05,10)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //ASM DD DSN=&HLQ..&VRM..ASM,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(10,10,10)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) //MACLIB DD DSN=&HLQ..&VRM..MACLIB,UNIT=&DUNIT,VOL=SER=&DVOLSER, // SPACE=(TRK,(02,02,02)), // DISP=&DDISP, // DCB=(RECFM=FB,LRECL=80,BLKSIZE=3600) // PEND //* //STEP001 EXEC LOADOTHR Load ALL other PDSs //SYSIN DD * COPY INDD=INCLIST,OUTDD=CLIST COPY INDD=INHELP,OUTDD=HELP COPY INDD=INISPF,OUTDD=ISPF COPY INDD=INASM,OUTDD=ASM COPY INDD=INMACLIB,OUTDD=MACLIB // ______________________________________________________________________ Figure 4: $INST02 JCL a) Member $INST02 installs remaining data sets from distribution tape. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Before submitting the above job, the distribution tape must be made available to MVS by issuing the following command from the Hercules console: DEVINIT 480 X:\dirname\DSMON.V0R9M00.HET READONLY=1 where X:\dirname is the complete path to the location of the Hercules Emulated Tape file. d) Issue the following command from the MVS console to vary device 480 online: V 480,ONLINE e) Submit the job. f) Review job output for successful loads. +--------------------------------------------------------------------+ | Step 6. FULL or UPGRADE Installation | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.DSMON.V0R9M00.CNTL($UP0900) | +--------------------------------------------------------------------+ ______________________________________________________________________ //DSMON00U JOB (SYS),'Upgrade DSMON', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * DSMON for MVS3.8J TSO / Hercules * //* * * //* * JOB: $UP0900 Upgrade DSMON Software * //* * Upgrade to release V0R9M00 from VxRxMxx * //* * * //* * Review JCL before submitting!! * //* -------------------------------------------------------* //* //* -------------------------------------------------------* //* * No upgrades for V0R9M00 * //* -------------------------------------------------------* //DSMON EXEC PGM=IEFBR14 //* // ______________________________________________________________________ Figure 5: $UP0900.JCL Upgrade from previous version to V0R9M00 a) If this is the INITIAL software distribution, proceed to STEP 7. b) This software may be installed in FULL or UPGRADE from a prior version. Note: If the installed software version is NOT the most recent ----- PREVIOUS version, perform a FULL install. Note: If the installed software version is customized, a manual ----- review and evaluation is suggested to properly incorporate customizations into this software distribution before proceeding with the installation. Refer to the $UPvrmm.JCL members for upgraded software components being installed. Note: $UPvrmm.JCL members exist in each software version. ----- For example, V1R3M00 software contains $UP1300.JCL to upgrade from previous V1R2M00 distribution. For example, V1R2M00 software contains $UP1200.JCL to upgrade from previous V1R1M00 distribution. c) If a FULL install of this software distribution is elected regardless of previous version installed on your system, proceed to STEP 7. d) If this is an UPGRADE from the PREVIOUS version, execute the below JCL based on current installed version: - V0R9M00 is initial release, thus, no updates available! e) After upgrade is applied, proceed to validation, STEP 11. +--------------------------------------------------------------------+ | Step 7. Install TSO parts | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.DSMON.V0R9M00.CNTL($INST03) | +--------------------------------------------------------------------+ ______________________________________________________________________ //DSMON003 JOB (SYS),'Install TSO Parts', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * DSMON for MVS3.8J TSO / Hercules * //* * * //* * JOB: $INST03 Install TSO parts * //* * * //* * Note: Duplicate members are over-written. * //* -------------------------------------------------------* //STEP001 EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //INCLIST DD DSN=SHRABIT.DSMON.V0R9M00.CLIST,DISP=SHR //INHELP DD DSN=SHRABIT.DSMON.V0R9M00.HELP,DISP=SHR //OUTCLIST DD DSN=SYS2.CMDPROC,DISP=SHR <-- Review and Modify //OUTHELP DD DSN=SYS2.HELP,DISP=SHR <-- Review and Modify //SYSIN DD * COPY INDD=((INCLIST,R)),OUTDD=OUTCLIST SELECT MEMBER=C$DSMON COPY INDD=((INHELP,R)),OUTDD=OUTHELP SELECT MEMBER=C$DSMON /* // ______________________________________________________________________ Figure 6: $INST03 JCL a) Member $INST03 installs TSO component(s). Note: If no TSO components are included for this distribution, ----- RC = 4 is returned by the corresponding IEBCOPY step. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Submit the job. d) Review job output for successful load(s). +--------------------------------------------------------------------+ | Step 8. Install DSMON Software | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.DSMON.V0R9M00.CNTL($INST04) | +--------------------------------------------------------------------+ ______________________________________________________________________ //DSMON004 JOB (SYS),'Install DSMON', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * DSMON for MVS3.8J TSO / Hercules * //* * * //* * JOB: $INST04 Install DSMON Programs * //* * * //* * - Install libraries marked... * //* * - Search for '<--TARGET' * //* * - Update install libraries per your * //* * installation standard * //* * * //* -------------------------------------------------------* //* //* //* -------------------------------------------------------* //* * IEFBR14 * //* -------------------------------------------------------* //DUMMY EXEC PGM=IEFBR14 //SYSPRINT DD SYSOUT=* //* // ______________________________________________________________________ Figure 7: $INST04 JCL a) Member $INST04 installs program(s). Note: If no components are included for this distribution, ----- an IEFBR14 step is executed. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Submit the job. d) Review job output for successful completion. +--------------------------------------------------------------------+ | Step 9. Install ISPF parts | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.DSMON.V0R9M00.CNTL($INST05) | +--------------------------------------------------------------------+ ______________________________________________________________________ //DSMON005 JOB (SYS),'Install ISPF Parts', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * DSMON in MVS3.8J TSO / Hercules * //* * * //* * JOB: $INST05 Install ISPF parts * //* * * //* * Note: Duplicate members are over-written. * //* * * //* * * //* * - Uses ISPF 2.1 product from Wally Mclaughlin * //* * - Install libraries marked... * //* * - Search for '<--TARGET' * //* * - Update install libraries per your * //* * installation standard * //* * * //* -------------------------------------------------------* //* //* -------------------------------------------------------* //* * * //* * PROC: PARTSISPF * //* * Copy ISPF Parts * //* * * //* -------------------------------------------------------* //PARTSI PROC HLQ=MYHLQ,VRM=VXRXMXX, // CLIB='XXXXXXXX.ISPCLIB', // MLIB='XXXXXXXX.ISPMLIB', // PLIB='XXXXXXXX.ISPPLIB', // SLIB='XXXXXXXX.ISPSLIB', // TLIB='XXXXXXXX.ISPTLIB' //* //* -------------------------------------------------------* //* * * //* * CLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPCLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPCLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDCLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //CLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //CLIBOUT DD DSN=&CLIB,DISP=SHR //SYSIN DD DUMMY //* //* -------------------------------------------------------* //* * * //* * MLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPMLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPMLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDMLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //MLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //MLIBOUT DD DSN=&MLIB,DISP=SHR //SYSIN DD DUMMY //* //* -------------------------------------------------------* //* * * //* * PLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPPLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPPLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDPLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //PLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //PLIBOUT DD DSN=&PLIB,DISP=SHR //SYSIN DD DUMMY //* //* -------------------------------------------------------* //* * * //* * SLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPSLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPSLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDSLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //SLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //SLIBOUT DD DSN=&SLIB,DISP=SHR //SYSIN DD DUMMY //* //* //* -------------------------------------------------------* //* * * //* * TLIB Member Installation * //* * * //* * Suggested Location: * //* * DSN defined or concatenated to ISPTLIB DD * //* * * //* * Note: If you use a new PDS, it must be defined * //* * before executing this install job AND the * //* * ISPF start-up procedure should include the * //* * new PDS in the ISPTLIB allocation step. * //* * * //* -------------------------------------------------------* //ADDTLIB EXEC PGM=IEBCOPY //SYSPRINT DD SYSOUT=* //TLIBIN DD DSN=&HLQ..&VRM..ISPF,DISP=SHR //TLIBOUT DD DSN=&TLIB,DISP=SHR //SYSIN DD DUMMY //* // PEND //* //ISPF EXEC PARTSI,HLQ='SHRABIT.DSMON',VRM=V0R9M00, // CLIB='XXXXXXXX.ISPCLIB', <--TARGET // MLIB='XXXXXXXX.ISPMLIB', <--TARGET // PLIB='XXXXXXXX.ISPPLIB', <--TARGET // SLIB='XXXXXXXX.ISPSLIB', <--TARGET // TLIB='XXXXXXXX.ISPTLIB' <--TARGET //ADDCLIB.SYSIN DD * CLIB COPY INDD=((CLIBIN,R)),OUTDD=CLIBOUT SELECT MEMBER=NO#MBR# /*dummy entry no mbrs! */ //ADDMLIB.SYSIN DD * MLIB COPY INDD=((MLIBIN,R)),OUTDD=MLIBOUT SELECT MEMBER=NO#MBR# /*dummy entry no mbrs! */ //ADDPLIB.SYSIN DD * PLIB COPY INDD=((PLIBIN,R)),OUTDD=PLIBOUT SELECT MEMBER=TDSMN001 SELECT MEMBER=TDSMN002 SELECT MEMBER=TDSMN003 SELECT MEMBER=TDSMN004 SELECT MEMBER=TDSMN005 SELECT MEMBER=TDSMN100 SELECT MEMBER=TDSMNA01 SELECT MEMBER=TDSMNA02 SELECT MEMBER=TDSMNB01 SELECT MEMBER=TDSMNC01 SELECT MEMBER=TDSMNC02 SELECT MEMBER=TDSMNC03 SELECT MEMBER=TDSMND01 SELECT MEMBER=TDSMND02 SELECT MEMBER=TDSMNZ01 SELECT MEMBER=TDSMNZ02 SELECT MEMBER=TDSMNZ80 //ADDSLIB.SYSIN DD * SLIB COPY INDD=((SLIBIN,R)),OUTDD=SLIBOUT SELECT MEMBER=NO#MBR# /*dummy entry no mbrs! */ //ADDTLIB.SYSIN DD * TLIB COPY INDD=((TLIBIN,R)),OUTDD=TLIBOUT SELECT MEMBER=NO#MBR# /*dummy entry no mbrs! */ // ______________________________________________________________________ Figure 8: $INST05 JCL a) Member $INST05 installs ISPF component(s). Note: If no ISPF components are included for this distribution, ----- RC = 4 is returned by the corresponding IEBCOPY step. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Review and update DD statements for ISPCLIB (clist), ISPMLIB (messages), and/or ISPPLIB (panel) library names. The DD statements are tagged with '<--TARGET'. d) Submit the job. e) Review job output for successful load(s). +--------------------------------------------------------------------+ | Step 10. Install Other Software | +--------------------------------------------------------------------+ | JCL Member: SHRABIT.DSMON.V0R9M00.CNTL($INST40) | +--------------------------------------------------------------------+ ______________________________________________________________________ //DSMON040 JOB (SYS),'Install Other Pgms', <-- Review and Modify // CLASS=A,MSGCLASS=X, <-- Review and Modify // MSGLEVEL=(1,1),NOTIFY=&SYSUID <-- Review and Modify //* -------------------------------------------------------* //* * DSMON for MVS3.8J TSO / Hercules * //* * * //* * JOB: $INST40 Install Other Software * //* * Install xxxxxx Programs * //* * * //* * * //* -------------------------------------------------------* //* //* -------------------------------------------------------* //* * IEFBR14 * //* -------------------------------------------------------* //DUMMY EXEC PGM=IEFBR14 //SYSPRINT DD SYSOUT=* //* // ______________________________________________________________________ Figure 9: $INST40 JCL a) Member $INST40 installs additional software. Note: If no other software is included for this distribution, ----- an IEFBR14 step is executed. b) Review and update JOB statement and other JCL to conform to your installation standard. c) Submit the job. d) Review job output for successful completion. +--------------------------------------------------------------------+ | Step 11. Validate DSMON | +--------------------------------------------------------------------+ a) From the ISPF Main Menu, enter the following command: TSO C$DSMON DSL("HERC01.TEST") b) A respresentative response is: ________________________________________________________________________________ ==> ***** D A T A S E T M O N I T O R ***** ==> OPTIONS IN EFFECT: DSL("HERC01.TEST") ==> DSL REQUEST ONLY WITH DEFAULT THRESHOLD OF 3 ==> RC=00: 6 DATASETS FOR LEVEL HERC01.TEST.* ** EXCEEDS THRESHOLD OF 3 ** REQUESTS:1 PROCESSED:1 RUN STATS: 0.15 SECONDS 274 SERVICE UNITS *** ________________________________________________________________________________ Figure 10: C$DSMON representative validation messages c) Validation is complete. +--------------------------------------------------------------------+ | Step 12. Done | +--------------------------------------------------------------------+ a) Congratulations! You completed the installation for DSMON. +--------------------------------------------------------------------+ | Step 13. Implement C$DSMON | +--------------------------------------------------------------------+ a) C$DSMON is supplied with 10 dataset level and threshold limit entries as user input template file. b) Start an EDIT session for your PDS userid.TEST.CNTL. A member list will display. c) Edit member DSM$USR from the command line using - E DSM$USR d) Copy DSM$USR template using the copy command - COPY 'SHRABIT.DSMON.V0R9M00.CNTL(DSM$USR)' e) SAVE DSM$USR. Defer personal customization for now. f) Execute C$DSMON from the EDIT command line using - TSO C$DSMON g) Representative response is below: ________________________________________________________________________________ ==> ***** D A T A S E T M O N I T O R ***** ==> OPTIONS IN EFFECT: **NONE** ==> USER ENTRIES FROM: LARRY01.TEST.CNTL(DSM$USR) ==> RC=00: 28 DATASETS FOR LEVEL LARRY01.TEST.* ** EXCEEDS THRESHOLD OF 10 ** ==> RC=00: 5 DATASETS FOR LEVEL LARRY01.CARDS.* ==> RC=00: 73 DATASETS FOR LEVEL LARRY01.LOGIT.* ** EXCEEDS THRESHOLD OF 3 ** LIMIT NOT NUMERIC, USING 3 ==> RC=00: 19 DATASETS FOR LEVEL LARRY01.LISTIT.* ** EXCEEDS THRESHOLD OF 10 ** ==> RC=00: 1 DATASET FOR LEVEL LARRY01.CATMGT.* ==> RC=00: 2 DATASETS FOR LEVEL LARRY01.COMPARE.* ==> RC=00: 2 DATASETS FOR LEVEL LARRY01.VTOCOUT.* ==> RC=04: 0 DATASETS FOR LEVEL LARRY01.PRTSCR.* ==> RC=04: 0 DATASETS FOR LEVEL LARRY01.CLOC8.* ==> RC=04: 0 DATASETS FOR LEVEL LARRY01.CPRT36.* EOF RECORD DETECTED... // REQUESTS:10 PROCESSED:10 RUN STATS: 1.64 SECONDS 2907 SERVICE UNITS *** ________________________________________________________________________________ Figure 11: C$DSMON representative user install messages h) C$DSMON is a personal dataset monitor. At this point, EDIT DSM$USR member and customize per your user needs. Although C$DSMON uses a default DSN of userid.TEST.CNTL(DSM$USR), the DSN and MEMBER can be overriden. See C$DSMON HELP file or CLIST for more information. i) C$DSMON can be executed manually or automated (e.g. part of a start up CLIST). Enjoy DSMON for TSO or ISPF 2.x on MVS 3.8J! ====================================================================== * IV. S o f t w a r e I n v e n t o r y L i s t | ====================================================================== - SHRABIT.DSMON.V0R9M00.ASM . README Dummy member, this is intentional - SHRABIT.DSMON.V0R9M00.CLIST . C$DSMON Personal Dataset Monitor CLIST - SHRABIT.DSMON.V0R9M00.CNTL . $INST00 Define Alias for HLQ . $INST01 Load CNTL data set from distribution tape (HET) . $INST02 Load other data sets from distribution tape (HET) . $INST03 Install TSO Parts . $INST04 Install DSMON Software . $INST05 Install ISPF Parts . $INST40 Install Other Software . $RECVTSO Receive XMI SEQ to MVS PDSs via TSO RECEIVE . $RECVXMI Receive XMI SEQ to MVS PDSs via RECV370 . $UP0900 Upgrade to V0R9M00 from VxRxMxx . DSCLAIMR Disclaimer . PREREQS Required User-mods . README Documentation and Installation instructions . DSM$USR Template User C$DSMON input dataset - SHRABIT.DSMON.V0R9M00.HELP . C$DSMON Personal Dataset Monitor HELP file - SHRABIT.DSMON.V0R9M00.ISPF . TDSMN100 DSMON Tutorial Panel Main Menu . TDSMN001 DSMON Tutorial Panel Overview 1 . TDSMN002 DSMON Tutorial Panel Overview 2 . TDSMN003 DSMON Tutorial Panel Overview 3 . TDSMN004 DSMON Tutorial Panel Overview 4 . TDSMN005 DSMON Tutorial Panel Overview 5 . TDSMNA01 DSMON Tutorial Panel Search Request 1 . TDSMNA02 DSMON Tutorial Panel Search Request 2 . TDSMNB01 DSMON Tutorial Panel Display Defaults 1 . TDSMNC01 DSMON Tutorial Panel Result Snippets 1 . TDSMNC02 DSMON Tutorial Panel Result Snippets 2 . TDSMNC03 DSMON Tutorial Panel Result Snippets 3 . TDSMND01 DSMON Tutorial Panel SYSOUT Report 1 . TDSMND02 DSMON Tutorial Panel SYSOUT Report 2 . TDSMNZ01 DSMON Tutorial Panel Change Log 1 . TDSMNZ02 DSMON Tutorial Panel Change Log 2 . TDSMNZ80 DSMON Tutorial Panel Limitations - SHRABIT.DSMON.V0R9M00.MACLIB . README Dummy member, this is intentional - After downloading any other required software, consult provided documentation including any configuration steps (if applicable) for software and HELP file installation. $ - Denotes modified software component for THIS DISTRIBUTION relative to prior DISTRIBUTION # - Denotes new software component for THIS DISTRIBUTION relative to prior DISTRIBUTION

  • Click here to download zip file to your PC local drive.

Closing

Stay aware of personal dataset inventory on MVS 3.8J with C$DSMON!

Please use the comment box below or the contact us link on the menu bar to communicate any suggestions, improvements, corrections or issues regarding this post.

Version History

*
*
*  MM/DD/CCYY Version  Change Description
*  ---------- -------  -----------------------------------------------
*  02/18/2025 0.9.00   Initial version released to MVS 3.8J
*                      hobbyist public domain
*

Implementing C$DSMON

Implementations vary on user installation needs and/or requirements!

Being a personal DSN monitor, I elected to execute C$DSMON with LOG option every time I sign-on to TSO as part of AUTOEXEC (ISPFAUTO add-on). The monitor process is quick and alerts are posted to terminal display and logged for later reference

Another option or use – manually run the monitor at will from the TSO READY prompt or ISPF COMMAND line.

Feel free to share your C$DSMON implementation using the comment box below.

Leave a Reply

Your email address will not be published. Required fields are marked *


CAPTCHA Image
Reload Image

This site uses Akismet to reduce spam. Learn how your comment data is processed.