This sample was Assembled and tested during September 2002 on an OS/390 V2.R9 system.
NOGEN |
||||
ESDS1 |
||||
*,R15 |
INITIAL BASE REGISTER |
|||
BEGIN |
START |
|||
DC |
AL1(8) |
|||
DC |
CL6'ESDS1' |
PROGRAM NAME FOR DEBUGGING |
||
DS |
0F |
MY SAVE AREA |
||
DC |
||||
PRESAVE |
DC |
AL4(*-*) |
ADDR OF PREVIOUS SAVE AREA |
|
NEXTSAVE |
DC |
AL4(*-*) |
ADDR OF NEXT SAVE AREA |
|
SREG14 |
DC |
AL4(*-*) |
GENERAL |
|
SREG15 |
DC |
AL4(*-*) |
PURPOSE |
|
SREG0 |
DC |
13AL4(*-*) |
REGISTER SAVE |
|
SAVEEND |
DS |
0H |
||
START |
EQU |
* | ||
R15 |
LOOSE INITIAL BASE REGISTER |
|||
R14,R12,12(R13) |
SAVE THE REGISTERS ON ENTRY. |
|||
LR |
R12,R15 |
SET UP MY |
||
BEGIN,R12 |
BASE REGISTER |
|||
ST |
R13,PRESAVE |
PERFORM SAVE |
||
LA |
R15,SAVEAREA |
AREA |
||
ST |
R15,8(R13) |
CHAINING |
||
LR |
R13,R15 |
R13 = ADDR OF MY SAVE AREA. |
||
(OUTACB,,SYSUT1,INPUT) OPEN THE FILES. |
||||
* |
||||
* |
PREPARE TO BUILD A LIST OF NAMES IN OUTAREA. | |||
* |
||||
READREC |
SYSUT1,INAREA |
READ A RECORD |
||
RPL=OUTRPL |
WRITE A RECORD |
|||
B |
READREC |
AND REPEAT TILL FILE EXHAUSTED. |
||
|
3 | ||||
EXIT |
CLOSE |
(OUTACB,,SYSUT1) |
CLOSE BOTH FILES. |
|
SR |
R15,R15 |
FORCE COND CODE ZERO |
||
L |
R13,PRESAVE |
R13 = PREVIOUS SAVE AREA ADDR. |
||
L |
R14,12(R13) |
RESTORE REGISTERS |
||
R0,R12,20(R13) |
EXCEPT REGISTER 15 |
|||
BR |
R14 |
RETURN TO CALLER (OS/390) |
||
EJECT | ||||
SPACE |
1 | |||
OUTACB |
ACB |
AM=VSAM,DDNAME=OUTDD,BUFND=5,MACRF=(SEQ,OUT) |
||
OUTRPL |
RPL |
ACB=OUTACB,AM=VSAM,AREA=INAREA,AREALEN=80, |
* |
|
OPTCD=(ADR,SEQ),RECLEN=80 |
||||
INAREA |
DS |
CL80 |
||
SPACE |
1 | SYSUT1 |
MACRF=GM,RECFM=F,LRECL=80,DDNAME=SYSUT1,DSORG=PS, |
* |
|
EODAD=EXIT | ||||
SPACE |
1 | |||
R0 |
0 | |||
R1 |
EQU |
1 | ||
R2 |
EQU |
2 | ||
R3 |
EQU |
3 | ||
R4 |
EQU |
4 | ||
R5 |
EQU |
5 | ||
R6 |
EQU |
6 | ||
R7 |
EQU |
7 | ||
R8 |
EQU |
8 | ||
R9 |
EQU |
9 | ||
R10 |
EQU |
10 | ||
R11 |
EQU |
11 | ||
R12 |
EQU |
12 | ||
R13 |
EQU |
13 | ||
R14 |
EQU |
14 | ||
R15 |
EQU |
15 | ||
Copyright © KMS-IT Limited 2002