PRINT NOGEN IEFU29 START 0 IEFU29 AMODE 31 IEFU29 RMODE ANY IEFU29 TITLE 'SMF Switch Exit - Copyright Abbydale Systems LLC' *---------------------------------------------------------------------* * IEFU29 * *---------------------------------------------------------------------* * * * Description : SMF Exit Routine to start SMFDUMP if needed. * * * * Created on : 6 May 2022 * * Created by : Kevin Ferguson * * : Userid(MIT001) * * : Using ABBYDALE.PROD.SOURCE(IEFU29) * * * * Called by : Operating system * * * * Calls : SVC 34 (or whatever you change it to!) * * * * Change Activity : * * * *---------------------------------------------------------------------* * ©Copyright of Abbydale Systems LLC. * *---------------------------------------------------------------------* * REGISTER EQUATES * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * R0 EQU 0 * R1 EQU 1 * R2 EQU 2 * R3 EQU 3 * R4 EQU 4 * R5 EQU 5 * R6 EQU 6 * R7 EQU 7 * R8 EQU 8 A S L E Q U C * R9 EQU 9 * R10 EQU 10 Equate prefix to numeric symbols in order * R11 EQU 11 to make the use of register operands in * R12 EQU 12 instructions self-explanitory this also * R13 EQU 13 creates entries in the cross references * R14 EQU 14 * R15 EQU 15 * FPR0 EQU 0 * FPR2 EQU 2 * FPR4 EQU 4 * FPR6 EQU 6 * EJECT * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * MISCELLANEOUS EQUATES * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * EQUHOBON EQU X'80000000' Set high order bit on * PACKDIG EQU X'0F' Pack digit * CMDSVC EQU 34 SVC number used to issue the command CVTSMCA EQU X'C4' SMCA offset SMCAMISC EQU 1 SMCAFRDS EQU X'F4' SMCASVCR EQU X'FC' RDSNEXT EQU 4 RDSFLG1 EQU 12 RDSFLG2 EQU 13 RDSNAME EQU 16 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * IEFU29 CSECT CSECT name SAVE (14,12),,IEFU29_&SYSDATE Save callers registers LR R12,R15 Load entry point USING IEFU29,R12 Establish addressability LA R0,DATALEN Get length of dataarea STORAGE OBTAIN,LENGTH=(R0),ADDR=(R13),LOC=BELOW USING DATA,R13 Establish addressability ST R13,4(R1) Save caller's save area address ST R1,8(R13) Save my save area address LR R13,R1 Load save area address L R2,16 CVT address ICM R2,B'1111',CVTSMCA(R2) Is it MAN=NONE? BZ NOSMF Yes - Skip to issue message TM SMCAMISC(R2),X'C0' Is it MAN=ALL? BNO NOTALL No - skip to not all message LA R7,3 1 + No. off SMF switches to be * tolerated whilst SMFDUMP executes RERUN DS 0H LA R3,0 Initial status indicator XR R4,R4 Clear register for active RDS XR R5,R5 Clear register for first RDS ICM R4,B'0111',SMCASVCR+1(R2) Save active RDS address ICM R5,B'0111',SMCAFRDS+1(R2) Save first RDS address BZ NO_Datasets No RDS then skip DUMP_Loop DS 0H TM RDSFLG2(R5),X'80' Dummy RDS? BO RETEST Yes - Skip to retest TESTFULL DS 0H TM RDSFLG1(R5),X'08' Dataset full? BNO GETNEXT No - Skip to get the next RDS LA R3,1(R3) Add to indicator counter GETNEXT DS 0H ICM R5,B'0111',RDSNEXT+1(R5) Get next RDS B DUMP_Loop ... and process it RETEST DS 0H CLM R4,B'0111',SMCASVCR+1(R2) Same active RDS? BE ANALYZE Yes - Skip BCT R7,RERUN No - Go and test again WTO 'IEFU291E - TOO MANY SMF SWITCHES HAVE OCCURRED', * ROUTCDE=(2,11),DESC=2 B SKIPDUMP ANALYZE DS 0H C R3,=F'1' Is the indicator > = 1 ? BNH SKIPDUMP No - Skip to exit MVC CMDAREA(CMDLEN),CMDL Move in start command XR R0,R0 Clear register 0 ready for SVC34 LA R1,CMDAREA Point to start of command SVC CMDSVC Issue the command via SVC 34 WTO 'IEFU292I - *** START COMMAND ISSUED FOR SMFDUMP ***', * DESC=3,ROUTCDE=(2,11) SKIPDUMP DS 0H LR R1,R13 Save our save area address LA R0,DATALEN Load length for release L R13,4(R13) Point to callers save area STORAGE RELEASE,ADDR=(R1),LENGTH=(R0) LA R15,4 PR NO_Datasets DS 0H WTO 'IEFU293E - NO SMF DATASETS', * ROUTCDE=(2,11),DESC=2 B SKIPDUMP Go back to mainline NOTALL DS 0H WTO 'IEFU294E - MAN=ALL IS NOT IN EFFECT', * ROUTCDE=(2,11),DESC=2 B SKIPDUMP Go back to mainline NOSMF DS 0H WTO 'IEFU295E - MAN=NONE IS IN EFFECT', * ROUTCDE=(2,11),DESC=2 B SKIPDUMP Go back to mainline * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * S V C 3 4 Command Area * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * CMDL DS 0F Start command for SVC DC AL2(CMDLEN),AL2(00) Command Structure DC C'S SMFDUMP ' . Command (leave a blank at the end) CMDLEN EQU *-CMDL Comamnd length * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Data Area (Mapped after OBTAIN) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * DATA DSECT SAVE DS 18F Save area for registers CMDAREA DS 0F,XL(CMDLEN) Command area RESERVED DS 4D *** Reserved for future use *** DATALEN EQU *-DATA Length of data area * * DEFINE SUB-POOL AND LENGTH FOR GETMAIN/FREEMAIN * IEFU29 CSECT GET BACK TO CSECT DS 0D FORCE TO DOUBLE WORD GETPARM DC 0F'0',AL1(000),AL3(DATALEN) GETMAIN PARM SP+LENGTH *---------------------------------------------------------------------* * End of IEFU29 * *---------------------------------------------------------------------* LTORG END IEFU29 PUNCH ' MODE AMODE(31)' BINDER AMODE STATEMENT. PUNCH ' MODE RMODE(ANY)' BINDER RMODE STATEMENT. PUNCH ' ENTRY IEFU29' MODULE ENTRY POINT. PUNCH ' NAME IEFU29(R)' MODULE NAME. END