//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 * * ===================================================== * * APF LIBRARY LOOK-UP(BUILD APF DATASET LIST). * * SIMULATE 'D PROG,APF' COMMAND. * *********************************************************************** MAINPROC DS 0H OPEN (SYSPRINT,OUTPUT) OPEN SYSPRINT DATASET CSVAPF REQUEST=QUERYFORMAT, ISSUE CSVAPF TO QUERY + FORMAT=DOUBLE APFLIST FORMAT MVC TITLINE1+25(7),=CL7'DYNAMIC' CLI DOUBLE,1 DYNAMIC APFLIST ? BE *+4+6 YES, MVC TITLINE1+25(7),=CL7'STATIC' PUT SYSPRINT,TITLINE1 PRINT TITLE LINE-1 PUT SYSPRINT,TITLINE2 PRINT TITLE LINE-2 PUT SYSPRINT,TITLINE3 PRINT TITLE LINE-3 SPACE , USING APFHDR,HDRAREA ADDRESS TO APFLIST HEADER CSVAPF REQUEST=LIST, ISSUE CSVAPF TO QUERY + ANSAREA=HDRAREA, ACTUAL APFLIST 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,APFHTLEN LOAD ANSWER AREA LENGTH NEEDED GETMAIN RU,LV=(0),LOC=ANY OBTAIN ANSWER AREA STORAGE LR R6,R1 GR6 --> ANSWER AREA CSVAPF REQUEST=LIST, ISSUE CSVAPF TO BUILD + ANSAREA=(6), ACTUAL APFLIST+ ANSLEN=APFHTLEN L R7,APFHOFF-APFHDR(,R6) LOAD 1ST ENTRY OFFSET ALR R7,R6 LOCATE TO APF 1ST ENTRY USING APFE,R7 ADDRESS IT L R8,APFH#REC-APFHDR(,R6) LOAD NUM OF APF ENTRIES LA R9,1 SET SEQUENCE NUMBER PRNTLIST DS 0H CVD R9,DOUBLE SET SEQ# UNPK SEQ#,DOUBLE I OI SEQ#+3,C'0' V MVC VOL,APFEVOLUME SET VOLUME NAME MVC DSN,APFEDSNAME SET DATASET NAME AH R7,APFELEN LOCATE TO NEXT ENTRY PUT SYSPRINT,OUTLINE1 PRINT DEVICE DATA LINE LA R9,1(,R9) INCREMENT SEQ# BCT R8,PRNTLIST LOOP FOR NEXT APF ENTRY SPACE , L R0,APFHTLEN 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 (APFHDR_LEN)X'00' APFLIST HEADER AREA LDRAREA DC A(APFHDR_LEN) AREA LENGTH * 0----+----1----+----2----+----3----+----4----+----5 TITLINE1 DC CL80'APF LIBRARY LIST, FORMAT=@@@@@@@' TITLINE2 DC CL80'SEQ# VOLUME DSN' TITLINE3 DC CL80'===================================================+ =====' OUTLINE1 DC CL80'@@@@ @@@@@@ @' SEQ# EQU OUTLINE1+0,4 VOL EQU OUTLINE1+5,6 DSN EQU OUTLINE1+12,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 * *---------------------------------------------------------------------* CSVAPFAA , CSVAPF 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 // //