//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.2 * * ===================================================== * * UCB LOOK-UP(BUILD DEVICE DEFINITION LIST). * * (USE OLD FASHION INTERFACE) * *********************************************************************** MAINPROC DS 0H OPEN (SYSPRINT,OUTPUT) OPEN SYSPRINT DATASET PUT SYSPRINT,TITLINE1 PRINT TITLE LINE-1 PUT SYSPRINT,TITLINE2 PRINT TITLE LINE-2 L R2,CVTPTR LOAD CVT LA R2,CVTUCBA-CVT(,R2) LOCATE TO CVT 1ST UCB POINTER SH R2,=Y(UCBNXUCB-UCBOB) ADJUST FOR CHAIN LOOP USING UCBOB,R2 ADDRESS TO COPIED UCB AREA DOUCBSCN DS 0H ICM R2,B'1111',UCBNXUCB GET NEXT UCB ADDRESS BZ EODADUCB IF ZERO, ALL UCB DONE... ST R2,UCBADDR SAVE IT FOR OTHER API SPACE , TM UCBSTAT,UCBONLI ONLINE VOLUME ? NOP DOUCBSCN NO, IGNORE THIS DEVICE SPACE , MVC STAT,=CL18'OFFLINE' ASSUME OFFLINE DEVICE IOSINFO FUNCTN=SUBCHNO, GET DEVICE SUBCHANNEL NUMBER + UCB=UCBADDR, + OUTPUT=(1), + RTNCODE=(15) LTR RF,RF STORED SUBCHANNEL NUMBER ? BZ *+4+6 YES, ITS AVAILABLE DEVICE MVC STAT,=CL18'NOT AVAILABLE' IT MAY BE NO-CONNECTED DEVICE SPACE , TM UCBSTAT,UCBONLI ONLINE VOLUME ? BNO *+4+6 NO, MVC STAT,=CL18'ONLINE' YES, INDICATE IT TM UCBSTAT,UCBALOC ALLOCATED VOLUME ? BNO *+4+6 NO, MVC STAT,=CL18'ALLOCATED' YES, INDICATE IT TM UCBSTAT,UCBPRES+UCBONLI PERMANENT RESIDENT VOLUME ? BNO *+4+6 NO, MVC STAT+9(9),=CL9',RESIDENT' YES, INDICATE IT TM UCBSTAT,UCBSYSR+UCBONLI SYSTEM RESIDENT VOLUME ? BNO *+4+6+4+4+6 NO, MVC STAT+9(9),=CL9',SYSRES' YES, INDICATE IT TM UCBTBYT3,UCB3DACC DASD DEVICE ? BO *+4+6 YES, MVC STAT+9(9),=CL9',CONSOLE' NO, IT MAY BE CONSOLE SPACE , SLR R0,R0 CLEAR WORKREG ICM R0,B'0011',UCBCHAN LOAD DEVICE NUMBER LA R1,DOUBLE SET WORKAREA ADDRESS BAS RE,CNVRTX CONVERT GR0 TO HEX-DECIMAL MVC DEVN,DOUBLE+4 SET IT INTO PRINT LINE SPACE , TM UCBTBYT3,UCB3TAPE TAPE ? BNO *+4+6 MVC HWTYPE,=CL4'TAPE' YES, INDICATE IT TM UCBTBYT3,UCB3COMM COMM DEVICE ? BNO *+4+6 MVC HWTYPE,=CL4'COMM' YES, INDICATE IT TM UCBTBYT3,UCB3CTC CTCA ? BNO *+4+6 MVC HWTYPE,=CL4'CTCA' YES, INDICATE IT TM UCBTBYT3,UCB3DACC DASD ? BNO *+4+6 MVC HWTYPE,=CL4'DASD' YES, INDICATE IT TM UCBTBYT3,UCB3DISP DISPLAY ? BNO *+4+6 MVC HWTYPE,=CL4'DISP' YES, INDICATE IT TM UCBTBYT3,UCB3UREC UNIT RECORD DEVICE ? BNO *+4+6 MVC HWTYPE,=CL4'UREC' YES, INDICATE IT SPACE , EDTINFO RTNUNIT, GET DEVICE TYPE NAME + DEVTYPE=UCBTYP,OUTUNIT=DOUBLE LTR RF,RF SUCCESSFUL ? BNZ *+4+6 MVC TYPE,DOUBLE SET IT INTO PRINT LINE SPACE , L R0,UCBTYP LOAD UCB TYPE FIELD LA R1,TBYT SET WORKAREA ADDRESS BAS RE,CNVRTX CONVERT GR0 TO HEX-DECIMAL SPACE , MVC VOL,=CL8' ' CLEAR VOLSER FIELD TM UCBTBYT3,UCB3DACC+UCB3TAPE DASD OR TAPE ? BZ *+4+6 NO, MVC VOL,UCBVOLI SET VOLSER INTO PRINT LINE SPACE , MVC SIZE,=CL40' ' CLEAR DASD SIZE FIELD MVC FREESP,=CL40' ' CLEAR DASD FREE SPACE INFO. TM UCBTBYT3,UCB3DACC DASD ? BNO NOVOLINF NO, DON'T ISSUE DEVTYPE TM UCBSTAT,UCBONLI ONLINE VOLUME ? BNO NOVOLINF NO, DON'T ISSUE DEVTYPE DEVTYPE , GET DEVICE ATTRIBUTE + UCBLIST=(UCBADDR,1,ANY), + (DVAREA,16),INFOLIST=DEVINFO LTR RF,RF SUCCESSFUL ? BNZ NOVOLINF NO, VOLUME NOT AVAILABLE USING DVAIDASD,DVAREA ADDRESS TO DEVTYPE OUTPUT AREA L R0,DVAICYL LOAD NUM OF DEVICE CYLS CVD R0,DOUBLE CONVERT IT TO PACKED-DECIMAL MVC WORKDW(9),=XL9'40202020206B202021' ED WORKDW(9),DOUBLE+4 EDIT IT BY ZZZZ,ZZ9 MVC SIZE,WORKDW+2 MOVE IT TO VOLLIST ENTRY LSPACE UCB=UCBADDR, EXTRACT FREE SPACE INFORMATION + EXPMSG=FREESP NOVOLINF DS 0H SPACE , PUT SYSPRINT,OUTLINE1 PRINT DEVICE DATA LINE B DOUCBSCN LOOP UNTIL END OF UCB SPACE , EODADUCB DS 0H 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 WORKDW DC D'0' DOUBLE WORD WORKAREA DC D'0' (FOR ADDITIONAL SPACE) UCBADDR DC A(0) UCB ADDRESS FIELD DVAREA DC XL16'00' DEVTYPE OUTPUT AREA DEVINFO DEVTYPE INFO=(DASD) DEVTYPE/INFOLIST SPACE , * 0----+----1----+----2----+----3----+----4----+---- TITLINE1 DC CL120'DEVN H/W TYPE UCBTBYT STATE VOLSER+ DASD SIZE AND FREE SPACE INFORMATION' TITLINE2 DC CL120'==================================================+ =================================================' OUTLINE1 DC CL120'@@@@ @@@@ @@@@ @@@@@@@@ @@@@@@@@@@@@@@@@@@ @@@@@@+ @@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@' DEVN EQU OUTLINE1+0,4 HWTYPE EQU OUTLINE1+5,4 TYPE EQU OUTLINE1+10,4 TBYT EQU OUTLINE1+15,8 STAT EQU OUTLINE1+24,18 VOL EQU OUTLINE1+44,6 SIZE EQU OUTLINE1+51,7 FREESP EQU OUTLINE1+59,40 LSPACE OUTPUT TEXT(EXTEND) SPACE , SYSPRINT DCB DDNAME=SYSPRINT, DCB FOR SYSPRINT DATASET + DSORG=PS,MACRF=PM,RECFM=FB,BLKSIZE=0,LRECL=120 *---------------------------------------------------------------------* 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 IEFUCBOB PREFIX=YES UCB IHADVA INFO=DASD DEVTYPE OUTPUT AREA *---------------------------------------------------------------------* * 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 // //