//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) // 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-2' CHAPTER 5.1 * * ===================================================== * * ALLOCATE SYSOUT DATASET. * * WHEN DYNALLOC FAILED, ANY ERROR MESSAGES WILL BE SENT TO * * JOBLOG AND PROGRAM ABENDED U0001 WITH GR15 CONTAIN SVC99 * * ERROR AND INFO CODE. * *********************************************************************** MAINPROC DS 0H * *----------------------------------* * * SETUP DYNALLOC PARAMETERS * * *----------------------------------* USING S99RBP,RBPAREA ADDRESS TO SVC99 RB POINTER USING S99RB,RBAREA ADDRESS TO SVC99 RB AREA SPACE , XC S99RB(S99RBEND-S99RB),S99RB CLEAR SVC99 RB AREA MVI S99RBLN,(S99RBEND-S99RB) SET RB AREA LENGTH MVI S99VERB,S99VRBAL SET VERB CODE=ALLOCATION LA R1,TULIST LOAD TEXT UNIT LIST ADDRESS ST R1,S99TXTPP SET IT INTO RB SPACE , * *--------------------------------------* * * ALLOCATE AND OPEN SYSOUT DATASET-1 * * *--------------------------------------* MVC DDNAME(2),=Y(DALRTDDN) SET KEY CODE(RETURN DDNAME) MVI CLASS+2,0 INDICATES SYSOUT=* SPACE , LA R2,TULIST LOAD TEXT UNIT LIST ADDRESS USING S99TUPL,R2 ADDRESS IT LA R0,DDNAME LOAD 1ST TEXT UNIT ADDRESS ST R0,S99TUPTR SET IT LA R2,L'S99TUPTR(,R2) LOCATE TO NEXT ENTRY LA R0,CLASS LOAD 2ND TEXT UNIT ADDRESS ST R0,S99TUPTR SET IT LA R2,L'S99TUPTR(,R2) LOCATE TO NEXT ENTRY LA R0,FREECLS LOAD 3RD TEXT UNIT ADDRESS ST R0,S99TUPTR SET IT OI S99TUPTR,S99TUPLN INDICATE FINAL ENTRY DROP R2 FORGET TEXT UNIT PTR LIST SPACE , LA R1,S99RBP LOAD RB POINTER FIELD ADDRESS DYNALLOC , CALL DYNALLOC SERVICE LTR RF,RF SUCCESSFUL ? BNZ DYNALERR NO, DO ERROR PROCESSING SPACE , * *--------------------------------------* * * ALLOCATE AND OPEN SYSOUT DATASET-2 * * *--------------------------------------* MVC DDNAME(2),=Y(DALDDNAM) SET KEY CODE(DDNAME) MVC DDNAME+6(8),=CL8'OUTLIST' SET DDNAME=OUTLIST MVC CLASS+2(2),=H'1' INDICATES SYSOUT=P MVI CLASS+6,C'P' MVC FORM+6(4),=CL4'USR2' SET FORM NAME SPACE , LA R2,TULIST LOAD TEXT UNIT LIST ADDRESS USING S99TUPL,R2 ADDRESS IT LA R0,DDNAME LOAD 1ST TEXT UNIT ADDRESS ST R0,S99TUPTR SET IT LA R2,L'S99TUPTR(,R2) LOCATE TO NEXT ENTRY LA R0,CLASS LOAD 2ND TEXT UNIT ADDRESS ST R0,S99TUPTR SET IT LA R2,L'S99TUPTR(,R2) LOCATE TO NEXT ENTRY LA R0,FORM LOAD 3RD TEXT UNIT ADDRESS ST R0,S99TUPTR SET IT LA R2,L'S99TUPTR(,R2) LOCATE TO NEXT ENTRY LA R0,FREECLS LOAD 4TH TEXT UNIT ADDRESS ST R0,S99TUPTR SET IT OI S99TUPTR,S99TUPLN INDICATE FINAL ENTRY DROP R2 FORGET TEXT UNIT PTR LIST SPACE , LA R1,S99RBP LOAD RB POINTER FIELD ADDRESS DYNALLOC , CALL DYNALLOC SERVICE LTR RF,RF SUCCESSFUL ? BNZ DYNALERR NO, DO ERROR PROCESSING SPACE , *---------------------------------------------------------------------* B ENDPROGM GO TO EPILOGUE PROCEDURE DYNALERR DS 0H STM RF,R0,DOUBLE SAVE ERROR CODE WTO 'DYNALLOC ERROR, GR15 CONTAIN ERROR AND INFO CODE WHICH + PRINTED ON JOBLOG SYMPTOM DUMP.',MCSFLAG=HRDCPY ZOSv23 L RF,DOUBLE+4 GR15 <-- DYNALLOC ERRCD ZOSv23 ABEND 1,DUMP ABEND WITH U0001 ZOSv23 SPACE , * *----------------------------------* * * END OF PROCESSING * * *----------------------------------* ENDPROGM DS 0H SLR 15,15 LOAD RETURN CODE = 0 B EXITPROC DO EXIT PROCESSING EJECT , *********************************************************************** * DATA AREA * *********************************************************************** DS 0D *---------------------------------------------------------------------* DOUBLE DC D'0' DOUBLE WORD WORKAREA SPACE , * *----------------------------------* * * DYNALLOC PARAMETER LIST * * *----------------------------------* RBPAREA CALL ,(RBAREA),VL,MF=L SVC99 RB POINTER RBAREA DC (S99RBEND-S99RB)X'00' SVC99 RB AREA SPACE , TULIST CALL ,(0,0,0,0),MF=L SVC99 TEXT UNIT LIST SPACE , * *----------------------------------* * * DYNALLOC TEXT UNITS * * *----------------------------------* DDNAME DS 0H DC AL2(0) KEY=RETURN DDNAME OR DDNAME DC AL2(1) PARM# DC AL2(8) PARM LENGTH DC CL8' ' (ALLOCATED DDNAME) FREECLS DS 0H DC AL2(DALCLOSE) KEY=FREE AT CLOSE DC AL2(0) PARM# CLASS DS 0H DC AL2(DALSYSOU) KEY=SYSOUT DC AL2(0) PARM# DC AL2(1) PARM LENGTH DC CL1' ' (SYSOUT CLASS) FORM DS 0H DC AL2(DALSFMNO) KEY=SYSOUT=(,,FORMNAME) DC AL2(1) PARM# DC AL2(4) PARM LENGTH DC CL4' ' (FORMNAME) *---------------------------------------------------------------------* LTORG , LITERAL POOL AT HERE DROP , FORGET ALL BASE REGISTERS EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * DSECTS * *---------------------------------------------------------------------* IEFZB4D0 , SVC99 PLIST DSECTS IEFZB4D2 , SVC99 TEXT UNIT EQUATES *---------------------------------------------------------------------* * 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 // //