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.