//TSGMXZ1I JOB (AD00),'#04D42 ZELDEN', // NOTIFY=&SYSUID, // CLASS=M,MSGCLASS=H,MSGLEVEL=(1,1) //************************************************************ //* NOTE: THE SMP/E GLOBAL ZONE AND ++VER MAY NEED TO BE //* ADJUSTED FOR THE CORRECT OS/390 & ISPF VERSION //* BEFORE RUNNING THIS JOB //************************************************************ //C EXEC PGM=ASMA90, // PARM='RENT,OBJECT,NODECK' //SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR // DD DSN=SYS1.MODGEN,DISP=SHR // DD DSN=SYS1.ISP.SISPMACS,DISP=SHR //SYSUT1 DD DSN=&&SYSUT1,SPACE=(CYL,(1,1),,,ROUND), // UNIT=SYSALLDA,DCB=BUFNO=1 //SYSPRINT DD SYSOUT=* //SYSLIN DD DSN=&&OBJ,SPACE=(CYL,(1,1)), // UNIT=SYSALLDA,DISP=(MOD,PASS), // DCB=(BLKSIZE=3040,LRECL=80,RECFM=FBS,BUFNO=1) //************************************************************ //SYSIN DD DATA,DLM=## TITLE 'ISPF EXIT 16 FOR LOG, LIST, AND TEMPORARY DATA SET NAMES' * THIS SAMPLE CODE PUTS THE SMFID INTO THE LOG,LIST AND * TEMPORARY DATA SET NAMES GENERATED BY ISPF. * EXAMPLES: * userid.SYSnnnn.SPFLOGn.LIST (LOG) * userid.SYSnnnn.SPFn.LIST (LIST) * userid.SYSnnnn.SPFTEMPn.CNTL (generated by SUBMIT command) * ISPMXED START ISPMXLST (16) ISPMXDEF 16 ISPMEPT ISPEX16 ISPMXEND * ISPMXED END * ISPMXDD START * ISPMXDD END ISPEX16 RSECT ISPEX16 AMODE 31 ISPEX16 RMODE ANY SAVE (14,12),,'ISPEX16 &SYSDATC &SYSTIME' LR R12,R15 USING ISPEX16,R12 LR R10,R1 SAVE INPUT PARAMETER LIST USING PARMLIST,R10 MAP PARAMETERS * L R1,EXITID CLC =F'16',0(R1) MAKE SURE CALL IS FOR EXIT 16 BNE RETURN WHAT???? (SHOULDN'T HAPPEN) L R3,PRELEN ADDRESS OF PREFIX LENGTH IN R3 L R4,PREFIX PREFIX DATA IN R4 L R6,0(,R3) GET PREFIX LENGTH C R6,=F'16' CHECK LENGTH BH RETURN ALREADY TOO LONG! L R5,CVTPTR GET POINTER TO CVT USING CVT,R5 MAP IT ICM R5,B'1111',CVTSMCA GET POINTER TO SMCA & CHK FOR ZEROS BZ RETURN NO SMCA (SMF NOT ACTIVE)?? DROP R5 USING SMCABASE,R5 MAP SMCA ALR R4,R6 POINT TO LAST POSITION OF PREFIX MVC 0(4,R4),=C'.SYS' PREFIX IS MVC 4(4,R4),SMCASID '.SYSNNNN' NNNN=SMFID LA R4,7(,R4) F_BLANK DS 0H CLI 0(R4),C' ' BNE E_BLANK BCT R4,F_BLANK E_BLANK DS 0H S R4,PREFIX GET LENGTH LA R4,1(,R4) ACTUALLY 1 LONGER L R3,PRELEN ST R4,0(,R3) STORE NEW LENGTH IN R3 RETURN DS 0H RETURN (14,12),RC=0 PRINT OFF IHAPSA DSECT=YES,LIST=NO CVT DSECT=YES,LIST=NO IEESMCA IHAASCB DSECT=YES,LIST=NO * * REGISTER EQUATES * R0 EQU 0 R1 EQU 1 POINTER TO INPUT PARMAMTER LIST R2 EQU 2 R3 EQU 3 WORK - ADDRESS OF PREFIX LENGTH R4 EQU 4 WORK - LENGTH OF PREFIX R5 EQU 5 BASE USED FOR CVT AND SMCA R6 EQU 6 WORK REGISTER R7 EQU 7 R8 EQU 8 R9 EQU 9 R10 EQU 10 SAVED INPUT PARAMETER LIST R11 EQU 11 R12 EQU 12 BASE REGISTER R13 EQU 13 R14 EQU 14 LINKAGE REGISTER (RETURN ADDRESS) R15 EQU 15 LINKAGE REGISTER (ENTRY POINT) PARMLIST DSECT EXITID DS A *EXITID F USERID DS A *USERID CL8 SCREENID DS A *SCREENID CL8 ZENVIR DS A *ZENVIR CL32 DATALEN DS A *DATALEN F DATAPTR DS A *DATAPTR A PRELEN DS A *PRELEN F PREFIX DS A *PREFIX CL26 SUFTYPE DS A *SUFTYPE F SUFLEN DS A *SUFLEN F SUFFIX DS A *SUFFIX CL18 END ## //************************************************************ //SMPE EXEC PGM=GIMSMP,REGION=6M, // COND=(0,NE), // PARM='CSI=MPSYS1.OS39028.GLOBAL.CSI' //SMPOUT DD SYSOUT=* //SMPRPT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SMPCNTL DD * SET BDY(GLOBAL) . REJECT S(UMISP02) BYPASS(APPLYCHECK). RESETRC. RECEIVE S(UMISP02) SYSMOD SOURCEID(USERMOD) . SET BDY(SM0R1A1). APPLY SELECT(UMISP02) REDO. //SMPPTFIN DD * ++ USERMOD (UMISP02) /* THIS USERMOD UPDATES ISPXDT - THE ISPF EXIT DEFINITION TABLE CSECT IN LMOD ISPEXITS TO LET ISPF KNOW WHAT EXITS ARE BEING USED. ISPF EXIT16 IS LINKED TOGETHER WITH THIS LMOD. ISPEXITS IS IN THE SISPLOAD LIBRARY. */ . ++ VER (Z038) FMID (HIF4802). ++ MOD (ISPXDT) DISTLIB(AISPMOD1). /* // DD DSN=&&OBJ,DISP=(OLD,DELETE)