The following example writes an 80-byte record.
Output Module
CULLUS93 CSECT
R0 EQU 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
STM R14,R12,12(R13) SAVE CALLER'S REGISTERS
BALR R3,0 ESTABLISH BASE REGISTER
USING *,R3
ST R13,SAVEAREA+4
LA R13,SAVEAREA
ST R13,SAVEAREA+8
L R4,0(R1) R4 POINTS TO OUTPUT BUFFER
L R5,8(R1) R5 POINTS TO OPEN/CLOSE SW
CLI 0(R5),X'FF' IS FILE CLOSED?
BE OPEN YES
CLI 0(R5),X'00' IS FILE OPEN?
BE WRITE YES
B CLOSE
RETURN EQU *
L R13,SAVEAREA+4 RESTORE REGISTERS
LM R14,R12,12(R13)
BR R14
SAVEAREA DS 18F SAVE REGISTER AREA
OPEN EQU *
OPEN (OUTPUTFI,OUTPUT) OPEN OUTPUT FILE
MVI 0(R5),X'00' SET OPEN/CLOSE SW TO OPEN
WRITE EQU *
MVC OUTAREA,0(R4) MOVE OUTPUT BUFFER TO OUTAREA
PUT OUTPUTFI,OUTAREA WRITE RECORD
B RETURN
CLOSE EQU *
CLOSE OUTPUTFI CLOSE OUTPUT FILE
MVI 0(R5),X'FF' SET OPEN/CLOSE SW TO CLOSE
B RETURN
OUTAREA DS CL80 OUTPUT RECORD
OUTPUTFI DCB DSORG=PS,MACRF=PM,DDNAME=SYS004,RECFM=FBA,BLKSIZE=80, X
LRECL=80
END CULLUS93
|
Copyright © 2014 CA.
All rights reserved.
|
|