SAMPLE CODE:-
//ASMCNT JOB 1,NOTIFY=&SYSUID
//CMPLNK EXEC HLASMCLG
//C.SYSIN DD *
ADD TITLE 'contest program'
ADD CSECT
ADD AMODE 31
ADD RMODE 24
*
*--------------------------------------------------------------------*
* *
* register equates *
* *
*--------------------------------------------------------------------*
*
R0 EQU 0 register 0
BASEREG EQU 12 base register
SAVEREG EQU 13 save area register
RETREG EQU 14 caller's return address
ENTRYREG EQU 15 entry address
RETCODE EQU 15 return code
EJECT
*
*--------------------------------------------------------------------*
* *
* standard entry setup, save area chaining, establish *
* base register and addressibility *
* *
*--------------------------------------------------------------------*
*
USING ADD,ENTRYREG establish addressibility
B SETUP branch around eyecatcher
DC CL8'ADD' program name
DC CL8'&SYSDATE' program assembled date
SETUP STM RETREG,BASEREG,12(SAVEREG) save caller's registers
BALR BASEREG,R0 establish base register
DROP ENTRYREG drop initial base register
USING *,BASEREG establish addressibilty
LA ENTRYREG,SAVEAREA point to this program save area
ST SAVEREG,4(,ENTRYREG) save address of caller's save
* area
ST ENTRYREG,8(,SAVEREG) save address of this program
* save area
LR SAVEREG,ENTRYREG point to this program savearea
EJECT
*
*--------------------------------------------------------------------*
* *
* program body *
* *
*--------------------------------------------------------------------*
OPEN (PRTLINE,OUTPUT) Open output file
MVC LINE(26),MSGX
PUT PRTLINE,LINE
MVC LINE,BLANK
LOOPINIT DS 0H
SR 2,2 Clear reg 2
L 2,=F'20' Store 10 in reg 2
L 3,=F'1' Store 1 in reg 3
*
LOOP DS 0H
*
CVD 3,PACKAREA Convert to decimal, store in packarea
UNPK OUT,PACKAREA Convert to printable, store in out
MVC LINE(8),OUT Move characters from out to line
MVZ LINE+7(1),LINE Move zone bits
PUT PRTLINE,LINE Put line in output file
A 3,=F'1' Add 1 to current total in reg 3
*
BCT 2,LOOP Subtract 1 from reg 2, if not zero
* then go to LOOP label
CLOSE (PRTLINE) Close output file
*
*--------------------------------------------------------------------*
* *
* standard exit - restore caller's registers and *
* return to caller *
* *
*--------------------------------------------------------------------*
*
EXIT DS 0H halfword boundary alignment
L SAVEREG,4(,SAVEREG) restore caller's save area addr
L RETREG,12(,SAVEREG) restore return address register
LM R0,BASEREG,20(SAVEREG) restore all regs. except reg15
BR RETREG return to caller
EJECT
*
*--------------------------------------------------------------------*
* *
* storage and constant definitions. *
* print output definition. *
* *
*--------------------------------------------------------------------*
*
LINE DS 0CL80
DC C' '
DC CL79' '
PRTLINE DCB DSORG=PS,DDNAME=PRTLINE,MACRF=PM, X
RECFM=FB,LRECL=80
SUM DC P'01'
ONE DC P'01'
TOT DS PL2
OUT DC X'4040404040404040'
MSGX DC CL26'Hi! I can count very fast.'
BLANK DC CL80''
PACKAREA DS CL8
SAVEAREA DC 18F'-1' register save area
END ADD
//G.PRTLINE DD DSN=&SYSUID..OUTPUT(MYOUTPUT),DISP=SHR
OUTPUT :-
Hi! I can count very fast.
00000001
00000002
00000003
00000004
00000005
00000006
00000007
00000008
00000009
00000010
00000011
00000012
00000013
00000014
00000015
00000016
00000017
00000018
00000019
00000020
QUESTION :-
1. Upload the sample to your PDS IBM dataset JCL as member name ASMPGM in your JCL dataset.
2. SUBMIT it so that it will execute correctly (return code 0). It will create a member called MYOUTPUT in your OUTPUT dataset. Screen print the member ASMPGM in your JCL PDS. Also print out the member MYOUTPUT in your OUTPUT dataset.
The expected result in MYOUTPUT will be:
Hi! I can count very fast.
00000001
00000002
00000003
00000004
00000005
00000006
00000007
00000008
00000009
00000010
00000011
00000012
00000013
00000014
00000015
00000016
00000017
00000018
00000019
00000020
3. Now modify your program to reduce the count to 11 and print out a message at the end in caps - THIS IS MY FINAL ASSIGNMENT.
4. Screen print the modified source program ASMPGM in your JCL dataset and the MYOUTPUT member in your OUTPUT dataset.