mvs3.8j and using smp4 to locate where a OS module is used

In trying to make modifications to some of the supplied operating code I was finding it quite frustrating going through the source code trying to guess which FMID I needed to apply module changes to. In many cases I was guessing through a range of FMIDs documented as being installed on the Turnkey3 documentation pages until I found one that didn’t report a mismatch.

One issue with that approach was it identified some of the FMIDs had PTFs installed that were not documented in the installed PTF documentation page on the Turnkey3 site. At that point I decided to read the SMP4 manual.

And joy, SMP provides a function that will tell you exactly what executable load module a program I am enhancing (or breaking) will be linked into along with the FMID.

A batch job to do that is

//MARKSMPL JOB  (SMP),'LIST SMP4 INFO',CLASS=A,MSGCLASS=A,REGION=4096K
//HMASMP  EXEC PGM=HMASMP,PARM='DATE=U',REGION=5120K,TIME=1440
//SYSUT1   DD  UNIT=WORK,SPACE=(1700,(600,100))
//SYSUT2   DD  UNIT=WORK,SPACE=(1700,(600,100))
//SYSUT3   DD  UNIT=WORK,SPACE=(1700,(600,100))
//SYSUT4   DD  UNIT=WORK,SPACE=(80,(2,2))
//SYSPRINT DD  SYSOUT=*
//ASMPRINT DD  SYSOUT=*
//CMPPRINT DD  SYSOUT=*
//COPPRINT DD  SYSOUT=*
//LKDPRINT DD  SYSOUT=*
//E37PRINT DD  SYSOUT=*
//UPDPRINT DD  SYSOUT=*
//ZAPPRINT DD  SYSOUT=*
//*************************** SMP DATASETS *********************
//SMPOUT   DD  SYSOUT=*
//SMPLOG   DD  DUMMY
//SMPTLIB  DD  UNIT=3350,VOL=SER=SMP004,DISP=OLD
//SMPACDS  DD  DISP=SHR,DSN=SYS1.SMPACDS
//SMPACRQ  DD  DISP=SHR,DSN=SYS1.SMPACRQ
//SMPCDS   DD  DISP=SHR,DSN=SYS1.SMPCDS
//SMPCRQ   DD  DISP=SHR,DSN=SYS1.SMPCRQ
//SMPMTS   DD  DISP=SHR,DSN=SYS1.SMPMTS
//SMPPTS   DD  DISP=SHR,DSN=SYS1.SMPPTS
//SMPSTS   DD  DISP=SHR,DSN=SYS1.SMPSTS
//SMPSCDS  DD  DISP=SHR,DSN=SYS1.SMPSCDS
//SMPWRK1  DD  UNIT=WORK,SPACE=(CYL,(5,10,84)),DCB=(BLKSIZE=3120,
//             LRECL=80)
//SMPWRK2  DD  UNIT=WORK,SPACE=(CYL,(5,10,84)),DCB=(BLKSIZE=3120,
//             LRECL=80)
//SMPWRK3  DD  UNIT=WORK,SPACE=(CYL,(5,10,84)),DCB=(BLKSIZE=3120,
//             LRECL=80)
//SMPWRK4  DD  UNIT=WORK,SPACE=(CYL,(1,10,84)),DCB=(BLKSIZE=3120,
//             LRECL=80)
//SMPWRK5  DD  UNIT=WORK,SPACE=(CYL,(30,10,250))
//************************ DO SOME LISTING **********************
//SMPPTFIN DD   DUMMY
//SMPCNTL  DD   *
 LIST CDS MOD(IEFAB421) XREF .
 LIST CDS MOD(IEFAB434) XREF .
/*
//

Which provides the information I needed to determine exactly what my changed code will affect when it is installed as a usermod.

     DATE 14.351  TIME 09:41:55      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0001

HMA4240    HMASMP EXEC PARM = 'DATE=U'
 LIST CDS MOD(IEFAB421) XREF .
     DATE 14.351  TIME 09:41:55      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0002

SMPCDS  MODULE ENTRIES


  NAME

IEFAB421  LASTUPD         = JCLIN    TYPE=UPD
          LIBRARIES       = DISTLIB=AOSB3
          FMID            = FBB1221
          RMID            = UZ58427
          LMOD            = IEFW21SD
          SYSMOD HISTORY  = SYSMOD   TYPE       DATE   MCS       ---------- STATUS ----------
                            EBB1102  FUNCTION  00.000  MOD                 ACC            RGN
                            FBB1221  FUNCTION  00.000  MOD                 ACC            RGN
                            UZ58427  PTF       74.164  MOD       APP       ACC

     DATE 14.351  TIME 09:41:58      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0003

HMA2050    LIST PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00


 LIST CDS MOD(IEFAB434) XREF .
     DATE 14.351  TIME 09:41:58      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0004

SMPCDS  MODULE ENTRIES


  NAME

IEFAB434  LASTUPD         = JCLIN    TYPE=UPD
          LIBRARIES       = DISTLIB=AOSB3
          FMID            = EBB1102
          RMID            = UZ59776
          LMOD            = IEFW21SD
          SYSMOD HISTORY  = SYSMOD   TYPE       DATE   MCS       ---------- STATUS ----------
                            EBB1102  FUNCTION  00.000  MOD                 ACC            RGN

     DATE 14.351  TIME 09:42:02      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0005

HMA2050    LIST PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00

It will also provide a full summary of everything belonging to a function if you use “LIST CDS SYSMOD FUNCTION .” But thats a lot of output so not listed here.

The SMP4 manual at the mvs3.8j level is available at bitsavers.org, but as I refer to it a lot it is also available here as GC28-0673-6_SMP_SysPgmrGde_Sep80OCR.pdf.

About mark

At work, been working on Tandems for around 30yrs (programming + sysadmin), plus AIX and Solaris sysadmin also thrown in during the last 20yrs; also about 5yrs on MVS (mainly operations and automation but also smp/e work). At home I have been using linux for decades. Programming background is commercially in TAL/COBOL/SCOBOL/C(Tandem); 370 assembler(MVS); C, perl and shell scripting in *nix; and Microsoft Macro Assembler(windows).
This entry was posted in MVS3.8J. Bookmark the permalink.