//JOBNAME JOB (ACCT),NAME,CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1) //********************************************************************* //ASMCG PROC AOPT=,APARM=,LOPT=,NCAL=NCAL, // MAC1='SYS1.MACLIB', // MAC2='SYS1.MACLIB', // MAC3='SYS1.MODGEN', // LLIB='NULLFILE' //ASM EXEC PGM=ASMA90, // PARM=('OBJ,NODECK,LC(32767),XREF(SHORT),TERM,RLD,ASA,&AOPT', // 'US(MAP,WARN(11)),SYSPARM(&APARM)') //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=3120,LRECL=80) //SYSPRINT DD SYSOUT=* //SYSTERM DD SYSOUT=* //GO EXEC PGM=LOADER,COND=(5,LT,ASM), // PARM=('LIST,LET,MAP,PRINT,XREF,&NCAL,&LOPT') //SYSLOUT DD DUMMY //SYSLIB DD DISP=SHR,DSN=&LLIB //SYSLIN DD DSN=*.ASM.SYSLIN,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //SYSPRINT DD SYSOUT=* //*------- The followings are DD statements for utility uses ---------- //UTYPRINT DD SYSOUT=* //UTYUT1 DD DISP=SHR,DSN=MY.JCL(@RESMOV1) //UTYUT2 DD DISP=SHR,DSN=MY.WORK.SEQSET2 //UTYIN DD DUMMY // PEND //********************************************************************* //MYASMPGM EXEC ASMCG //ASM.SYSIN DD * LCLC &MDLNM &MDLNM SETC 'CALLUTY1' SET THIS MODULE NAME &MDLNM TITLE 'TEST AND WORK ASSEMBLER PROGRAM' *---------------------------------------------------------------------* * HOUSEKEEPING PROCEDURE * * ===================================================== * *---------------------------------------------------------------------* * *----------------------------------* * * ENTRY PROCESSING * * *----------------------------------* &MDLNM CSECT , DEFINE CODE SECTION &MDLNM AMODE 31 DEFINE DEFAULT AMODE &MDLNM RMODE 24 DEFINE DEFAULT RMODE SAVE (14,12),,* SAVE CALLER REGISTERS USING &MDLNM,RC DEFINE OUR BASE REGISTERS LA RC,0(,RF) LOAD OUR 1ST BASE ADDRESS LR RF,RD SAVE CALLER SAVEAREA CNOP 0,4 INSURE FULL WORD BOUNDARY BAS RD,*+4+72 AROUND OUR SAVEAREA DC 18F'-1' OUR GPR SAVEAREA ST RF,4(,RD) SAVE CALLER SAVEAREA POINTER ST RD,8(,RF) SET BACK CHAIN FOR LINK TRACE B MAINPROC DO MAIN PROCESSING SPACE , * *----------------------------------* * * EXIT PROCESSING * * *----------------------------------* EXITPROC DS 0H L RD,4(,RD) LOAD CALLER SAVEAREA ST RF,16(,RD) PASS RETURN CODE TO CALLER LM RE,RC,12(RD) RESTORE CALLER REGISTERS BSM 0,RE RETURN TO CALLER EJECT , *********************************************************************** * MAIN LINE PROCESSING * * ===================================================== * * GR1 -- PSEUDO EXEC PARAMETER PLIST * * GR12 - BASE REGISTER * * GR13 - OUR REGISTER SAVEAREA * *---------------------------------------------------------------------* * SAMPLE CODE OF 'MVS ADVANCED SKILL Vol-2' CHAPTER A.1 * * ===================================================== * * CALL DFSMSdfp UTILITY PROGRAM VIA MVS LINK SERVICE. * *********************************************************************** MAINPROC DS 0H L R1,0(,R1) LOAD EXEC PARM PLIST LH R0,0(,R1) LOAD STRING LENGTH LA R1,2(,R1) GR1 --> BEGINNING OF PARM + GR0 --> REMAINING LENGTH SPACE , * *----------------------------------* * * CALL IEBGENER VIA LINK SVC * * * ============================== * * * - SETUP CALLING PARAMETERS * * * - ISSUE LINK SVC * * *----------------------------------* LA R1,UTYPLIST GR1 --> CALLING PLIST LINK EP=IEBGENER CALL DFSMSdfp UTILITY MODULE + GR15 CONTAIN UTILITY COMP CODE + AT RETURN TO HERE. SPACE , B EXITPROC DO EXIT PROCESSING WITH UTY-CC 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 (CONSTANTS) * *********************************************************************** DS 0D * *----------------------------------* * * MISCELLANEOUS * * *----------------------------------* SPACE , *********************************************************************** * DATA AREA * *********************************************************************** * *----------------------------------* * * MISCELLANEOUS * * *----------------------------------* SPACE , * *----------------------------------* * * DFSMSMdfp UTILITY PARAMETERS * * * ============================== * * * 1. OPTIONAL PARAMETER * * * 2. DDNAME LIST * * *----------------------------------* UTYPLIST CALL ,(OPTPARM,DDNLIST), DFSMSdfp UTILITY CALLING PLIST + VL,MF=L OPTPARM DS 0H EXEC STMT PARM PARAMETER OPTPLEN DC AL2(L'OPTPTXT) VALID PARM TEXT LENGTH OPTPTXT DC C'SDB=YES' PARM TEXT STRING SPACE , DDNLIST DS 0H DC AL2(DDNLLEN) DDNLIST LENGTH DC XL8'00' --- RESERVED --- DC XL8'00' --- RESERVED --- DC XL8'00' --- RESERVED --- DC XL8'00' --- RESERVED --- DC CL8'UTYIN' FOR DDN=SYSIN DC CL8'UTYPRINT' FOR DDN=SYSPRINT DC XL8'00' --- RESERVED --- DC CL8'UTYUT1' FOR DDN=SYSUT1 DC CL8'UTYUT2' FOR DDN=SYSUT2 DC CL8'SYSUT3' FOR DDN=SYSUT3 DC CL8'SYSUT4' FOR DDN=SYSUT4 DDNLLEN EQU *-DDNLIST SPACE , *---------------------------------------------------------------------* LTORG , USER LITERAL PLACE AT HERE *---------------------------------------------------------------------* DROP , FORGET ALL BASE REGISTER EJECT , *********************************************************************** * DATA AREA (OUTSIDE OUR BASE) * *********************************************************************** *---------------------------------------------------------------------* * LOCAL WORKAREA * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * LOCAL DSECTS * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * GLOBAL DSECTS * *---------------------------------------------------------------------* *---------------------------------------------------------------------* * S/370, ESA/390 REGISTER EQUATES * *---------------------------------------------------------------------* *------- YREGS , OS: REGISTER EQUATES R0 EQU 0 GENERAL REGISTER 0 R1 EQU 1 GENERAL REGISTER 1 R2 EQU 2 GENERAL REGISTER 2 R3 EQU 3 GENERAL REGISTER 3 R4 EQU 4 GENERAL REGISTER 4 R5 EQU 5 GENERAL REGISTER 5 R6 EQU 6 GENERAL REGISTER 6 R7 EQU 7 GENERAL REGISTER 7 R8 EQU 8 GENERAL REGISTER 8 R9 EQU 9 GENERAL REGISTER 9 RA EQU 10 GENERAL REGISTER 10 RB EQU 11 GENERAL REGISTER 11 RC EQU 12 GENERAL REGISTER 12 RD EQU 13 GENERAL REGISTER 13 RE EQU 14 GENERAL REGISTER 14 RF EQU 15 GENERAL REGISTER 15 R10 EQU 10 GENERAL REGISTER 10 R11 EQU 11 GENERAL REGISTER 11 R12 EQU 12 GENERAL REGISTER 12 R13 EQU 13 GENERAL REGISTER 13 R14 EQU 14 GENERAL REGISTER 14 R15 EQU 15 GENERAL REGISTER 15 *---------------------------------------------------------------------* * OS CONTROL BLOCKS * *---------------------------------------------------------------------* PRINT NOGEN END // //