//JOBNAME JOB (ACCT),NAME,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) //********************************************************************* //ASMCL PROC N=TEMPNAME,AOPT=,APARM=,LOPT=, // MAC1='SYS1.MACLIB', // MAC2='SYS1.MACLIB', // MAC3='SYS1.MODGEN', // LLIB='YOUR.LINKLIB' <== Your LNKLST Load module library //ASM EXEC PGM=ASMA90, // PARM=('OBJ,NODECK,LC(32767),XREF(SHORT),TERM,RLD,ASA,&AOPT', // 'US(MAP,WARN(11)),SYSPARM(&APARM)') //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //SYSLIB DD DISP=SHR,DSN=&MAC1 // DD DISP=SHR,DSN=&MAC2 // DD DISP=SHR,DSN=&MAC3 //SYSUT1 DD UNIT=SYSALLDA,SPACE=(TRK,(80,20)) //SYSLIN DD DISP=(,PASS),UNIT=SYSALLDA,SPACE=(TRK,(30,15),RLSE), // DCB=(RECFM=FB,BLKSIZE=0,LRECL=80) //LKD EXEC PGM=IEWL,COND=(5,LT,ASM), // PARM=('LIST,LET,MAP,XREF,&LOPT') //SYSPRINT DD SYSOUT=* //SYSLIN DD DSN=*.ASM.SYSLIN,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSLMOD DD DISP=SHR,DSN=&LLIB(&N) // PEND //********************************************************************* //MPFUXIT1 EXEC ASMCL,N=MPFUXIT1,LOPT=RENT //ASM.SYSIN DD * &MDLNM SETC 'MPFUXIT1' SET THIS MODULE NAME &MDLNM TITLE 'MPF USER EXIT ROUTINE - PICK UP IEE362A TO DUMP SMF DAT+ ASET' *********************************************************************** * MVS ADVANCED SKILL SAMPLE PROGRAM CODE. 2011 ARTECEED CO.,LTD. * *---------------------------------------------------------------------* * MODIFICATION RECORD * * =================== * * DATE DESCRIPTION MODID * * ----------- ------------------------------------------------- ----- * * 2012/02/01 NEW MODULE CREATED. * *---------------------------------------------------------------------* * MODULE NAME -------- MPFUXIT1 * * MODULE ATTRIBUTE --- AMODE=31,RMODE=ANY,RENT,APF(NO),NOLOCKS * * PSW=KEY(0),SUP,ENABLE * * ENTRY POINTS ------- MPFUXIT1 * * AUTHORIZE ---------- NONE(MVS WTO USER EXIT ROUTINE) * *---------------------------------------------------------------------* * DESCRIPTION: * * START SMF DATASET UNLOAD JOB WHEN TRAPPED IEE362A MESSAGE. * * RESTRICTION: * * NOTES: * * YOU SHOULD DEFINE MPFLSTxx MEMBER TO TRAP WTO MESSAGES. * * IEE362A,SUP(NO),USEREXIT(MPFUXIT1) * *---------------------------------------------------------------------* * INPUTS: * * GR0 --- N/A * * GR1 --- CTXT(COMMUNICATIONS TASK USER EXIT RTN PARAMETER LIST) * * GR13 -- CALLER GPR SAVEAREA * * GR14 -- RETURN ADDRESS * * GR15 -- ENTRY ADDRESS * * * * OUTPUTS: * * NONE * * * * ABENDS: * * NONE * * * * REGISTER USAGE: * * GR2 --- * * GR3 --- * * GR4 --- * * GR5 --- CTXT(COMMUNICATIONS TASK USER EXIT RTN PARAMETER LIST) * * GR6 --- * * GR7 --- * * GR8 --- * * GR9 --- * * GR10 -- RETURN ADDRESS FROM INTERNAL SUB-ROUTINES * * GR11 -- (RESERVED FOR 2ND BASE) * * GR12 -- MODULE BASE(1ST) * * GR13 -- OUR LOCAL WORKAREA * * * * CALLING MODULE: * * MVS COMPONENT(MVS INSTALLATION EXIT ROUTINE) * * CALLED MODULE: * * NONE * *********************************************************************** EJECT , *---------------------------------------------------------------------* * MVS INSTALLATION EXIT ROUTINE HOUSEKEEPING PROCEDURE * * ===================================================== * *---------------------------------------------------------------------* * *----------------------------------* * * ENTRY PROCESSING * * *----------------------------------* &MDLNM CSECT , DEFINE CODE SECTION &MDLNM AMODE 31 DEFINE DEFAULT AMODE &MDLNM RMODE ANY DEFINE DEFAULT RMODE B ENTRPROC-(&MDLNM)(,15) AROUND MODULE HEADER DC AL1(8) MODULE NAME LENGTH DC CL8'&MDLNM' MODULE NAME DC CL8'&SYSDATC' ASSEMBLY DATE DC CL5'&SYSTIME' ASSEMBLY TIME DC 102X'FF' MODULE PATCH SPACE ENTRPROC DS 0H STM 14,12,12(13) SAVE CALLER REGISTERS LR 12,15 GR12 -> OUR BASE ADDRESS(1ST) USING &MDLNM,RC DEFINE OUR BASE REGISTER GETMAIN RU, OBTAIN OUR LOCAL WORKAREA + LV=LWORK,SP=230 ST 13,4(,1) SAVE CALLER SAVEAREA ST 1,8(,13) CHAIN SAVEAREA POINTER LR 13,1 GR13 -> OUR LOCAL WORKAREA USING DWORK,13 ADDRESS TO OUR LOCAL WORKAREA SPACE , * *----------------------------------* * * BUILD OUR RECOVERY ENVIRONMENT * * * ============================== * * * MANY USER EXITS SUGGEST TO USE * * * OWN RECOVERY ENVIRONMENT. * * *----------------------------------* MVC DWKESTAE(LDLESTAE),MDLESTAE INIT ESTAE PLIST ESTAE ESTAEXIT, BUILD OUR RECOVERY ENVIRONMENT + PARAM=DWORK, PASS OUR LOCAL WORKAREA + MF=(E,DWKESTAE) LTR RF,RF SUCCESSFUL ? BNZ RTRNPROC NO, RETURN SOON, WE WILL HAVE + A CRITICAL SITUATION THAT + CAN NOT BE ISSUED AS ESTAE. SPACE , L 1,4(,13) LOAD CALLER SAVEAREA LM 0,1,20(1) RELOAD GR0-1 AT ENTERED B MAINPROC DO MAIN PROCESSING SPACE , * *----------------------------------* * * EXIT PROCESSING * * *----------------------------------* EXITPROC DS 0H ESTAE 0, DELETE OUR RECOVERY ENVIRONMENT+ MF=(E,DWKESTAE) RTRNPROC DS 0H LR 1,13 GR1 --> OUR LOCAL WORKAREA L 13,4(,13) RESTORE CALLER SAVEAREA FREEMAIN RU, RELEASE OUR LOCAL WORKAREA + LV=LWORK,SP=230,A=(1) LM 14,12,12(13) RESTORE CALLER REGISTERS BSM 0,14 RETURN TO CALLER SPACE , *********************************************************************** * MAIN LINE PROCESSING * * ===================================================== * * GR1 -- CTXT POINTER ADDRESS * * GR12 - OUR BASE REGISTER * * GR13 - OUR LOCAL WORKAREA(INCLUDED OUR REGISTER SAVEAREA) * *---------------------------------------------------------------------* * SAMPLE CODE OF 'MVS ADVANCED SKILL Vol-1' CHAPTER 5.5 * * ===================================================== * * ISSUE START COMMAND WHEN SMF DATASET WAS FULL. * *********************************************************************** MAINPROC DS 0H L R5,0(,R1) LOAD CTXT ADDRESS USING CTXT,R5 ADDRESS IT SPACE , XC MGCRPL(MGCRLTH),MGCRPL INIT MGCR PLIST MVC MGCRTEXT(L'CMDTEXT),CMDTEXT MOVE CMDTEXT INTO MGCR PLIST SPACE , * *----------------------------------* * * EXTRACT SMF DATASET-ID FROM * * * IEE362A MESSAGE AND SET IT * * * INTO PROCEDURE SYMBOL PARM. * * *----------------------------------* L R2,CTXTTXPJ LOAD MSG ATTRIBUTES AREA USING CTXTATTR,R2 ADDRESS IT LA RE,CTXTTMSG LOCATE TO MSG TEXT AREA MVC MGCRTEXT+14(1),35(RE) SET DATASET-ID FROM IEE362A MSG DROP R2 FORGET MSG ATTRIBUTES AREA SPACE , * *----------------------------------* * * ISSUE MGCR TO ISSUE MVS CMD * * * ============================== * * * WHEN GR15=0, GR0 CONTAIN ASID * * * OF STARTED JOB ADDRESS SPACE. * * *----------------------------------* LA R1,MGCRTEXT-MGCRPL+L'CMDTEXT LOAD COMMAND BUFFER LENGTH STC R1,MGCRLGTH SET IT INTO MGCR PLIST SLR R0,R0 CLEAR GR0 LA R1,MGCRPL LOAD MGCR PLIST ADDRESS MGCR (1) ISSUE MGCR TO ISSUE START CMD SPACE , B EXITPROC DO EXIT PROCESSING EJECT , *********************************************************************** * I N T E R N A L S U B R O U T I N E S * *********************************************************************** CNVRTX DS 0H CONVERT GR0 TO HEX-DECIMAL LA 1,7(,1) LA 15,8 STC 0,0(,1) NI 0(1),X'0F' TR 0(1,1),CNVTRT2 SRL 0,4 BCTR 1,0 BCT 15,*-2-4-6-4-4 BR 14 CNVTRT2 DC CL16'0123456789ABCDEF' TRANS TABLE FOR HEX-CHARACTER EJECT , *********************************************************************** * OS ASYNC EXIT ROUTINES * * ACCESS METHOD EXIT ROUTINES * *********************************************************************** *---------------------------------------------------------------------* * ESTAE EXIT ROUTINE * * ================== * * !! ENTERED PSW STATE(SUP/PROB) AS SAME AS AT ESTAE SVC ISSUED !! * * INPUT: * * GR0 --- OS RTM STATUS CODE * * 12: SDWA NOT AVAILABLE(MAY BE STORAGE SHORTAGE) * * GR1 --- SDWA OR TCBCMP(IF GR0=12) * * GR2 --- PARMLIST AT ESTAE ISSUED(IF GR0=12) * * GR13 -- OS STANDARD SAVEAREA(IF SDWA AVAILABLE ONLY) * * GR14 -- RETURN ADDRESS * * GR15 -- ENTRY ADDRESS * * OUTPUT: * * NONE * *---------------------------------------------------------------------* ESTAEXIT DS 0H USING *,RF DEFINE TEMP BASE CH R0,=H'12' AVAILABLE SDWA ? BNE HAVESDWA YES, DO STD PROCESSING + NO, GR0=12 + GR1=ABEND CODE(00XXX000) + GR2=ESTAE PARM A(RTRY RTN) LR RD,R2 RELOAD OUR LOCAL WORKAREA ST R1,DOUBLE PASS ABEND CODE TO RETRY RTN LA R0,NSDWARTR LOAD NO SDWA RETRY RTN ENTRY LA RF,4 INDICATE RETRY B 0(,RE) DO RETRY PROCESSING... SPACE , * *----------------------------------* * * RECOVERY PROCESSING WITH SDWA * * *----------------------------------* HAVESDWA DS 0H L RC,AOURBASE ESTABLISH OUR BASE REGISTER DROP RF FORGET TEMP BASE LR RB,R1 GR11 -> SDWA USING SDWA,RB ADDRESS IT L RD,SDWAPARM LOAD OUR LOCAL WORKAREA ST RE,DWORK+12 SAVE RETURN ADDRESS SPACE , SLR R0,R0 CLEAR WORKREG ICM R0,B'0111',SDWACMPC LOAD ABEND CODE SRL R0,12 ABEND CODE SHIFT TO LOWER BYTE SPACE , LA R1,DOUBLE LOAD WORKAREA BAS RE,CNVRTX CONVERT IT TO HEX-TEXT MVI DOUBLE+4,C'S' INDICATE SYSTEM ABEND(SXXX) MVC WTLPARM(LWTLPARM),CWTLPARM INIT WTL PLIST MVC WTLPARM+21(4),DOUBLE+4 SET ABEND CODE INTO MSG TEXT L R0,SDWAGR15 LOAD REASON CODE LA R1,DOUBLE LOAD WORKAREA BAS RE,CNVRTX CONVERT IT TO HEX-TEXT MVC WTLPARM+32(4),DOUBLE+4 SET REASON CODE INTO MSG TEXT WTL MF=(E,WTLPARM) WRITE ABENDED MSG INTO SYSLOG SPACE , L RE,DWORK+12 LOAD RETURN ADDRESS SETRP WKAREA=(11), SDWA ADDRESS + DUMP=NO, INDICATE IGNORE RTM DUMP + RETADDR=EXITPROC, RETRY ROUTINE ADDRESS + RETREGS=YES, PASS REGS FROM SDWA + FRESDWA=YES, NO LONGER NEED SDWA + RC=4 INDICATE SCHEDULING RETRY RTN B 0(,RE) DO RETRY PROCESSING... DROP RB FORGET SDWA SPACE , * *----------------------------------* * * RETRY PROCESSING FOR NO SDWA * * *----------------------------------* NSDWARTR DS 0H USING *,RF DEFINE TEMP BASE L RC,AOURBASE ESTABLISH OUR BASE REGISTER DROP RF FORGET TEMP BASE LR RD,R1 RELOAD OUR LOCAL WORKAREA SLR R0,R0 CLEAR WORKREG ICM R0,B'0111',DOUBLE LOAD ABEND CODE SRL R0,12 ABEND CODE SHIFT TO LOWER BYTE LA R1,DOUBLE LOAD WORKAREA BAS RE,CNVRTX CONVERT IT TO HEX-TEXT MVI DOUBLE+4,C'S' INDICATE SYSTEM ABEND(SXXX) MVC WTLPARM(LWTLPARM),CWTLPARM INIT WTL PLIST MVC WTLPARM+21(4),DOUBLE+4 SET ABEND CODE INTO MSG TEXT WTL MF=(E,WTLPARM) WRITE ABENDED MSG INTO SYSLOG B EXITPROC GO TO EXIT PROCESSING EJECT , *********************************************************************** * DATA AREA (CONSTANTS) * *********************************************************************** AOURBASE DC A(&MDLNM) OUR BASE ADDRESS MDLESTAE ESTAE MF=L MODEL ESTAE PLIST LDLESTAE EQU *-MDLESTAE LENGTH OF MODEL CWTLPARM WTL '&MDLNM ABENDED(XXXX) GR15=@@@@',MF=L MODEL WTL PLIST LWTLPARM EQU *-CWTLPARM LENGTH OF MODEL SPACE , CMDTEXT DC C'S SMFDUMP,MAN=@' COMMAND TEXT DROP , DROP ALL BASE REGISTER LTORG , EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** EJECT , *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* DWORK DSECT OUR LOCAL WORKAREA SAVEAREA DS 18F'0' MVS STANDARD REGISTER SAVEAREA SPACE , * *----------------------------------* * * MISCELLANEOUS * * *----------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA DWKESTAE ESTAE MF=L WORK ESTAE PLIST WTLPARM WTL '&MDLNM ABENDED(XXXX) GR15=@@@@',MF=L IEZMGCR DSECT=NO MGCR PLIST DS 0D LWORK EQU *-DWORK LENGTH OF WORKAREA EJECT , *---------------------------------------------------------------------* * OS CONTROL BLOCKS * *---------------------------------------------------------------------* IEZVX100 , MPF USER EXIT PLIST IHASDWA , SDWA *---------------------------------------------------------------------* * REGISTER EQUATES * *---------------------------------------------------------------------* YREGS , OS: REGISTER EQUATES RA EQU 10 ADD EQUATION FOR GR10 RB EQU 11 ADD EQUATION FOR GR11 RC EQU 12 ADD EQUATION FOR GR12 RD EQU 13 ADD EQUATION FOR GR13 RE EQU 14 ADD EQUATION FOR GR14 RF EQU 15 ADD EQUATION FOR GR15 END // //