//JOBNAME JOB (ACCT),NAME,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) //********************************************************************* //ASMCG PROC AOPT=,APARM=,LOPT=, // MAC1='SYS1.MACLIB', // MAC2='SYS1.MACLIB', // MAC3='SYS1.MODGEN' //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) //GO EXEC PGM=LOADER,COND=(5,LT,ASM), // PARM=('LIST,LET,MAP,XREF,&LOPT') //SYSLOUT DD DUMMY //SYSLIN DD DSN=*.ASM.SYSLIN,DISP=(OLD,DELETE) //SYSPRINT DD SYSOUT=* // PEND //********************************************************************* //STEP1 EXEC ASMCG //ASM.SYSIN DD * *=====================================================================* * MVS STANDARD HOUSE KEEPING PROCEDURE * *=====================================================================* * *----------------------------------* * * ENTRY PROCESSING * * *----------------------------------* MYASMPGM CSECT , DEFINE CONTROL SECTION MYASMPGM AMODE 31 DEFINE DEFAULT AMODE=31 MYASMPGM RMODE 24 DEFINE DEFAULT RMODE=24 USING *,12 DEFINE BASE REGISTER SAVE (14,12),,* SAVE CALLER REGISTERS LA 12,0(,15) GR12 --> OUR 1ST BASE ADDRESS LR 15,13 SAVE CALLER SAVEAREA CNOP 0,4 INSURE FULL WORD BOUNDARY BAS 13,*+4+72 AROUND OUR SAVEAREA DC 18F'-1' OUR GPR SAVEAREA ST 15,4(,13) SAVE CALLER SAVEAREA POINTER ST 13,8(,15) SET BACK CHAIN FOR LINK TRACE B MAINPROC DO MAINLINE PROCESSING * *----------------------------------* * * EXIT PROCESSING * * *----------------------------------* EXITPROC DS 0H L 13,4(,13) RESTORE CALLER SAVEAREA ST 15,16(,13) PASS RETURN CODE TO CALLER RETURN (14,12),T RESTORE CALLER REGISTERS + AND RETURN TO CALLER EJECT , *********************************************************************** * MAIN LINE PROCESSING. * * ===================================================== * * GR1 -- EXEC PARAMETER PLIST * * GR12 - BASE REGISTER * * GR13 - OUR REGISTER SAVEAREA * *---------------------------------------------------------------------* * SAMPLE CODE OF 'MVS ADVANCED SKILL Vol-1' CHAPTER 5.7 * * ===================================================== * * CONSOLE DEVICE LOOK-UP(BUILD DEFINED CONSOLE LIST). * * >>> Correct for z/OS V1R8 or higher. 2020/04/03 <<< * * >>> z/OS V1R8 and later, Only active consoles can <<< * * >>> be listed. <<< * * >>> z/OS V1R8 removed master console and switching << * * >>> to alternate console function. <<< * *********************************************************************** MAINPROC DS 0H OPEN (SYSPRINT,OUTPUT) OPEN SYSPRINT DATASET PUT SYSPRINT,TITLINE1 PRINT TITLE LINE-1 PUT SYSPRINT,TITLINE2 PRINT TITLE LINE-2 SPACE , AGO .UCMWAY LA R5,99 LOAD LOOP COUNTER(MAXIMUM #CONS UCMELOOP DS 0H CNZMXURF (5) GET UCME ADDRESS LTR RF,RF ACTIVE CONSOLE ? BNZ NXTUCMDE NO, IGNORE THIS ENTRY LR R3,R0 GR3 --> UCME(UCM DEVICE ENTRY) NXTUCMDE DS 0H BCT R5,UCMELOOP LOOP FOR NEXT CONSOLE SPACE , .UCMWAY ANOP , L R2,CVTPTR LOAD CVT L R2,CVTCUCB-CVT(,R2) GR2 --> UCM(BASE) USING UCM,R2 ADDRESS IT L R3,UCMVEA GR3 --> UCME(UCM DEVICE ENTRY) USING UCMLIST,R3 ADDRESS IT UCMELOOP DS 0H TM UCMDIDCS,UCME_Available_4_Reuse USED ENTRY ? ZOSv18 BO NXTUCMDE NO, IGNORE THIS ENTRY ZOSv18 SPACE , L R4,UCMFEXTP GR4 --> UCME EXTENSION USING UCMEFEXT,R4 ADDRESS IT SLR R0,R0 ZOSv18 ICM R0,B'0111',UCMEFCNN LOAD CONSOLE NUMBER ZOSv18 CVD R0,DOUBLE CONVERT IT TO ZONED DECIMAL OI DOUBLE+7,X'0F' I UNPK ID,DOUBLE V MVC NAME,UCMEFCNM SET CONSOLE NAME MVC USERID,UCMEFUID SET LOGGED ON USERID SPACE , MVC ALTID(11),BLANK CLEAR ALTER CONSOLE FIELD SPACE , MVC DEVN,BLANK CLEAR DEVN FIELD TM UCMDISP2,UCMDISPK SUBSYSTEM ALLOCATABLE ? BNO UCBDEVN MVC DEVN,=CL4'SUBS' YES, INDICATE IT B ENDDEVN UCBDEVN DS 0H ICM R1,B'1111',UCMUCB LOAD DEVICE UCB ADDRESS BZ *+4+4+4+4+6 IF ZERO, CONSOLE IS VIRTUAL DEV LH R0,UCBCHAN-UCBOB(,R1) LOAD DEVICE NUMBER LA R1,DOUBLE SET WORKAREA ADDRESS BAS RE,CNVRTX CONVERT GR0 TO HEX-DECIMAL MVC DEVN,DOUBLE+4 SET DEVICE NUMBER TM UCMES_FLAGS,UCMES_SMCS SMCS CONSOLE ? BNO *+4+6 NO, MVC DEVN,=CL4'SMCS' YES, INDICATE IT ENDDEVN DS 0H SPACE , MVC STATE,BLANK CLEAR STATE FIELD TM UCMDIDCS,UCMAHERE ACTIVE CONSOLE ? BNO *+4+6 NO, MVC STATE,=CL7'ACTIVE' YES, INDICATE IT SPACE , MVC AUTH,=CL11'HARDCOPY' ASSUME HARDCOPY CONSOLE TM UCMDISP1,UCMDISPC DISPLAY CONSOLE ? BNO ENDAUTH NO, MVC AUTH,=CL11'MASTER' ASSUME MASTER AUTHORITY TM UCMDISP2,UCMDISPM PSEUDO MASTER CONSOLE ? BO ENDAUTH YES, MVC AUTH,=CL11'ALL' ASSUME ALL AUTHORITY TM UCMAUTHA,UCMAUTH1+UCMAUTH2+UCMAUTH3 SYS+IO+CONS ? BO ENDAUTH YES, MVC AUTH,=CL11'INFO' ASSUME INFO AUTHORITY BZ ENDAUTH IF ZERO BITS MVC AUTH,=CL11' , , ' CLEAR AUTH FIELD TM UCMAUTHA,UCMAUTH1 SYS AUTHORITY ? BNO *+4+6 NO, MVC AUTH+0(3),=CL3'SYS' YES, INDICATE IT TM UCMAUTHA,UCMAUTH2 IO AUTHORITY ? BNO *+4+6 NO, MVC AUTH+4(2),=CL2'IO' YES, INDICATE IT TM UCMAUTHA,UCMAUTH3 CONS AUTHORITY ? BNO *+4+6 NO, MVC AUTH+7(4),=CL4'CONS' YES, INDICATE IT ENDAUTH DS 0H SPACE , MVC ROUTE,=CL26'ALL' ASSUME ALL ROUTE CODE CLC UCMEFRC,=16X'FF' ALL ROUTE CODES ? BE ENDROUTE YES, MVC ROUTE,=CL26'NONE' ASSUME NO ROUTE CODE CLC UCMEFRC,=16X'00' NO ROUTE CODES ? BE ENDROUTE YES, SPACE , MVC ROUTE,BLANK CLEAR ROUTE CODE LA RE,ROUTE-1 LOCATE ROUTE CODE EDIT FIELD LA RF,1 BEGIN ROUTE CODE=1 L R1,UCMEFRC LOAD ROUTE CODE 1-16 LA RA,9 EDIT ROUTE CODE 1-9 ROUT1TO9 DS 0H I SLR R0,R0 I SLDL R0,1 I LTR R0,R0 I BZ RNXT1TO9 I CVD RF,DOUBLE I OI DOUBLE+7,X'0F' I MVI 0(RE),C',' I UNPK 1(1,RE),DOUBLE I LA RE,2(,RE) I RNXT1TO9 DS 0H I LA RF,1(,RF) I BCT RA,ROUT1TO9 V LA RA,3 EDIT ROUTE CODE 10-12 ROUTATOC DS 0H I SLR R0,R0 I SLDL R0,1 I LTR R0,R0 I BZ RNXTATOC I CVD RF,DOUBLE I OI DOUBLE+7,X'0F' I MVI 0(RE),C',' I UNPK 1(2,RE),DOUBLE I LA RE,3(,RE) I RNXTATOC DS 0H I LA RF,1(,RF) I BCT RA,ROUTATOC V MVI ROUTE-1,C' ' ENDROUTE DS 0H SPACE , PUT SYSPRINT,OUTLINE1 PRINT DEVICE DATA LINE NXTUCMDE DS 0H ZOSv18 AL R3,UCMVEZ LOCATE TO NEXT CONSOLE ENTRY CL R3,UCMVEL LAST CONSOLE ? BNH UCMELOOP NO, LOOP FOR NEXT CONSOLE DROP R2,R3,R4 FORGET UCM, UCME, UCME EXT SPACE , CLOSE (SYSPRINT) CLOSE SYSPRINT DATASET SPACE , * *----------------------------------* * * END OF PROCESSING * * *----------------------------------* SLR 15,15 LOAD RETURN CODE = 0 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 - CONVERT BINARY TO HEX-DECIMAL TEXT (REGISTER TYPE) * * CALL INTERFACE - * * GR0: FULL-WORD BINARY VALUE * * GR1: 8BYTES OUTPUT-AREA ADDRESS * * BAS 14,CNVRTX * *---------------------------------------------------------------------* 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 , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA SPACE , * 0----+----1----+----2----+----3----+----4----+----5 TITLINE1 DC CL120'ID NAME ALTERNATE DEVN STATE USERID + AUTH ROUTE CODE' TITLINE2 DC CL120'==================================================+ =======================================' BLANK DC CL32' ' OUTLINE1 DC CL120'@@ @@@@@@@@ @@-@@@@@@@@ @@@@ @@@@@@@ @@@@@@@ + @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@' ID EQU OUTLINE1+0,2 NAME EQU OUTLINE1+3,8 ALTID EQU OUTLINE1+13,2 ALTNAME EQU OUTLINE1+16,8 DEVN EQU OUTLINE1+26,4 STATE EQU OUTLINE1+32,7 USERID EQU OUTLINE1+41,7 AUTH EQU OUTLINE1+50,11 ROUTE EQU OUTLINE1+63,26 SYSPRINT DCB DDNAME=SYSPRINT, DCB FOR SYSPRINT DATASET + DSORG=PS,MACRF=PM,RECFM=FB,BLKSIZE=0,LRECL=120 SPACE , *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * DSECTS * *---------------------------------------------------------------------* CVT DSECT=YES,LIST=YES CVT IEECUCM LIST=YES UCM IEFUCBOB , UCB *---------------------------------------------------------------------* * S/370, ESA/390 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 // //