//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 //*------- The followings are DD statements for utility uses ---------- //SYSPRINT DD SYSOUT=* //SYSUT1 DD DISP=SHR,DSN=MY.XXXX //SYSUT2 DD DISP=SHR,DSN=MY.XXXX //SYSIN DD DUMMY // PEND //********************************************************************* //MYASMPGM EXEC ASMCG //ASM.SYSIN DD * LCLC &MDLNM &MDLNM SETC 'CALLUTY2' 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 ATTACH SERVICE. * * ===================================================== * * >>> Correct for z/OS V1R13 or higher. 2020/04/09 <<< * * >>> No longer need AC(1) authority to call <<< * * >>> IEBCOPY under z/OS V1R13 or higher. <<< * *********************************************************************** 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 IEBCOPY VIA ATTACH SVC * * * ============================== * * * - SETUP CALLING PARAMETERS * * * - ISSUE ATTACH SVC * * *----------------------------------* MVI EOTECB,0 CLEAR SYNCHRONOUS ECB ATTACH EP=IEBCOPY, ATTACH DFSMSdfp UTILITY TASK + PARAM=(OPTPARM),VL=1, GR15 CONTAIN UTILITY COMP CODE + ECB=EOTECB,SZERO=NO AT END OF TASK. LTR RF,RF SUCCESSFUL ? BNZ EXITPROC NO, ST R1,ATCB SAVE ATTACHED TASK TCB ADDRESS WAIT ECB=EOTECB WAIT UNTIL UTILITY TASK DONE DETACH ATCB DETACH UTILITY TASK IC RF,EOTECB+3 LOAD UTILITY TASK COMP CODE 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 * * * AND CONTROLS * * * ============================== * * * 1. OPTIONAL PARAMETER * * * 2. DDNAME LIST * * *----------------------------------* OPTPARM DS 0H EXEC STMT PARM PARAMETER OPTPLEN DC AL2(0) VALID PARM TEXT LENGTH SPACE , ATCB DC A(0) DFSMSdfp UTILITY TASK TCB EOTECB DC F'0' DFSMSdfp UTILITY PROCESSING + SYNCHRONOUS ECB 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 // //