//KC02486A JOB (KC024861),'WOOLBRIGHT',REGION=3M,CLASS=A,MSGCLASS=H,
// NOTIFY=&SYSUID,MSGLEVEL=(1,1)
//STEP1 EXEC PROC=HLASMCLG,PARM.L='RENT'
//C.ASMAOPT DD DSN=KC02486.ASM.SRC(ASMAOPT),DISP=SHR
//C.SYSIN DD *
REENTRA1 RSECT ,
************************************ (PROLOG REMOVED FOR SPACE)
SAVE (14,12) SAVE THE CALLER'S REGS
BASR R12,0 ESTABLISH ADDRESSABILITY
USING *,R12 FOR THE CSECT
STORAGE OBTAIN,LENGTH=DYNSIZE,ADDR=(R11) GET DYNAMIC STORAGE
USING DYNAREA,R11 ESTABLISH DYNAMIC AREA BASING
LA R2,SAVEAREA POINT TO MY LOWER-LEVEL SA
ST R2,8(,R13) FORWARD-CHAIN MINE FROM CALLER'S
ST R13,SAVEAREA+4 BACK-CHAIN CALLER'S FROM MINE
LR R13,R2 SET 13 FOR ANY SUBROUTINE CALLS
********************** BEGIN LOGIC *********************************
MVC FILEIN(FILEINL),FILEINM
MVC FILEOUT(FILEOUTL),FILEOUTM
LA R2,FILEIN
LA R3,FILEOUT
* OPEN (FILEIN,(INPUT))
OPEN ((2),INPUT),MF=(E,OPENLSTI)
OPEN ((3),OUTPUT),MF=(E,OPENLSTO)
GET (R2),BUFFER
LOOP EQU *
MVC BUFFER,=CL80'=========='
PUT (R3),BUFFER
GET (R2),BUFFER
J LOOP
EXIT EQU *
CLOSE ((2)),MF=(E,CLOSELI)
CLOSE ((3)),MF=(E,CLOSELO)
********************** END LOGIC *********************************
RETURN EQU * BRANCH TO HERE FOR NORMAL RETURN
L R13,SAVEAREA+4 POINT TO CALLER'S SAVE AREA
STORAGE RELEASE,LENGTH=DYNSIZE,ADDR=(R11)
RETURN (14,12),RC=0 RESTORE CALLER'S REGS & RETURN
FILEINM DCB DSORG=PS, MODEL INPUT DCB X
MACRF=(GM), X
DEVD=DA, X
DDNAME=FILEIN, X
EODAD=EXIT, X
RECFM=FB, X
LRECL=80
OPEN (,INPUT),MF=L LIST TO OPEN DCB
CLOSE (),MF=L LIST TO CLOSE DCB
FILEINML EQU *-FILEINM MODEL DCB LENGTH
FILEOUTM DCB DSORG=PS, MODEL OUTPUT DCB X
MACRF=(PM), X
DEVD=DA, X
DDNAME=FILEOUT, X
RECFM=FB, X
LRECL=80
OPEN (,OUTPUT),MF=L LIST TO OPEN DCB
CLOSE (),MF=L LIST TO CLOSE DCB
FILEOUTML EQU *-FILEOUTM MODEL DCB LENGTH
*************** STATIC DATA AREAS *********************************
STATXMP DC F'7' STATIC DATA EXAMPLE
LTORG
*************** DYNAMIC DATA AREAS *********************************
DYNAREA DSECT DSECT FOR THE DYNAMIC AREA
DYNSIZE EQU DYNEND-* CALCULATE AMOUNT OF SPACE NEEDED
SAVEAREA DS 18F SAVEAREA SPACE IS DYNAMIC!
BUFFER DS CL80 INPUT/OUTPUT BUFFER
FILEIN DCB DSORG=PS, INPUT DCB X
FILEIN DCB DSORG=PS, INPUT DCB X
MACRF=(GM), X
DEVD=DA, X
DDNAME=FILEIN, X
EODAD=EXIT, X
RECFM=FB, X
LRECL=80
OPENLSTI OPEN (,INPUT),MF=L LIST TO OPEN DCB
CLOSELI CLOSE (),MF=L LIST TO CLOSE DCB
FILEINL EQU *-FILEIN DCB MODEL LENGTH
FILEOUT DCB DSORG=PS, OUTPUT DCB X
MACRF=(PM), X
DEVD=DA, X
DDNAME=FILEOUT, X
RECFM=FB, X
LRECL=80
OPENLSTO OPEN (,OUTPUT),MF=L LIST TO OPEN DCB
CLOSELO CLOSE (),MF=L LIST TO CLOSE DCB
FILEOUTL EQU *-FILEOUT DCB MODEL LENGTH
DYNEND EQU * EQUATE FOR LENGTH CALCULATION
YREGS , R0, R1, ETC. EQUATES
END REENTRA1 END OF SECTION
/*
//G.FILEIN DD *
THIS IS RECORD 1
THIS IS RECORD 2
THIS IS RECORD 3
THIS IS RECORD 4
THIS IS RECORD 5
/*
//G.FILEOUT DD SYSOUT=*
//G.SYSUDUMP DD SYSOUT=*