         START                                                                  
* -----------------------------------------------------------------             
* Return Code:                                                                  
*   0 : Normal end                                                              
*   1 : Getmin error                                                            
*   8 : Read Error                                                              
*                                                                               
* -----------------------------------------------------------------             
         DC   C'<< Revive ! >> ('                                               
         COPY  RV1#HDR                                                          
         PRINT   GEN                                                            
*-------------------------------------------------------------------            
* --- Start of Process --------------------------------------------             
*-------------------------------------------------------------------            
RV1DARD  CSECT                                                                  
         SAVE  (14,12),T,*                                                      
         BALR  R03,0                                                            
         USING *,R03,R04,R05               Base Reg. R03,R04,R05                
         LA    R04,2048(R03)               2 Base Reg                           
         LA    R04,2048(R04)                                                    
         LA    R05,2048(R04)               3 Base Reg                           
         LA    R05,2048(R05)                                                    
         ST    R13,SAVEAREA+4              Save A(OLD SaveArea)                 
         LR    R12,R13                                                          
         LA    R13,SAVEAREA                                                     
         ST    R13,8(R12)                  Save A(NEW SaveArea)                 
*-------------------------------------------------------------------            
         LR    R06,R01                     Revive Common Area                   
         USING REVIVED,R06                                                      
*-------------------------------------------------------------------            
         RV1#TRCC BASE=3,COMM=6                                                 
*-------------------------------------------------------------------            
*-------- ISPF VDEFINE ---------------------------------------------            
*-------------------------------------------------------------------            
@ISPVDEF EQU   *                                                                
         L     R07,RV1ISPFN              Load Var Name Pointer                  
         L     R08,RV1ISPFL              Load Var Length Pointer                
         L     R09,RV1ISPFT              load Var Type Pointer                  
         L     R10,RV1ISPFA              load Var Address Pointer               
@IS_LOP1 EQU   *                                                                
         CLC   0(8,R07),ISPVENDM         If End ?                               
         BE    @IS_LOP1X                   Goto @IS_LOP1X                       
*        TPUT  0(R07),8                                                         
         L     R01,0(R10)                Load Var Address                       
         CALL  ISPLINK,(VDEFINE,(R07),(R01),(R09),(R08)),VL                     
         LA    R07,8(R07)                Shift Var Name Pointer                 
         LA    R08,4(R08)                Shift Var Length Pointer               
         LA    R09,8(R09)                Shift Var Type Pointer                 
         LA    R10,4(R10)                Shift Var Address Pointer              
         B     @IS_LOP1                  goto Loop                              
@IS_LOP1X EQU  *                                                                
*-------------------------------------------------------------------            
*-------- Dataset Open ---------------------------------------------            
*-------------------------------------------------------------------            
@DSOPEN  EQU   *                                                                
         MVC   PDSFDATA+X'28'(8),RV1DDN  Data Area Read DD                      
         OPEN  (PDSFDATA)                                                       
         POINT PDSFDATA,B#ADP            Point Data Area Addr                   
*-------------------------------------------------------------------            
*-------- Data Area Read -------------------------------------------            
*-------------------------------------------------------------------            
*                                                                               
* Data Area Table .                                                             
*                                                                               
*  Data Area Table is Chaining Next Table Entry and Previous Table              
*  Entry.                                                                       
*  DTFIRST : First Table Address                                                
*  DTLAST  : Last Table Address                                                 
*  DTCURR  : Current Process Table Start Address                                
*  DTCURRP : Current Process Table Last Used Address                            
*                                                                               
* <-4096Byte->                                                                  
* +----------+                                                                  
* | Table #1 |                                                                  
* +----------+                                                                  
*   |                                                                           
*   |   Point                                                                   
*   +-->+----------+                                                            
*       | Table #2 |                                                            
*       +----------+                                                            
*         |                                                                     
*         |   Point                                                             
*         +-->+----------+                                                      
*             | Table #3 |                                                      
*             +----------+                                                      
*                        .                                                      
*                        .                                                      
*                        +-->+----------+                                       
*                            | Table #n |                                       
*                            +----------+                                       
*                                                                               
*                                                                               
*  First 12 Byte is Table Control Area. Control Area is Part of 3.              
*  First 4 Byte. Member Entry Number in This Table.                             
*  Sec 4 Byte. Next Table Address. Last 4 Byte. Previous Table Address.         
*                                                                               
* |....+....1....+....2....+.||.+....0....+...                                  
*  <-->                                              : First Entry No           
*      <-->                                          : Last Entry No            
*          <-->                                      : Next Table Adr           
*                                                      if Zero is Last          
*              <-->                                  : Prev Table Adr           
*                                                      if Zero is First         
*                  <-- 84 Byte --||-->               : Member Entry             
*                                     <-- 84 Byte -- : Sec Entry ..             
*                                                                               
*                                                                               
* Member Entry Layout.                                                          
* |....+....1....+....2....+....3....+.||.8....|                                
*  <------>                                          : Member Name              
*          <-->                                      : TTRx ( Bin )             
*              <---->                                : TTR ( Char )             
*                    <-->                            : Num of Block             
*                        X                           : Attribute                
*                         _                          : filler                   
*                          <--  60 Byte --||-->      : First 60 Byte            
*                                                                               
*-------------------------------------------------------------------            
@INITIAL EQU   *                                                                
         XC    DTFIRST,DTFIRST           First Entry Address Clear              
*                                                                               
         L     R01,=A(DTLENGTH)                                                 
         GETMAIN RC,LV=(R01)             First Data Table Area                  
         LTR   R15,R15                                                          
         BNZ   @RA_ERR1                                                         
* --- RV1TRC ---                                                                
         ST    R01,WK#F                                                         
         L     R01,=A(DTLENGTH)                                                 
         ST    R01,WK#F2                                                        
         RV1#TRCG ((R06),REVT005,DTX,WK#F,WK#F2),VL                             
         L     R01,WK#F                                                         
* --- RV1TRC ---                                                                
         USING DTHEADER,R01                                                     
         LA    R15,1                                                            
         ST    R15,DTHPOSF               Set First Entry = 1                    
         XC    DTHPOSL,DTHPOSL           Clear Last Entry                       
         XC    DTHNEXT,DTHNEXT           Clear Next Table Address               
         XC    DTHPREV,DTHPREV           Clear Previous Table Entry             
         DROP  R01                                                              
         ST    R01,DTFIRST               Store Address ( First )                
         ST    R01,DTLAST                Store Address ( Last )                 
         ST    R01,DTCURR                Store Address ( Current )              
         LA    R01,DTHL(R01)             Shift Position                         
         ST    R01,DTCURRP               Store Address ( Position )             
         LA    R01,1                                                            
         ST    R01,DTPOSIT               Set List Panel Row = 1                 
         XC    DTLASTE,DTLASTE           Data Area Table Last Entry Num         
*-------------------------------------------------------------------            
*-------- Data Area Read -------------------------------------------            
*-------------------------------------------------------------------            
@READDA  EQU   *                                                                
         XC    CURR_CHR(8),CURR_CHR                                             
         NI    FLAG,B'10011111'          Clear x'60' Flag                       
* --- Getmain Read Buffer ---                                                   
         LH    R02,PDSFDATA+X'3E'        Load BlockSize ( 32760 )               
         ST    R02,WK#F                                                         
         GETMAIN RC,LV=(R02)             Member TTR Save Area                   
         LTR   R15,R15                                                          
         BNZ   @RA_ERR1                                                         
         ST    R01,RV1DATBA              Store Address                          
* --- RV1TRC ---                                                                
         MVC   WK#F2,RV1DATBA                                                   
         RV1#TRCG ((R06),REVT005,RV1DATBX,WK#F2,WK#F),VL                        
* --- RV1TRC ---                                                                
*-------- Read First Data Area -------------------------------------            
@M_FIRST EQU   *                                                                
         XC    DTEFIRST(DTELAST),DTEFIRST                                       
*        XC    DTERLNG(2),DTERLNG        Clear Maximam Lrecl                    
*        XC    DTEBSZ(2),DTEBSZ          Clear Maximam Blksize                  
*        XC    DTELRL(2),DTELRL          Clear Maximam Lrecl                    
         NI    FLAG,B'11100000'          Clear Flag                             
*              (Do'nt Clear x'60' , It's Analyze Screen Flag )                  
*        NI    DTERFM,B'00001111'        Clear Flag                             
* Convert 'Real Address' to 'Relative Address'                                  
         BAL   R14,@CNVTTR               Convert MBCCHHR -> TTR                 
*--- End of Process ? ---                                                       
         BAL   R14,EOPCHK                End of Process ?                       
         LTR   R15,R15                                                          
         BNZ   @M_EXIT2                                                         
*--- Read first record ---                                                      
*        TPUT  =CL20'READ DA',20                                                
         L     R02,RV1DATBA              R02 <- Read Buffer Address             
         READ  DECB11,SF,PDSFDATA,(R02),'S' Read Data Area                      
         CHECK DECB11                     ( First Block )                       
         LA    R01,1                                                            
         ST    R01,DTERECD               Initialize Block Counter               
         LH    R02,PDSFDATA+X'3E'        Load BlockSize                         
         L     R01,DECB11+16             Get Read Length                        
         SH    R02,14(R01)                                                      
         STH   R02,READ_LENGTH           Save Read Length                       
*--- End of Process ? ---                                                       
         BAL   R14,EOPCHK                End of Process ?                       
         LTR   R15,R15                                                          
         BNZ   @M_EXIT2                                                         
*--- Search Strings ---                                                         
         BAL   R11,@SRCHSTR              Search Strings                         
*--- Convert TTR ---                                                            
         BAL   R14,@CNVTTR               Convert MBCCHHR -> TTR                 
*--- Analyze Screen update ---                                                  
         BAL   R11,@ANLUPDT              Analyze Screen Update                  
* --- Search TTR from Directory Table ---                                       
         L     R07,RV1TBSPA              R07 <- Directory Table Area            
@M_LOP01 EQU   *                                                                
         CL    R07,RV1TBSPP              If Last Table Entry ?                  
         BNL   @M_NOF                      goto @M_NOTF                         
         CLC   8(3,R07),CURR_TTR         If TTR is Equal                        
         BE    @M_FND                      goto @M_FND                          
         LA    R07,12(R07)               Shift Next Table                       
         B     @M_LOP01                  Loop                                   
*-------- TTR Found in Directory Table -----------------------------            
@M_FND   EQU   *                                                                
         OI    FLAG,X'04'                Member Exist.                          
         MVC   DTENAME(8),0(R07)         Copy Member Name                       
         OI    11(R07),X'01'             Member Found Flag Set.                 
         CLI   RV1ADDC,C'Y'              If No Add Current Member ?             
*        BNE   @M_DUM_L                    goto @M_DUM_L                        
*        BNE   @M_ANAL1                    goto @M_ANAL1                        
         BNE   @M_COPY                                                          
@M_FND2  EQU   *                                                                
         OI    FLAG,X'01'                Set Table Add Flag                     
         B     @M_COPY                                                          
*-------- TTR not Found in Directory Table -------------------------            
MVDTEDATA MVC   DTEDATA(0),0(R15)         Copy Data Area                        
@M_NOF   EQU   *                                                                
         OI    FLAG,X'01'                Set Table Add Flag                     
         MVI   DTENAME,C'+'              Member Name ( +TTR )                   
         LA    R01,DTENAME+1                                                    
         CALL  RV1BTH,(CURR_TTR,(R01),3)                                        
         MVI   DTENAME+7,C' '            Member Name ( +TTR )                   
*-------- Copy DTE Area --------------------------------------------            
@M_COPY  EQU   *                                                                
         MVC   DTETTRB(4),CURR_TTR       Copy TTR ( Binary )                    
         LA    R01,DTETTR                                                       
         CALL  RV1BTH,(CURR_TTR,(R01),3) Copy TTR ( Character )                 
*                                                                               
         L     R15,RV1DATBA              R07 <- Read Buffer Address             
         LH    R14,READ_LENGTH           R10 <- Read Length                     
         LA    R01,L'DTEDATA                                                    
         CLR   R14,R01                   If Read Length >= 60 ?                 
         BNL   @M_SKIP                     goto @M_SKIP                         
         BCTR  R14,0                                                            
         MVI   DTEDATA,C' '                                                     
         MVC   DTEDATA+1(L'DTEDATA-1),DTEDATA                                   
*        STC   R14,*+5                                                          
*        MVC   DTEDATA(0),0(R15)         Copy Data Area                         
         EX    R14,MVDTEDATA                                                    
         B     @M_SKIPX                                                         
@M_SKIP  EQU   *                                                                
         MVC   DTEDATA(L'DTEDATA),0(R15) Copy Data Area                         
@M_SKIPX EQU   *                                                                
         BAL   R11,CONVDCHR              Convert Display able Character         
@M_ANAL1 EQU   *                                                                
         BAL   R11,@COMPT_LEN            Record Analyze.                        
*-------- Read Next Records ----------------------------------------            
@M_DUM_L EQU   *                         2'nd Block                             
*        TPUT  =CL20'READ D2',20                                                
         L     R02,RV1DATBA              R02 <- Read Buffer Address             
         READ  DECB12,SF,PDSFDATA,(R02),'S'                                     
         CHECK DECB12                                                           
         L     R01,DTERECD               Add block length + 1                   
         LA    R01,1(R01)                                                       
         ST    R01,DTERECD                                                      
         LH    R02,PDSFDATA+X'3E'        Load BlockSize                         
         L     R01,DECB12+16             Get Read Length                        
         SH    R02,14(R01)                                                      
         STH   R02,READ_LENGTH           Save Read Length                       
*--- End of Process ? ---                                                       
         BAL   R14,EOPCHK                End of Process ?                       
         LTR   R15,R15                                                          
         BNZ   @M_EXIT2                                                         
*                                                                               
         BAL   R11,@COMPT_LEN                                                   
*                                                                               
         BAL   R11,@SRCHSTR                                                     
         BAL   R14,@CNVTTR               Convert MBBCCHHR -> TTR                
         BAL   R11,@ANLUPDT              Analyze Screen Show                    
*                                                                               
         B     @M_DUM_L                                                         
*-------- Next Member Process --------------------------------------            
@M_NEXT  EQU   *                         End of File.                           
         L     R01,DTERECD               If Member Have No Records              
         LTR   R01,R01                     Skip                                 
         BZ    @M_NEXTX                                                         
         TM    FLAG,X'04'                                                       
         BO    MN#EXIST                                                         
         TM    FLAG,X'08'                                                       
         BO    MN#OVER                                                          
         TM    FLAG,X'10'                                                       
         BO    MN#BORDER                                                        
         MVI   DTEATTR,ATTR_REC                                                 
         B     MN#ATTRX                                                         
MN#EXIST EQU   *                                                                
         MVI   DTEATTR,ATTR_CUR                                                 
         B     MN#ATTRX                                                         
MN#OVER  EQU   *                                                                
         MVI   DTEATTR,ATTR_EXT                                                 
         B     MN#ATTRX                                                         
MN#BORDER EQU  *                                                                
         MVI   DTEATTR,ATTR_BDR                                                 
         B     MN#ATTRX                                                         
MN#ATTRX EQU   *                                                                
         MVI   DTEDATTR,ATTR_DOK                                                
         TM    B#RECFM,RECFM_U                                                  
         BO    MN#RECFM_U                                                       
         TM    B#RECFM,RECFM_V                                                  
         BO    MN#RECFM_V                                                       
         TM    B#RECFM,RECFM_F                                                  
         BO    MN#RECFM_F                                                       
MN#RECFM_U EQU *                                                                
         CLC   B#BLKSZ(2),DTEBSZ                                                
         BL    MN#RECFM_NG                                                      
         B     MN#RECFM_X                                                       
MN#RECFM_V EQU *                                                                
         TM    DTERFM,X'80'                                                     
         BO    MN#RECFM_NG                                                      
         LH    R01,B#BLKSZ                                                      
         CH    R01,DTEBSZ                                                       
         BL    MN#RECFM_NG                                                      
         LH    R01,B#LRECL                                                      
         CH    R01,DTELRL                                                       
         BL    MN#RECFM_NG                                                      
         B     MN#RECFM_X                                                       
MN#RECFM_F EQU *                                                                
         LH    R01,B#BLKSZ                                                      
         CH    R01,DTEBSZ                                                       
         BL    MN#RECFM_NG                                                      
         LH    R14,DTERLNG                                                      
         LH    R01,B#LRECL                                                      
         SRDA  R14,32                                                           
         DR    R14,R01                                                          
         LTR   R14,R14                                                          
         BNZ   MN#RECFM_NG                                                      
*                                                                               
         B     MN#RECFM_X                                                       
MN#RECFM_NG EQU *                                                               
         OI    DTERFM,X'40'              NG Record Flag                         
         MVI   DTEDATTR,ATTR_DNG                                                
         B     MN#RECFM_X                                                       
MN#RECFM_X EQU *                                                                
         MVC   ERRMSG99,=CL80' >'                                               
         MVC   ERRMSG99+05(8),DTENAME                                           
         MVC   ERRMSG99+15(6),DTETTR                                            
         TM    DTERFM,X'80'                                                     
         BO    NM#DEBUG1                                                        
         MVI   ERRMSG99+25,C'V'                                                 
NM#DEBUG1 EQU  *                                                                
         TM    DTERFM,X'10'                                                     
         BO    NM#DEBUG2                                                        
         MVI   ERRMSG99+26,C'F'                                                 
NM#DEBUG2 EQU  *                                                                
*        CALL  RV1BTH,(DTERFM,ERRMSG99+25,1)                                    
         CALL  RV1BTH,(DTERLNG,ERRMSG99+30,2)                                   
         CALL  RV1BTH,(DTELRL,ERRMSG99+35,2)                                    
         CALL  RV1BTH,(DTEBSZ,ERRMSG99+40,2)                                    
         IC    R01,FLAG                                                         
         STC   R01,WK#F                                                         
         CALL  RV1BTH,(WK#F,ERRMSG99+45,1)                                      
*        TPUT  ERRMSG99,80                                                      
* ------------------------------------------------                              
*+++     BAL   R11,DCONFIG                                                      
* ------------------------------------------------                              
         TM    FLAG,X'01'                If Not Add Member.                     
         BNO   @M_NEXTX                                                         
         TM    FLAG,X'02'                No Search Strings                      
         BNO   @M_NEXTX                                                         
*        L     R01,DTERECD               If Member is No-Records                
*        LTR   R01,R01                     Goto @M_NEXTX                        
*        BZ    @M_NEXTX                                                         
         BAL   R11,DT#MAKE               Data Table Make                        
*                                                                               
@M_NEXTX EQU   *                                                                
         B     @M_FIRST                  goto Next Record                       
@M_EXIT1 EQU   *                         member read terminate.                 
         TM    FLAG,X'01'                                                       
         BNO   @M_EXIT2                                                         
         BAL   R11,DT#MAKE                                                      
@M_EXIT2 EQU   *                         member read terminate.                 
         B     @R_EXIT                                                          
@R_EXIT  EQU   *                         read terminate .                       
*        LH    R01,B#BLKSZ                                                      
* --- RV1TRC ---                                                                
         LH    R01,PDSFDATA+X'3E'        Load BlockSize                         
         ST    R01,WK#F                                                         
         MVC   WK#F2,RV1DATBA                                                   
         RV1#TRCG ((R06),REVT006,RV1DATBX,WK#F2,WK#F),VL                        
* --- RV1TRC ---                                                                
         LH    R01,PDSFDATA+X'3E'        Load BlockSize                         
         L     R02,RV1DATBA                                                     
         FREEMAIN RC,LV=(R01),A=(R02)    FreeMain Read Buffer                   
         CLOSE (PDSFDATA)                                                       
         RV1#TRCR COMM=6                                                        
         L     R13,SAVEAREA+4                                                   
         RETURN (14,12),RC=0                                                    
*--------- Data Area Read Buffer GETMAIN faile ---------------------            
@RA_ERR1 EQU   *                                                                
         CLOSE (PDSFDATA)                                                       
         RV1#TRCR COMM=6                                                        
         L     R13,SAVEAREA+4                                                   
         RETURN (14,12),RC=1                                                    
*-------------------------------------------------------------------            
*--- End of Process ? ( Check Last Data Access Area )                           
*-------------------------------------------------------------------            
EOPCHK   EQU   *                                                                
*        MVC   ERRMSG99,=CL80' >'                                               
*        CALL  RV1BTH,(CURR_TTR,ERRMSG99+10,3)                                  
*        CALL  RV1BTH,(B#ETTR,ERRMSG99+10,3)                                    
*        TPUT  ERRMSG99,80                                                      
         CLI   RV1EXTO,C'O'              If Over DS1LSTAR Field ?               
         BE    EOPOPT1                     Yes : goto EOPOPT1                   
         CLC   CURR_TTR(3),B#ETTR        If Greater than DS1LSTAR ?             
         BNL   EOPX_X                      Yes goto Exit                        
         B     EOPX_OK                   no ended Resume Next!                  
EOPOPT1  EQU   *                                                                
         CLC   CURR_TTR(3),B#ETTR        If DS1LSTAR ?                          
         BE    EOPLSTON                    Equal -> EOPLSTON                    
         BL    EOPNOLST                    Less  -> EOPNOLST                    
         OI    FLAG,X'28'                Over DS1LSTAR Filed Flag               
         B     EOPNOLST                                                         
EOPLSTON EQU   *                                                                
         OI    FLAG,X'10'                On DS1LSTAR Border Line                
EOPNOLST EQU   *                                                                
         CLC   B#TCHR(7),PDSFDATA+5      If End of Allocation ?                 
         BL    EOPX_X                      Yes goto Exit                        
         CLC   CURR_CHR(8),PDSFDATA+5    CHR same with the last time            
         BNE   EOPNOSAM                    No resume next                       
         B     EOPX_X                    Same Record Readed.                    
EOPNOSAM EQU   *                                                                
         MVC   CURR_CHR(8),PDSFDATA+5    Save Current MBBCCHHR                  
         B     EOPX_OK                                                          
*                                                                               
EOPX_X   EQU   *                                                                
         LA    R15,8                                                            
         BR    R14                                                              
EOPX_OK  EQU   *                                                                
         XR    R15,R15                                                          
         BR    R14                                                              
*-------------------------------------------------------------------            
* -- Convert Un-Displayed Code to Substitution Mark. --                         
*                                                                               
* Un-Displayed Character is See Below manual.                                   
*                                                                               
*  Interactive System Productivity Facility (ISPF)                              
*  Planning and Customizing                                                     
*  OS/390 Version 1 Release 3.0                                                 
*  Document Number SC28-1298-01                                                 
*                                                                               
*   4.7.6 Translation Table for Edit Terminal Output Characters                 
*                                                                               
*  RV1#ETOP is Same TTETO Table.                                                
*    Replace RV1#ETOP Csect Provided You Modified TTETO Table.                  
*                                                                               
*  TTETO Table in 'ISP.SISPSAMP(ISROWNTT)'.                                     
*                                                                               
*-------------------------------------------------------------------            
CONVDCHR EQU   *                                                                
         LA    R14,DTEDATA                                                      
         LA    R15,L'DTEDATA                                                    
CC#LOP1  EQU   *                                                                
         XR    R01,R01                                                          
         IC    R01,0(R14)                                                       
         LA    R01,TTETO(R01)                                                   
         CLI   0(R01),X'15'                                                     
         BNE   CC#LOP1N                                                         
         MVI   0(R14),C'.'                                                      
CC#LOP1N EQU   *                                                                
         LA    R14,1(R14)                                                       
         BCT   R15,CC#LOP1                                                      
         BR    R11                                                              
*-------------------------------------------------------------------            
*                                                                               
*-------------------------------------------------------------------            
DT#MAKE  EQU   *                                                                
*        TPUT  =CL20'*MAKE*',20                                                 
         L     R15,DTLASTE               Processing Table Number Set            
         LA    R15,1(R15)                                                       
         ST    R15,DTLASTE                                                      
         L     R01,DTCURRP               If not Table Over ?                    
         S     R01,DTCURR                                                       
         LA    R01,DTELAST(R01)                                                 
         L     R02,=A(DTLENGTH)                                                 
         CLR   R01,R02                                                          
         BNH   DT#MAKE2                                                         
         L     R01,=A(DTLENGTH)                                                 
         GETMAIN RC,LV=(R01)             Data Area Table Area                   
         LTR   R15,R15                                                          
         BNZ   @RA_ERR1                                                         
* --- RV1TRC ---                                                                
         ST    R01,WK#F                                                         
         L     R01,=A(DTLENGTH)                                                 
         ST    R01,WK#F2                                                        
         RV1#TRCG ((R06),REVT005,DTX,WK#F,WK#F2),VL                             
         L     R01,WK#F                                                         
* --- RV1TRC ---                                                                
         USING DTHEADER,R01                                                     
         MVC   DTHPOSF,DTLASTE           Set First Entry Number                 
         XC    DTHPOSL,DTHPOSL           Clear Last Entry Number                
         XC    DTHNEXT,DTHNEXT           Clear Next Table Address               
         L     R02,DTLAST                Store Address ( Last )                 
         ST    R02,DTHPREV               Store Previous Addres                  
         DROP  R01                                                              
*                                          in Current Table                     
         USING DTHEADER,R02                                                     
         ST    R01,DTHNEXT               Store Next Address                     
         DROP  R02                                                              
*                                          in Previous Table                    
         ST    R01,DTLAST                Store Address ( Last )                 
         ST    R01,DTCURR                Store Address ( Current )              
         LA    R01,DTHL(R01)             Shift Position                         
         ST    R01,DTCURRP               Store Address ( Position )             
DT#MAKE2 EQU   *                                                                
*        MVC   ERRMSG99+10(8),DTENAME                                           
*        MVC   ERRMSG99+20(4),DTETTR                                            
*        CALL  RV1BTH,(DTERLNG,ERRMSG99+30,2)                                   
*        CALL  RV1BTH,(DTEBSZ,ERRMSG99+40,2)                                    
*        TPUT  ERRMSG99,80                                                      
*                                                                               
         L     R01,DTCURRP               Copy Table Entry                       
         MVC   0(DTELAST,R01),DTEFIRST                                          
         LA    R01,DTELAST(R01)          Shift Next Entry                       
         ST    R01,DTCURRP               Store Address ( Position )             
*                                                                               
         L     R01,DTCURR                                                       
         USING DTHEADER,R01                                                     
         MVC   DTHPOSL,DTLASTE           Set Last Entry Number                  
         DROP  R01                                                              
         BR    R11                                                              
*-------------------------------------------------------------------            
*-------- Compute Maximam Logical Record Length --------------------            
*-------- << greatest common divisor of Euclid >> ------------------            
*-------------------------------------------------------------------            
@COMPT_LEN EQU *                                                                
         LH    R02,READ_LENGTH                                                  
         LH    R01,DTERLNG                                                      
@CL_LOP1 EQU   *                                                                
         LTR   R01,R01                                                          
         BZ    @CL_LOP1X                                                        
         LR    R14,R02                                                          
         SRDA  R14,32                                                           
         DR    R14,R01                                                          
         LR    R02,R01                                                          
         LR    R01,R14                                                          
         B     @CL_LOP1                                                         
@CL_LOP1X EQU  *                                                                
         STH   R02,DTERLNG                                                      
*        MVC   WKMES,=CL80' > '                                                 
*        CALL  RV1BTH,(DTERLNG,WKMES+10,2)                                      
*        CALL  RV1BTH,(READ_LENGTH,WKMES+20,2)                                  
*        TPUT  WKMES,80                                                         
*-------------------------------------------------------------------            
*-------- Compute Maximam Read Record Length -----------------------            
*-------------------------------------------------------------------            
         TM    DTERFM,X'20'                                                     
         BNO   @CL_SKP20                                                        
         OI    DTERFM,X'10'              Not Fixed Record Format                
         B     @CL_SKP21                                                        
@CL_SKP20 EQU   *                                                               
         CLC   DTEBSZ,=H'0'                                                     
         BE    @CL_SKP21                                                        
         CLC   DTEBSZ,READ_LENGTH                                               
         BE    @CL_SKP21                                                        
         OI    DTERFM,X'20'              Last length Unmatch                    
@CL_SKP21 EQU   *                                                               
         CLC   DTEBSZ,READ_LENGTH                                               
         BNL   @CL_SKP2X                                                        
         MVC   DTEBSZ(2),READ_LENGTH     Maximam Block Length                   
@CL_SKP2X EQU   *                                                               
*-------------------------------------------------------------------            
*-------- Check Record Format --------------------------------------            
*-------------------------------------------------------------------            
* --- Recfm:V Block Size Check ---                                              
         L     R02,RV1DATBA                                                     
         LH    R15,0(R02)                Load Block Size from Record            
         CH    R15,READ_LENGTH           Greater Maximam Length ?               
         BNE   @CL_V_NG                                                         
* --- Recfm:V Record Length Check ---                                           
         L     R02,RV1DATBA              R02 <- Read Buffer                     
         LH    R01,READ_LENGTH                                                  
         LA    R01,0(R01,R02)            R01 <- Read Buffer Last point.         
         LA    R02,4(R02)                Shift BLKSZ Area                       
@CL_LOP3 EQU   *                                                                
         LH    R15,0(R02)                Load Record Length                     
         LTR   R15,R15                                                          
         BZ    @CL_V_NG                                                         
         CH    R15,DTELRL                Compare Lrecl                          
         BNH   @CL_SKP3                                                         
         STH   R15,DTELRL                Store Max Lrecl                        
*        STM   R00,R15,@CTREGS                                                  
*        CALL  RV1BTH,((R02),ERRMSG99+20,2)                                     
*        CALL  RV1BTH,(DTELRL,ERRMSG99+30,2)                                    
*        TPUT  ERRMSG99,80                                                      
*        LM    R00,R15,@CTREGS                                                  
@CL_SKP3 EQU   *                                                                
         LA    R14,0(R02,R15)                                                   
         CLR   R14,R01                   If Last Pos : Next Rec Addr.           
         BE    @CL_V_OK                   equal   -> OK                         
         BH    @CL_V_NG                   greater -> NG                         
         LR    R02,R14                                                          
         B     @CL_LOP3                                                         
@CL_V_NG EQU   *                                                                
         OI    DTERFM,X'80'              Set No-Variable Flag.                  
@CL_V_OK EQU   *                                                                
         BR    R11                                                              
*-------------------------------------------------------------------            
*-------- Analyze Screen Update ------------------------------------            
*-------------------------------------------------------------------            
@AU_EXTENT DS  XL1                                                              
         DS    0F                                                               
@ANLUPDT EQU   *                                                                
         CLC   @AU_EXTENT(1),RV1EXTC                                            
         BNE   @AU_SKP1                                                         
         TM    FLAG,X'40'                                                       
         BO    @AU_SKPX                                                         
         TM    FLAG,X'20'                                                       
         BNO   @AU_SKPX                                                         
@AU_SKP1 EQU   *                                                                
         MVC   @AU_EXTENT(1),RV1EXTC                                            
         TM    FLAG,X'08'                                                       
         BO    @AU_SKP2                                                         
         MVC   RV1PRC,=CL3'USE'                                                 
         B     @AU_SKP3                                                         
@AU_SKP2 EQU   *                                                                
         MVC   RV1PRC,=CL3'UNU'                                                 
         OI    FLAG,X'40'                Set 'Now Overed DS1LSTAR'              
         NI    FLAG,X'DF'                                                       
*        B     @AU_SKP3                                                         
@AU_SKP3 EQU   *                                                                
         CALL  ISPLINK,(CONTROL,DISPLAY,LOCK),VL Panel Lock                     
         CALL  ISPLINK,(ADDPOP),VL       Make Popup Panel                       
         CALL  ISPLINK,(DISPLAY,PANELANL),VL Analysis Panel Show                
         CALL  ISPLINK,(REMPOP),VL       Remove Popup Panel                     
@AU_SKPX EQU   *                                                                
         BR    R11                                                              
*-------------------------------------------------------------------            
*-------- Search String --------------------------------------------            
*-------------------------------------------------------------------            
CLRV1DATBA CLC   0(0,R10),RV1SSTRR                                              
@SRCHSTR EQU   *                                                                
*                                                                               
         LH    R15,RV1SSTRL                      R15 <- Search String L         
         LTR   R15,R15                                                          
         BZ    @SRCH_BP                                                         
         BCTR  R15,0                                                            
         L     R10,RV1DATBA                      R10 <- Read Buffer             
         XR    R09,R09                                                          
         LH    R09,READ_LENGTH                   R09 <- Read Length             
         LTR   R09,R09                                                          
         BZ    @SRCH_NG                                                         
         SH    R09,RV1SSTRL                      L'Read - L'Srch Str            
         LA    R10,0(R10,R09)                    Chk Pos <- Buf + L'Chk         
         LA    R09,1(R09)                        + 1                            
@SRCH_LP EQU   *                                                                
*        STC   R15,*+5                                                          
*        CLC   0(0,R10),RV1SSTRR                                                
         EX    R15,CLRV1DATBA                                                   
         BE    @SRCH_OK                                                         
         BCTR  R10,0                                                            
         BCT   R09,@SRCH_LP                                                     
         B     @SRCH_NG                                                         
@SRCH_BP EQU   *                                                                
         OI    FLAG,X'02'                                                       
         BR    R11                                                              
@SRCH_OK EQU   *                                                                
         OI    FLAG,X'02'                                                       
         BR    R11                                                              
@SRCH_NG EQU   *                                                                
         BR    R11                                                              
*-------------------------------------------------------------------            
*-------- Dataset DCB ----------------------------------------------            
*-------------------------------------------------------------------            
DC#FLAG  DS    XL1'00000000'                                                    
*                  o           : 0:No Add to Table, 1:Add to Table              
*                                                                               
         DS    0D                                                               
DCONFIG  EQU   *                                                                
         NI    DC#FLAG,X'7F'             Flag Clear                             
*        LH    R07,FMTTBLP                                                      
*        LTR   R07,R07                                                          
         LA    R07,1                                                            
DC#LOP1  EQU   *                                                                
         CH    R07,FMTTBLP                                                      
         BH    DC#LOP1X                                                         
*                                                                               
         LR    R01,R07                                                          
         BCTR  R01,0                                                            
         MH    R01,FMTTBLN                                                      
         BZ    DC#ADD                                                           
*                                                                               
         L     R02,FMTTBLA                                                      
         LA    R01,0(R01,R02)                                                   
         USING DFORMATT,R01                                                     
* --- Same DCB Member Search from DFORMATT ---                                  
         TM    DTERFM,X'80'              If current not Recfm:V ?               
         BO    DC#SAMEV                                                         
         TM    DFTRFM,X'80'              If Table Recfm:V ?                     
         BNO   DC#SAMEV                                                         
         CLC   DTELRL(2),DFTVLRL                                                
         BNE   DC#SAMEV                                                         
         CLC   DTEBSZ(2),DFTBLKSZ                                               
         BNE   DC#SAMEV                                                         
         OI    DC#FLAG,X'80'             Ok!! Same Record Found.                
         B     DC#SAMEV                                                         
DC#SAMEV EQU   *                                                                
         TM    DTERFM,X'10'              If current not Recfm:F ?               
         BO    DC#SAMEF                                                         
         TM    DFTRFM,X'40'              If Table Recfm:F ?                     
         BNO   DC#SAMEF                                                         
         CLC   DTERLNG(2),DFTFLRL                                               
         BNE   DC#SAMEF                                                         
         CLC   DTEBSZ(2),DFTBLKSZ                                               
         BNE   DC#SAMEF                                                         
         OI    DC#FLAG,X'80'             Ok!! Same Record Found.                
         B     DC#SAMEF                                                         
DC#SAMEF EQU   *                                                                
         TM    DFTRFM,X'20'              If Table Recfm:U ?                     
         BNO   DC#SAMEU                                                         
         CLC   DTEBSZ(2),DFTBLKSZ                                               
         BNE   DC#SAMEU                                                         
         OI    DC#FLAG,X'80'             Ok!! Same Record Found.                
         B     DC#SAMEU                                                         
DC#SAMEU EQU   *                                                                
*                                                                               
         TM    DTERFM,X'80'              If Current Not Recfm=V ?               
         BO    DC#NOTV                                                          
         TM    DFTRFM,X'80'              If Table Not Recfm=V ?                 
         BNO   DC#NOTV                                                          
         CLC   DTEBSZ(2),DFTBLKSZ        If Current BLKSZ > Table BLKSZ         
         BH    DC#NOTV                                                          
         CLC   DTELRL(2),DFTVLRL         If Current LRECL > Table LRECL         
         BH    DC#NOTV                                                          
         TM    FLAG,X'04'                If Member Exist ?                      
         BO    DC#VEXIST                                                        
         L     R02,DFTNOFM               Add Counter                            
         LA    R02,1(R02)                 (Match of Member NoExist)             
         ST    R02,DFTNOFM                                                      
         B     DC#VX                                                            
DC#VEXIST EQU  *                                                                
         L     R02,DFTEXTM               Add Counter                            
         LA    R02,1(R02)                 (Match of Member Exist)               
         ST    R02,DFTEXTM                                                      
         B     DC#VX                                                            
DC#NOTV  EQU   *                                                                
         TM    FLAG,X'04'                If Member Exist ?                      
         BO    DC#VEXIST2                                                       
         L     R02,DFTNOFU               Add Counter                            
         LA    R02,1(R02)                 (UnMatch of Member NoExist)           
         ST    R02,DFTNOFU                                                      
         B     DC#VX                                                            
DC#VEXIST2 EQU  *                                                               
         L     R02,DFTEXTU               Add Counter                            
         LA    R02,1(R02)                 (UnMatch of Member Exist)             
         ST    R02,DFTEXTU                                                      
         B     DC#VX                                                            
DC#VX    EQU   *                                                                
DC#ADD   EQU   *                                                                
*                                                                               
         DROP  R01                                                              
         LA    R07,1(R07)                Table count up                         
         B     DC#LOP1                                                          
DC#LOP1X EQU   *                                                                
         BR    R11                                                              
*-------------------------------------------------------------------            
*-------- convert mbcchhr to ttr -----------------------------------            
*-------------------------------------------------------------------            
         DS    0F                                                               
@CNVTTR  EQU   *                                                                
         STM   R00,R15,@CTREGS                                                  
         L     R01,PDSFDATA+44           Load DEB Address                       
         N     R01,=X'00FFFFFF'          Clear IFLGS Area                       
         LA    R02,PDSFDATA+5            MBCCHHR Address                        
         XR    R15,R15                                                          
         IC    R15,0(R02)                                                       
         LA    R15,1(R15)                Get Current Extents                    
         STC   R15,RV1EXTC               Update RV1EXTC Area                    
         L     R14,CVTPTR                                                       
         USING CVTMAP,R14                                                       
         L     R15,CVTPRLTV                                                     
         DROP  R14                                                              
         BALR  R14,R15                   call CVTPRLTV                          
         ST    R00,CURR_TTR              Save TTR                               
         LM    R00,R15,@CTREGS                                                  
         BR    R14                                                              
@CNVCHR  EQU   *                                                                
         STM   R03,R15,REGS                                                     
         L     R10,CVTPTR                                                       
         USING CVTMAP,R10                                                       
         L     R15,CVTPCNVT                                                     
         DROP  R10                                                              
         BALR  R14,R15                                                          
         LM    R03,R15,REGS                                                     
         BR    R14                                                              
*-------------------------------------------------------------------            
*-------- i/o error routine ( po ) ---------------------------------            
*-------------------------------------------------------------------            
IOERR_P  EQU   *                                                                
         SYNADAF ACSMETH=BPAM                                                   
         STM   R01,R15,REGS                                                     
         LR    R12,R01                                                          
         LA    R01,91(R12)                                                      
         MVC   ERRMSG04+23(15),0(R01)                                           
         CALL  RV1BTH,(CURR_TTR,ERRMSG04+16,3)                                  
         LA    R01,8(R12)                                                       
         CALL  RV1BTH,((R01),ERRMSG04+53,4)                                     
         LA    R01,12(R12)                                                      
         CALL  RV1BTH,((R01),ERRMSG04+44,2)                                     
         TPUT  ERRMSG04,L'ERRMSG04                                              
@IOERR_X EQU   *                                                                
         LM    R01,R15,REGS                                                     
         SYNADRLS                                                               
         B     @R_EXIT                                                          
PDSFDATA DCB   DSORG=PO,MACRF=(R),DDNAME=@@@@,                         *        
               SYNAD=IOERR_P,EODAD=@M_NEXT,RECFM=U,BLKSIZE=32760                
*                                                                               
         DS    0F                                                               
* --- SAVE AREA ---                                                             
SAVEAREA DS    18F                               SAVEAREA                       
* --- Work Area ---                                                             
CURR_CHR DS    XL8                                                              
* --- Work Area ---                                                             
WK#F     DS    F                                                                
WK#F1    DS    F                                                                
WK#F2    DS    F                                                                
DTX      DC    CL8'DT'                                                          
RV1DATBX DC    CL8'RV1DATB'                                                     
REVT005  DC    CL8'REVT005'                                                     
REVT006  DC    CL8'REVT006'                                                     
WKMES    DC    CL80'> '                                                         
* --- Register Save ( work ) area ---                                           
REGS     DS    18F                               WORK SAVEAREA                  
@CTREGS  DS    18F                               WORK SAVEAREA                  
         DS    0D                                                               
* --- Panel RC Packed Area ---                                                  
PK_AREA  DC    PL8'0'                                                           
UPK_AREA DC    CL16' '                                                          
*                                1                                              
*                    6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1                            
EDMASK   DC    XL16'40202020202020202020202020202120'                           
EDWORK   DS    XL16                                                             
         DS    0F                                                               
* --- Data Read Length ---                                                      
READ_LENGTH DS H                         Current Readed Data Length             
* --- Data Inspection ---                                                       
*TERLNG     DS H                         Greatest Common Divisor                
*AX_BLKSZ   DS H                         Maximam Data length                    
*TERFM      DS BL1'00000000'                                                    
*                  o                     Not Variable Record.                   
*                                                                               
* --- Current Process TTR ---                                                   
         DS    0F                                                               
CURR_TTR DS    XL4                       work ttr                               
* --- work of mbbcchhr ---                                                      
*--- messages ---                                                               
*                   |....+....1....+....2....+....3....+....4....+....5         
*              ....+....6....+....7....+....8                                   
ERRMSG04 DC    CL80'< I/O Error TTR:@@@@@@ @@@@@@@@@@@@@@@ LENG:@@@@ BUF        
               A:@@@@@@@@'                                                      
ERRMSG99 DC    CL80'< '                                                         
*-------------------------------------------------------------------            
         COPY  RV1#ETOP                                                         
         COPY  RV1#ISPC                                                         
*-------------------------------------------------------------------            
         DS    0D                                                               
         RV1#DTE SECTTYP=NODSECT                                                
*-------------------------------------------------------------------            
         LTORG                                                                  
         DSECT                                                                  
*--- Revive Common Dsect -------------------------------------------            
         COPY RV1#COMM                                                          
*-------------------------------------------------------------------            
         COPY RV1#DTH                                                           
*-------------------------------------------------------------------            
         RV1#FMTB                                                               
*-------------------------------------------------------------------            
         CVT   DSECT=YES,LIST=YES                                               
R00      EQU   00                                                               
R01      EQU   01                                                               
R02      EQU   02                                                               
R03      EQU   03                                                               
R04      EQU   04                                                               
R05      EQU   05                                                               
R06      EQU   06                                                               
R07      EQU   07                                                               
R08      EQU   08                                                               
R09      EQU   09                                                               
R10      EQU   10                                                               
R11      EQU   11                                                               
R12      EQU   12                                                               
R13      EQU   13                                                               
R14      EQU   14                                                               
R15      EQU   15                                                               
         END   RV1DARD                                                          
