//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.4 * * ===================================================== * * LINK LIBRARY LOOK-UP(BUILD LINKLST DATASET LIST). * * SIMULATE 'D PROG,LNKLST' COMMAND. * *********************************************************************** MAINPROC DS 0H OPEN (SYSPRINT,OUTPUT) OPEN SYSPRINT DATASET USING DLAAHDR,HDRAREA ADDRESS TO LNKLST HEADER CSVDYNL REQUEST=LIST, ISSUE CSVDYNL TO QUERY + ANSAREA=HDRAREA, ACTUAL LNKLST SIZE+ ANSLEN=LDRAREA STCM RF,B'0011',DOUBLE SAVE RETURN CODE STCM R0,B'0011',DOUBLE+2 SAVE REASON CODE CLC DOUBLE(4),=XL4'00040403' INSUFFICIENT STORAGE ? BNE EXIT12 NO, ABORT PROCESSING(CC=12) SPACE , L R0,DLAAHTLEN LOAD ANSWER AREA LENGTH NEEDED GETMAIN RU,LV=(0),LOC=ANY OBTAIN ANSWER AREA STORAGE LR R6,R1 GR6 --> ANSWER AREA CSVDYNL REQUEST=LIST, ISSUE CSVDYNL TO BUILD + ANSAREA=(6), ACTUAL LNKLST+ ANSLEN=DLAAHTLEN L R7,DLAAHFIRSTLS@-DLAAHDR(,R6) LOAD 1ST LNKLST ENTRY LOOPSET DS 0H USING DLAALS,R7 ADDRESS IT L R0,DLAALSLNKLSTSEQ# SET SEQ# CVD R0,DOUBLE I UNPK TITLINE1+26(2),DOUBLE I OI TITLINE1+27,C'0' V MVC TITLINE1+34(16),DLAALSNAME SET LNKLST SET NAME MVI TITLINE1+51,C' ' TM DLAALSFLAGS,DLAALSCURRENT CURRENT LNKLST ? BNO *+4+4 NO, MVI TITLINE1+51,C'*' YES, INDICATE IT LH R0,DLAALS#DS SET DS# CVD R0,DOUBLE I UNPK TITLINE1+58(4),DOUBLE I OI TITLINE1+61,C'0' V PUT SYSPRINT,TITLINE1 PRINT TITLE LINE-1 PUT SYSPRINT,TITLINE2 PRINT TITLE LINE-2 PUT SYSPRINT,TITLINE3 PRINT TITLE LINE-3 SPACE , L R8,DLAALSFIRSTDS@ LOAD 1ST DATASET ENTRY USING DLAADS,R8 ADDRESS IT LA R9,1 SET SEQUENCE NUMBER LOOPDS DS 0H CVD R9,DOUBLE SET SEQ# UNPK SEQ#,DOUBLE I OI SEQ#+3,C'0' V MVC VOL,DLAADSVOLID SET VOLUME NAME TM DLAADSFLAGS,DLAADSSMSMANAGED SMS MANAGED ? BNO *+4+6 NO, MVC VOL,=CL6'*SMS*' YES, INDICATE IT MVC APF,=CL3' ' TM DLAADSFLAGS,DLAADSAPF APF LIBRARY ? BNO *+4+6 NO, MVC APF,=CL3'APF' YES, INDICATE IT MVC DSN,DLAADSNAME SET DATASET NAME PUT SYSPRINT,OUTLINE1 PRINT DEVICE DATA LINE LA R9,1(,R9) INCREMENT SEQ# ICM R8,B'1111',DLAADSNEXT@ LOAD NEXT DATASET ENTRY BNZ LOOPDS PRINT NEXT LNKLST DATASET PUT SYSPRINT,BLANK PRINT BLANK LINE SPACE , ICM R7,B'1111',DLAALSNEXT@ LOAD NEXT LNKLST SET ENTRY BNZ LOOPSET PRINT NEXT LNKLST SET LIST SPACE , L R0,DLAAHTLEN LOAD ANSWER AREA LENGTH NEEDED FREEMAIN RU,LV=(0),A=(6) RELEASE ANSWER AREA STORAGE CLOSE (SYSPRINT) CLOSE SYSPRINT DATASET SPACE , * *----------------------------------* * * END OF PROCESSING * * *----------------------------------* EXIT0 DS 0H SLR 15,15 LOAD RETURN CODE = 0 B EXITPROC DO EXIT PROCESSING EXIT12 DS 0H LA 15,12 LOAD RETURN CODE = 12 B EXITPROC DO EXIT PROCESSING EJECT , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA HDRAREA DC (DLAAHDR_LEN)X'00' LNKLST HEADER AREA LDRAREA DC A(DLAAHDR_LEN) AREA LENGTH * 0----+----1----+----2----+----3----+----4----+----5 TITLINE1 DC CL80'LNKLST LIBRARY LIST, SEQ#=@@ NAME=@@@@@@@@@@@@@@@@(+ @) DS#=@@@@' TITLINE2 DC CL80'SEQ# VOLUME APF DSN' TITLINE3 DC CL80'===================================================+ ===========' BLANK DC CL80' ' OUTLINE1 DC CL80'@@@@ @@@@@@ @@@ @' SEQ# EQU OUTLINE1+0,4 VOL EQU OUTLINE1+5,6 APF EQU OUTLINE1+12,3 DSN EQU OUTLINE1+16,44 SPACE , 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 * *---------------------------------------------------------------------* CSVDLAA , CSVDYNL ANSWER AREA MAP *---------------------------------------------------------------------* * 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 // //