//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=* //SYSUDUMP 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 * * ===================================================== * * LIST-UP DEVICE GENERIC AND ESOTERIC NAME. * *********************************************************************** MAINPROC DS 0H OPEN (SYSPRINT,OUTPUT) OPEN SYSPRINT DATASET SPACE , EDTINFO RTNNAMD, GET DEVICE NAME(GENERIC AND + DEVCLASS==AL1(UCB3DACC), INPUT DEVICE CLASS ESOTERIC)+ NAMELIST=ANAMELST OUTPUT DEVICE NAME LIST SPACE , L R2,ANAMELST GR2 --> UNITNAME LIST USING DNAMELST,R2 ADDRESS IT L R3,DNAML# GR3 --> NUM OF UNITNAME ENTRIES LTR R3,R3 NO DEVICE GROUP NAME ? BZ DONE YES, NO PROCESSING... READDEVN DS 0H MVC UNITNAME,DNAMLNAM SET NEXT UNITNAME PUT SYSPRINT,TITLINE1 PRINT TITLE LINE-1 PUT SYSPRINT,TITLINE2 PRINT TITLE LINE-2 GETMAIN RU,LV=DVNLSTSZ,LOC=ANY GETMAIN DEV NUMBER LIST STORAGE ST R1,ADEVNLST SAVE IT LR R4,R1 GR4 --> DEVICE NUMBER LIST USING DDEVNLST,R4 ADDRESS IT LR R0,R4 INIT LIST AREA(BLANK CLEAR) L R1,DVNLSTSZ I L RF,=A(X'40000000') I MVCL R0,RE V MVC DDEVNSZ,DVNLSTSZ INFORM STORAGE SIZE TO EDTINFO EDTINFO RTNDEVN, GET ASSOCIATED DEVICE + UNITNAME=UNITNAME, INPUT UNIT NAME + DEVNLIST=ADEVNLST, OUTPUT DEVICE NUMBER LIST + DYNAMIC=YES,LOC=ANY,RANGE=ALL L R5,DDEVN# GR5 --> NUM OF DEV NUM ENTRIES PRNTDEVN DS 0H MVC OUTLINE1,BLANK CLEAR PRINT LINE LA RE,OUTLINE1 GR14 -> PRINT LINE COLUMN LA RF,DDEVNNAM GR15 -> DEVICE NUM ENTRY LA R0,16 SET LOOP COUNTER MVC 0(4,RE),0(RF) MOVE NEXT DEVICE NUMBER LA RE,5(,RE) LOCATE TO NEXT FIELD LA RF,4(,RF) LOCATE TO NEXT ENTRY BCT R0,*-4-4-6 LOOP UNTIL END OF LINE PUT SYSPRINT,OUTLINE1 PRINT DEVICE DATA LINE LA R4,16*4(,R4) CORRECT SOURCE AREA SH R5,=H'16' UPDATE REMAIN NUM OF ENTRIES BP PRNTDEVN LOOP FOR REMAINING ENTRY PUT SYSPRINT,BLANK PRINT BLANK LINE L R1,ADEVNLST LOAD DEV NUMBER LIST STORAGE FREEMAIN RU,A=(1),LV=DVNLSTSZ FREEMAIN IT SPACE , LA R2,L'DNAMLNAM(,R2) CORRECT UNITNAME ENTRY BCT R3,READDEVN LOOP FOR NEXT UNITNAME SPACE , L R1,ANAMELST LOAD UNITNAME LIST ADDRESS L R0,0(,R1) LOAD UNITNAME LIST SP+LENGTH FREEMAIN R,LV=(0),A=(1) FREEMAIN UNITNAME LIST INSTEAD + OF EDTINFO ROUTINE SPACE , DONE DS 0H CLOSE (SYSPRINT) CLOSE SYSPRINT DATASET SPACE , * *----------------------------------* * * END OF PROCESSING * * *----------------------------------* SLR 15,15 LOAD RETURN CODE = 0 B EXITPROC DO EXIT PROCESSING EJECT , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA ANAMELST DC A(0) GENERATED NAME LIST POINTER ADEVNLST DC A(0) GENERATED DEVN LIST POINTER DVNLSTSZ DC F'4096' DEVICE NUMBER LIST STORAGE SIZE SPACE , * 0----+----1----+----2----+----3----+----4----+---- TITLINE1 DC CL80'UNITNAME=@@@@@@@@ ASSOCIATED DEVICE NUMBER' UNITNAME EQU TITLINE1+9,8 TITLINE2 DC CL80'===================================================+ ============================' OUTLINE1 DC CL80' ' BLANK DC CL80' ' SYSPRINT DCB DDNAME=SYSPRINT, DCB FOR SYSPRINT DATASET + DSORG=PS,MACRF=PM,RECFM=FB,BLKSIZE=0,LRECL=80 *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * DSECTS * *---------------------------------------------------------------------* DNAMELST DSECT , DNAMLSP DC AL1(0) SUBPOOL NUMBER FOR FREEMAIN DNAMLSZ DC AL3(0) ALLOCATED STORAGE SIZE DNAML# DC F'0' NUM OF NAME ENTRIES DNAMLNAM DC CL8' ' 1ST DEVICE NAME ENTRY SPACE , DDEVNLST DSECT , DDEVNSZ DC AL4(0) ALLOCATED STORAGE SIZE DDEVN# DC F'0' NUM OF DEVN ENTRIES DDEVNNAM DC CL4' ' 1ST DEVICE NUMBER ENTRY *---------------------------------------------------------------------* IEFUCBOB PREFIX=YES 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 // //