{"id":576,"date":"2014-12-17T09:54:19","date_gmt":"2014-12-16T21:54:19","guid":{"rendered":"http:\/\/mdickinson.dyndns.org\/php\/wordpress\/?p=576"},"modified":"2014-12-17T09:54:19","modified_gmt":"2014-12-16T21:54:19","slug":"mvs3-8j-and-using-smp4-to-locate-where-a-os-module-is-used","status":"publish","type":"post","link":"https:\/\/mdickinson.dyndns.org\/php\/wordpress\/?p=576","title":{"rendered":"mvs3.8j and using smp4 to locate where a OS module is used"},"content":{"rendered":"<p>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&#8217;t report a mismatch.<\/p>\n<p>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.<\/p>\n<p>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.<\/p>\n<p>A batch job to do that is<\/p>\n<pre>\r\n\/\/MARKSMPL JOB  (SMP),'LIST SMP4 INFO',CLASS=A,MSGCLASS=A,REGION=4096K\r\n\/\/HMASMP  EXEC PGM=HMASMP,PARM='DATE=U',REGION=5120K,TIME=1440\r\n\/\/SYSUT1   DD  UNIT=WORK,SPACE=(1700,(600,100))\r\n\/\/SYSUT2   DD  UNIT=WORK,SPACE=(1700,(600,100))\r\n\/\/SYSUT3   DD  UNIT=WORK,SPACE=(1700,(600,100))\r\n\/\/SYSUT4   DD  UNIT=WORK,SPACE=(80,(2,2))\r\n\/\/SYSPRINT DD  SYSOUT=*\r\n\/\/ASMPRINT DD  SYSOUT=*\r\n\/\/CMPPRINT DD  SYSOUT=*\r\n\/\/COPPRINT DD  SYSOUT=*\r\n\/\/LKDPRINT DD  SYSOUT=*\r\n\/\/E37PRINT DD  SYSOUT=*\r\n\/\/UPDPRINT DD  SYSOUT=*\r\n\/\/ZAPPRINT DD  SYSOUT=*\r\n\/\/*************************** SMP DATASETS *********************\r\n\/\/SMPOUT   DD  SYSOUT=*\r\n\/\/SMPLOG   DD  DUMMY\r\n\/\/SMPTLIB  DD  UNIT=3350,VOL=SER=SMP004,DISP=OLD\r\n\/\/SMPACDS  DD  DISP=SHR,DSN=SYS1.SMPACDS\r\n\/\/SMPACRQ  DD  DISP=SHR,DSN=SYS1.SMPACRQ\r\n\/\/SMPCDS   DD  DISP=SHR,DSN=SYS1.SMPCDS\r\n\/\/SMPCRQ   DD  DISP=SHR,DSN=SYS1.SMPCRQ\r\n\/\/SMPMTS   DD  DISP=SHR,DSN=SYS1.SMPMTS\r\n\/\/SMPPTS   DD  DISP=SHR,DSN=SYS1.SMPPTS\r\n\/\/SMPSTS   DD  DISP=SHR,DSN=SYS1.SMPSTS\r\n\/\/SMPSCDS  DD  DISP=SHR,DSN=SYS1.SMPSCDS\r\n\/\/SMPWRK1  DD  UNIT=WORK,SPACE=(CYL,(5,10,84)),DCB=(BLKSIZE=3120,\r\n\/\/             LRECL=80)\r\n\/\/SMPWRK2  DD  UNIT=WORK,SPACE=(CYL,(5,10,84)),DCB=(BLKSIZE=3120,\r\n\/\/             LRECL=80)\r\n\/\/SMPWRK3  DD  UNIT=WORK,SPACE=(CYL,(5,10,84)),DCB=(BLKSIZE=3120,\r\n\/\/             LRECL=80)\r\n\/\/SMPWRK4  DD  UNIT=WORK,SPACE=(CYL,(1,10,84)),DCB=(BLKSIZE=3120,\r\n\/\/             LRECL=80)\r\n\/\/SMPWRK5  DD  UNIT=WORK,SPACE=(CYL,(30,10,250))\r\n\/\/************************ DO SOME LISTING **********************\r\n\/\/SMPPTFIN DD   DUMMY\r\n\/\/SMPCNTL  DD   *\r\n LIST CDS MOD(IEFAB421) XREF .\r\n LIST CDS MOD(IEFAB434) XREF .\r\n\/*\r\n\/\/\r\n<\/pre>\n<p>Which provides the information I needed to determine exactly what my changed code will affect when it is installed as a usermod.<\/p>\n<pre>\r\n     DATE 14.351  TIME 09:41:55      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0001\r\n\r\nHMA4240    HMASMP EXEC PARM = 'DATE=U'\r\n LIST CDS MOD(IEFAB421) XREF .\r\n     DATE 14.351  TIME 09:41:55      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0002\r\n\r\nSMPCDS  MODULE ENTRIES\r\n\r\n\r\n  NAME\r\n\r\nIEFAB421  LASTUPD         = JCLIN    TYPE=UPD\r\n          LIBRARIES       = DISTLIB=AOSB3\r\n          FMID            = FBB1221\r\n          RMID            = UZ58427\r\n          LMOD            = IEFW21SD\r\n          SYSMOD HISTORY  = SYSMOD   TYPE       DATE   MCS       ---------- STATUS ----------\r\n                            EBB1102  FUNCTION  00.000  MOD                 ACC            RGN\r\n                            FBB1221  FUNCTION  00.000  MOD                 ACC            RGN\r\n                            UZ58427  PTF       74.164  MOD       APP       ACC\r\n\r\n     DATE 14.351  TIME 09:41:58      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0003\r\n\r\nHMA2050    LIST PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00\r\n\r\n\r\n LIST CDS MOD(IEFAB434) XREF .\r\n     DATE 14.351  TIME 09:41:58      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0004\r\n\r\nSMPCDS  MODULE ENTRIES\r\n\r\n\r\n  NAME\r\n\r\nIEFAB434  LASTUPD         = JCLIN    TYPE=UPD\r\n          LIBRARIES       = DISTLIB=AOSB3\r\n          FMID            = EBB1102\r\n          RMID            = UZ59776\r\n          LMOD            = IEFW21SD\r\n          SYSMOD HISTORY  = SYSMOD   TYPE       DATE   MCS       ---------- STATUS ----------\r\n                            EBB1102  FUNCTION  00.000  MOD                 ACC            RGN\r\n\r\n     DATE 14.351  TIME 09:42:02      HMASMP LVL 04.48 MESSAGES AND CONTROL STATEMENTS                        PAGE 0005\r\n\r\nHMA2050    LIST PROCESSING COMPLETED - HIGHEST RETURN CODE IS 00\r\n<\/pre>\n<p>It will also provide a full summary of everything belonging to a function if you use &#8220;LIST CDS SYSMOD FUNCTION .&#8221; But thats a lot of output so not listed here.<\/p>\n<p>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 <a href=\"\/hercules\/manuals\/MVS\/GC28-0673-6_SMP_SysPgmrGde_Sep80OCR.pdf\">GC28-0673-6_SMP_SysPgmrGde_Sep80OCR.pdf<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>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 &hellip; <a href=\"https:\/\/mdickinson.dyndns.org\/php\/wordpress\/?p=576\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-576","post","type-post","status-publish","format-standard","hentry","category-mvs38j-on-hercules"],"_links":{"self":[{"href":"https:\/\/mdickinson.dyndns.org\/php\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/576","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mdickinson.dyndns.org\/php\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mdickinson.dyndns.org\/php\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mdickinson.dyndns.org\/php\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mdickinson.dyndns.org\/php\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=576"}],"version-history":[{"count":2,"href":"https:\/\/mdickinson.dyndns.org\/php\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/576\/revisions"}],"predecessor-version":[{"id":578,"href":"https:\/\/mdickinson.dyndns.org\/php\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/576\/revisions\/578"}],"wp:attachment":[{"href":"https:\/\/mdickinson.dyndns.org\/php\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=576"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mdickinson.dyndns.org\/php\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=576"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mdickinson.dyndns.org\/php\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}