OUTACB ACB MACRF=(KEY,SEQ, x
. OUT)
.
GENCB BLK=RPL, Generate a request parameter list. x
ACB=OUTACB, x
AREA=WORK, x
AREALEN=100, x
ARG=RCDNO, x
OPTCD=(KEY,SEQ)
LTR 15,15
BNZ GENERR
LR 6,1 Save the address of the RPL.
LA 4,RRNTBLE+80 Initialize address of end of table.
LA 3,RRNTBLE Initialize index to relative record x
number table.
WRITERCD ... Move record into work area.
.
.
PUT RPL=(6)
LTR 15,15
BZ STRCDNO Branch, if PUT is successful.
LA 10,8
CLR 10,15 Test for logical error.
BNE PUTERR
TESTCB RPL=(6),FDBK=8, Test for duplicate record. x
ERET=TESTERR
BE WRITERCD Branch, if duplicate record, and try x
to store record in next slot.
B PUTERR
STRDCNO ...
MVC 0(4,3)RCDNO Store relative record number in x
RRNTABLE.
LA 3,4(3) Increment to next table entry.
CLR 3,4
BE RETURN If table full, return to caller.
B WRITERCD Write next record.
GENERR ... Error routine for GENCB macro.
TESTERR ... Error routine for TESTCB macro.
PUTERR ... Error routine for PUT macro.
RETURN ... Return to caller or terminate program.
RCDNO DS CL4 4-byte relative record number x
(argument) field.
RRNTBLE DS 20F Relative record number table.
WORK DS CL100 100-byte work area that contains x
record to be stored by PUT macro.
Each record is stored in the next available slot in the data set. When a record is successfully stored, its relative record number is recorded in a table.