REENTRA1

 


//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=*