Note: - Change "ibmuser" to your userid - Change "tsounit" to a valid unit name for TSO datasets - Change "viounit" to a valid unit name at your shop for work dataset, preferably VIO for performance. - I use a second node of "SPFTEMP1" because at our shop these datasets get cleaned up by our DASD management functions and you don't clog up the catalogs and DASD volumes with temporary files. //jobcard here 00010000 //* 00020000 //** START FRESH 00030000 //* 00040000 //DELETE EXEC PGM=IDCAMS 00050000 //SYSPRINT DD SYSOUT=* 00060000 //SYSIN DD * 00070000 DELETE 'ibmuser.SPFTEMP1.PROG1.SYSADATA' 00080000 DELETE 'ibmuser.SPFTEMP1.PROG1.ASMLANGX' 00090000 SET MAXCC = 0 00100000 //* 00110000 //** Assemble program and create a ADATA file for later 00120000 //* 00130000 //C EXEC PGM=ASMA90,REGION=9M, 00140000 // PARM='OBJECT,BATCH,TERM,NOXREF,LANGUAGE(EN),ASA,ADATA,RENT' 00150000 //* //STEPLIB DD DISP=SHR,DSN=ASMA.V1R2M0.SASMMOD1, HLASM 00160000 //* // UNIT=3390,VOL=SER=xxxxxx 00170000 //SYSLIB DD DISP=SHR,DSN=SYS1.MACLIB 00180000 // DD DISP=SHR,DSN=SYS1.MODGEN 00190000 //SYSPUNCH DD DUMMY 00200000 //SYSPRINT DD SYSOUT=* 00210000 //SYSTERM DD DUMMY 00220000 //SYSUT1 DD UNIT=viounit,SPACE=(CYL,(20,20)),DSN=&&SYSUT1 00230000 //SYSLIN DD DISP=(,PASS),UNIT=viounit,SPACE=(CYL,(5,5,0)), 00240000 // DCB=(BLKSIZE=400),DSN=&&LOADSET 00250000 //SYSUDUMP DD SYSOUT=* 00260000 //ABNLDUMP DD SYSOUT=* 00270000 //SYSADATA DD DSN=ibmuser.SPFTEMP1.PROG1.SYSADATA, 00280000 // DCB=(LRECL=32756,BLKSIZE=32760,RECFM=VB), 00290000 // DISP=(,CATLG),UNIT=tsounit, 00300000 // SPACE=(CYL,(5,2),RLSE) 00310000 //SYSIN DD * 00320000 * Sample program that starts up and then creates an ABEND 00330000 PROG1 CSECT , 00340000 * 00350000 ** Create a standard O/S eyecatcher 00360000 * 00370000 EC B ECL(0,R15) Bump past Eyecatcher 00380000 DC AL1(ECLITL) Length of eyecatcher 00390000 ECLIT DC C'PROG1 &SYSDATC &SYSTIME' 00400000 DC C'- Test program for the HLASM debugger' 00410000 ECLITL EQU *-ECLIT 00420000 DS 0H Ensure halfword alignment 00430000 ECL EQU *-EC 00440000 * 00450000 ** Standard ESA entry housekeeping 00460000 * 00470000 BAKR R14,0 Save regs 00480000 LAE R12,0(R15,0) Get base register 00490000 USING PROG1,R12 Get addressibility 00500000 SAC 0 00510000 SYSSTATE ASCENV=P 00520000 * 00530000 ** Do some things and then ABEND! 00540000 * 00550000 EREG R0,R1 Restore regs 0 and 1 00560000 L R2,0(R1) Get parameter address 00570000 SLR R15,R15 Clear register 15 00580000 MVC 0(5),0(R15) Get a real nice S0C4 ABEND! 00590000 * 00600000 ** Release resources and return to caller 00610000 * 00620000 EXIT DS 0H 00630000 SLR R15,R15 Set return code 00640000 PR Return to caller 00650000 * 00660000 LTORG , 00670000 YREGS , 00680000 END 00690000 //* 00700000 //** Link edit program 00710000 //* 00720000 //L EXEC PGM=IEWL,COND=(4,LT,C), 00730000 // DPRTY=(15,15), 00740000 // PARM='XREF,LET,NCAL' 00750000 //SYSUT1 DD UNIT=viounit,SPACE=(CYL,(3,2)),DSN=&&LSYSUT1 00760000 //SYSPRINT DD SYSOUT=* 00770000 //SYSLMOD DD DISP=SHR,DSN=ibmuser.TEST.LOAD(PROG1) 00780000 //SYSLIN DD DISP=(OLD,DELETE),DSN=&&LOADSET 00790000 //* 00800000 //** Convert the SYSADATA into the ASMLANGX output 00810000 //* 00820000 //ASMLANGX EXEC PGM=ASMLANGX,COND=(4,LT,C), 00830000 // DPRTY=(15,15), 00840000 // PARM='PROG1 (ASM LOUD ERROR DEBUG' 00850000 //* //STEPLIB DD DISP=SHR,DSN=ASMT.V1R2M0.SASMMOD2, 00860000 //* // UNIT=3390,VOL=SER=xxxxxx 00870000 //SYSADATA DD DISP=SHR,DSN=ibmuser.SPFTEMP1.PROG1.SYSADATA 00880000 //ASMLANGX DD DISP=(,CATLG),DSN=ibmuser.SPFTEMP1.PROG1.ASMLANGX, 00890000 // UNIT=tsounit, 00900000 // DCB=(LRECL=1562,BLKSIZE=27998,RECFM=VB), 00910000 // SPACE=(CYL,(2,2,2)) 00920000 //LANGXLOG DD SYSOUT=* 00930000