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.