         START                                                                  
* -----------------------------------------------------------------             
*                                                                               
*                                                                               
*                                                                               
*                                                                               
* Return Code:                                                                  
*   0 : Normal end                                                              
*   1 : Getmin error                                                            
*   8 : Read Error                                                              
*                                                                               
* -----------------------------------------------------------------             
         DC   C'<< Revive ! >> ('                                               
         COPY  RV1#HDR                                                          
         PRINT NOGEN                                                            
*-------------------------------------------------------------------            
* --- Start of Process --------------------------------------------             
*-------------------------------------------------------------------            
RV1SHOW  CSECT                                                                  
         SAVE  (14,12),T,*                                                      
         BALR  R03,0                                                            
         USING *,R03,R04,R05               Base Reg. R03,R04                    
         LA    R04,2048(R03)               2 Base Reg                           
         LA    R04,2048(R04)                                                    
         LA    R05,2048(R04)               2 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)                 
*-------------------------------------------------------------------            
         LM    R06,R07,R01                 Revive Common Area                   
         USING REVIVED,R06                                                      
         USING CMDPROCD,R07                                                     
*-------------------------------------------------------------------            
         NI    SHOWFLAG,X'00'                                                   
*-------------------------------------------------------------------            
*-------- ISPF VDEFINE ---------------------------------------------            
*-------------------------------------------------------------------            
@ISPVDEF EQU   *                                                                
         L     R08,RV1ISPFN              Load Var Name Pointer                  
         L     R09,RV1ISPFL              Load Var Length Pointer                
         L     R10,RV1ISPFT              load Var Type Pointer                  
         L     R11,RV1ISPFA              load Var Address Pointer               
@IS_LOP1 EQU   *                                                                
         CLC   0(8,R08),ISPVENDM         If End ?                               
         BE    @IS_LOP1X                   Goto @IS_LOP1X                       
*        TPUT  0(R08),8                                                         
         L     R01,0(R11)                Load Var Address                       
         CALL  ISPLINK,(VDEFINE,(R08),(R01),(R10),(R09)),VL                     
         LA    R08,8(R08)                Shift Var Name Pointer                 
         LA    R09,4(R09)                Shift Var Length Pointer               
         LA    R10,8(R10)                Shift Var Type Pointer                 
         LA    R11,4(R11)                Shift Var Address Pointer              
         B     @IS_LOP1                  goto Loop                              
@IS_LOP1X EQU  *                                                                
*-------------------------------------------------------------------            
@PQUERY  EQU   *                                                                
         CALL  ISPLINK,(PQUERY,PANELSHO,RV1SAREAN,,VWIDTHN,VDEPTHN),VL          
         LTR   R15,R15                                                          
         BZ    @PQ_SKP2                                                         
         CALL  ISPLINK,(SETMSG,REV020),VL                                       
*REV020                             .ALARM = YES                                
*'Revive Show Panel Query Error. Why? '                               +         
*'Perhaps Misstake Installation. Please Re-Install'                             
@PQ_SKP2 EQU   *                                                                
         MVC   VSDEPTH,VDEPTH                                                   
         MVC   VSWIDTH,VWIDTH                                                   
         L     R01,VDEPTH                                                       
*        BCTR  R01,0                                                            
         MH    R01,VSWIDTH+2                                                    
         ST    R01,RV1SAREAL                                                    
         GETMAIN RC,LV=(R01)            Getmain Dynamic Alloc Work A            
         LTR   R15,R15                   If not Error                           
         BZ    @PQ_SKP21                   goto @PQ_SKP21                       
*--- Getmain Error -------------------------------------------------            
*+++++++ BAL   R14,GETMAIN_ERROR                                                
         LA    R15,1                                                            
         B     BYE_NOGETMAIN                                                    
*--- Normal Compleate ----------------------------------------------            
@PQ_SKP21 EQU   *                                                               
         ST    R01,RV1DAREAA            Store List Panel Area                   
         CALL  ISPLINK,(VDEFINE,RV1SAREAN,(R01),RV1SAREAT,RV1SAREAL),VL         
*-------------------------------------------------------------------            
*-------- Dataset Open ---------------------------------------------            
*-------------------------------------------------------------------            
*DSOPEN  EQU   *                                                                
*        MVC   PDSFDATA+X'28'(8),RV1DDN  Data Area Read DD                      
*        OPEN  (PDSFDATA)                                                       
*        POINT PDSFDATA,PC@TTRB          Point Data Area Addr                   
*-------------------------------------------------------------------            
*-------- Data Area Read -------------------------------------------            
*-------------------------------------------------------------------            
*                                                                               
* Data Area Table .                                                             
*                                                                               
*  Data Area Table is Chaining Next Table Entry and Previous Table              
*  Entry.                                                                       
*  STFIRST : First Table Address                                                
*  STLAST  : Last Table Address                                                 
*  STCURR  : Current Process Table Start Address                                
*  STCURRP : 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    STFIRST,STFIRST           First Entry Address Clear              
*                                                                               
         GETMAIN RC,LV=STLENGTH          First Data Table Area                  
         LTR   R15,R15                                                          
         BNZ   @RA_ERR1                                                         
         USING STHEADER,R01                                                     
         LA    R15,1                                                            
         ST    R15,STHPOSF               Set First Entry = 1                    
         XC    STHPOSL,STHPOSL           Clear Last Entry                       
         XC    STHNEXT,STHNEXT           Clear Next Table Address               
         XC    STHPREV,STHPREV           Clear Previous Table Entry             
         DROP  R01                                                              
         ST    R01,STFIRST               Store Address ( First )                
         ST    R01,STLAST                Store Address ( Last )                 
         ST    R01,STCURR                Store Address ( Current )              
         LA    R01,STHL(R01)             Shift Position                         
         ST    R01,STCURRP               Store Address ( Position )             
         LA    R01,1                                                            
         ST    R01,STPOSIT               Set List Panel Row = 1                 
         XC    STLASTE,STLASTE           Data Area Table Last Entry Num         
* --- Getmain Read Buffer ---                                                   
         LH    R02,PDSFDATA+X'3E'        Load BlockSize ( 32760 )               
         GETMAIN RC,LV=(R02)             Member TTR Save Area                   
         LTR   R15,R15                                                          
         BNZ   @RA_ERR1                                                         
         ST    R01,RV1DATBA              Store Address                          
*-------------------------------------------------------------------            
*-------- Data Area Read -------------------------------------------            
*-------------------------------------------------------------------            
* -Variable                                                                     
*  STSCRL   : Scroll vertical Lines.(sign fixed)                                
*  STSCRLS  : Scroll side column.(sign fixed)                                   
*  STPOSIT  : Currently Displayed Top Line.(fixed)                              
*                                                                               
*  STLASTT  : TTR of next record.                                               
*  STLASTE  : Already Readed Records No.(Already Getting TTR)                   
*  STLASTF  : Already Readed Line No.(for RECFM=F)                              
*  STLASTV  : Already Readed Line No.(for RECFM=V)                              
*                                                                               
*  -ShowTable-                                                                  
*  one entry per one phisical record.                                           
*  STETTR   : TTR                                                               
*  STELNG   : phisical record length                                            
*  STERCDV  : logical record length ( for RECFM=V )                             
*                                                                               
* *** if Recfm=F                                                                
*       record count = STELNG / lrecl                                           
* *** if Recfm=V                                                                
*       record count = STERCDV ( count records from phisical data )             
* *** if Recfm=U                                                                
*       record count = 1 ( always )                                             
*                                                                               
* -Process                                                                      
*  Phase 1: ( compute scrolled top line. )                                      
*   STPOSIT <- STPOSIT + STSCRL                                                 
*                                                                               
*  Phase 2: ( ShowTable build. )                                                
*   If STPOSIT < STLASTE(F,V) then                                              
*     Read & Build ShowTable.                                                   
*                                                                               
*  Phase 3: ( make display area. )                                              
*   Read Record, and Make Display Area.                                         
*                                                                               
*  Phase 4: ( Display )                                                         
*   Dispaly Show Panel.                                                         
* ----                                                                          
* -Scroll                                                                       
*  STSCRL  <- Up(-), Down(+)                                                    
*  STSCRLS <- Left(-), Right(+)                                                 
* ----                                                                          
* -When a RECFM changed.                                                        
*  Set Current RECFM flag.                                                      
*  count STPOSIT lines.(from first record to current record)                    
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*                                                                               
*-------------------------------------------------------------------            
@SDISPLAY EQU  *                                                                
         L     R08,STPOSIT               Get Current Top Line.                  
@SD_MAKE EQU   *                                                                
         CL    R08,STLASTE               If Current Line Already Readed         
         BL    @SD_MAKEX                                                        
         TM    SHOWFLAG,X'80'            If Already Opened ?                    
         BO    @SD_OPEND                                                        
         MVC   PDSFDATA+X'28'(8),RV1DDN  Data Area Read DD                      
         OPEN  (PDSFDATA)                                                       
         OI    SHOWFLAG,X'80'            Opened!                                
@SD_OPEND EQU  *                                                                
         POINT PDSFDATA,STLASTT          Point TTR at Last readed               
         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                       
*-------------------------------------------------------------------            
*-------- Data Area Read -------------------------------------------            
*-------------------------------------------------------------------            
@READDA  EQU   *                                                                
         XC    CURR_CHR(8),CURR_CHR                                             
         NI    FLAG,B'10011111'          Clear x'60' Flag                       
*-------- 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 ---                                                      
         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   R12,@SRCHSTR              Search Strings                         
*--- Convert TTR ---                                                            
         BAL   R14,@CNVTTR               Convert MBCCHHR -> TTR                 
*--- Analyze Screen update ---                                                  
         BAL   R12,@ANLUPDT              Analyze Screen Update                  
* --- Search TTR from Directory Table ---                                       
         L     R08,RV1TBSPA              R08 <- Directory Table Area            
@M_LOP01 EQU   *                                                                
         CL    R08,RV1TBSPP              If Last Table Entry ?                  
         BNL   @M_NOF                      goto @M_NOTF                         
         CLC   8(3,R08),CURR_TTR         If TTR is Equal                        
         BE    @M_FND                      goto @M_FND                          
         LA    R08,12(R08)               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(R08)         Copy Member Name                       
         OI    11(R08),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 -------------------------            
@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              R08 <- Read Buffer Address             
         LH    R14,READ_LENGTH           R14 <- 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                         
         B     @M_SKIPX                                                         
@M_SKIP  EQU   *                                                                
         MVC   DTEDATA(L'DTEDATA),0(R15) Copy Data Area                         
@M_SKIPX EQU   *                                                                
         BAL   R12,CONVDCHR              Convert Display able Character         
@M_ANAL1 EQU   *                                                                
         BAL   R12,@COMPT_LEN            Record Analyze.                        
*-------- Read Next Records ----------------------------------------            
@M_DUM_L EQU   *                         2'nd Block                             
         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   R12,@COMPT_LEN                                                   
*                                                                               
         BAL   R12,@SRCHSTR                                                     
         BAL   R14,@CNVTTR               Convert MBBCCHHR -> TTR                
         BAL   R12,@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   R12,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   R12,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   R12,DT#MAKE                                                      
@M_EXIT2 EQU   *                         member read terminate.                 
         B     @R_EXIT                                                          
@R_EXIT  EQU   *                         read terminate .                       
*        LH    R01,B#BLKSZ                                                      
         LH    R01,PDSFDATA+X'3E'        Load BlockSize                         
         L     R02,RV1DATBA                                                     
         FREEMAIN RC,LV=(R01),A=(R02)    FreeMain Read Buffer                   
         CLOSE (PDSFDATA)                                                       
         L     R13,SAVEAREA+4                                                   
         RETURN (14,12),RC=0                                                    
*--------- Data Area Read Buffer GETMAIN faile ---------------------            
@RA_ERR1 EQU   *                                                                
         CLOSE (PDSFDATA)                                                       
         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    R12                                                              
*-------------------------------------------------------------------            
*                                                                               
*-------------------------------------------------------------------            
DT#MAKE  EQU   *                                                                
*        TPUT  =CL20'*MAKE*',20                                                 
         L     R15,STLASTE               Processing Table Number Set            
         LA    R15,1(R15)                                                       
         ST    R15,STLASTE                                                      
         L     R01,STCURRP               If not Table Over ?                    
         S     R01,STCURR                                                       
         LA    R01,DTELAST(R01)                                                 
         L     R02,=A(STLENGTH)                                                 
         CLR   R01,R02                                                          
         BNH   DT#MAKE2                                                         
         GETMAIN RC,LV=STLENGTH          Data Area Table Area                   
         LTR   R15,R15                                                          
         BNZ   @BYE_FREEMAIN1                                                   
         USING STHEADER,R01                                                     
         MVC   STHPOSF,STLASTE           Set First Entry Number                 
         XC    STHPOSL,STHPOSL           Clear Last Entry Number                
         XC    STHNEXT,STHNEXT           Clear Next Table Address               
         L     R02,STLAST                Store Address ( Last )                 
         ST    R02,STHPREV               Store Previous Addres                  
         DROP  R01                                                              
*                                          in Current Table                     
         USING STHEADER,R02                                                     
         ST    R01,STHNEXT               Store Next Address                     
         DROP  R02                                                              
*                                          in Previous Table                    
         ST    R01,STLAST                Store Address ( Last )                 
         ST    R01,STCURR                Store Address ( Current )              
         LA    R01,STHL(R01)             Shift Position                         
         ST    R01,STCURRP               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,STCURRP               Copy Table Entry                       
         MVC   0(DTELAST,R01),DTEFIRST                                          
         LA    R01,DTELAST(R01)          Shift Next Entry                       
         ST    R01,STCURRP               Store Address ( Position )             
*                                                                               
         L     R01,STCURR                                                       
         USING STHEADER,R01                                                     
         MVC   STHPOSL,STLASTE           Set Last Entry Number                  
         DROP  R01                                                              
         BR    R12                                                              
*-------------------------------------------------------------------            
*-------- 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    R12                                                              
*-------------------------------------------------------------------            
*-------- 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    R12                                                              
*-------------------------------------------------------------------            
*-------- Search String --------------------------------------------            
*-------------------------------------------------------------------            
@SRCHSTR EQU   *                                                                
*                                                                               
         LH    R15,RV1SSTRL                      R15 <- Search String L         
         LTR   R15,R15                                                          
         BZ    @SRCH_BP                                                         
         BCTR  R15,0                                                            
         L     R11,RV1DATBA                      R11 <- Read Buffer             
         XR    R10,R10                                                          
         LH    R10,READ_LENGTH                   R10 <- Read Length             
         LTR   R10,R10                                                          
         BZ    @SRCH_NG                                                         
         SH    R10,RV1SSTRL                      L'Read - L'Srch Str            
         LA    R11,0(R11,R10)                    Chk Pos <- Buf + L'Chk         
         LA    R10,1(R10)                        + 1                            
@SRCH_LP EQU   *                                                                
         STC   R15,*+5                                                          
         CLC   0(0,R11),RV1SSTRR                                                
         BE    @SRCH_OK                                                         
         BCTR  R11,0                                                            
         BCT   R10,@SRCH_LP                                                     
         B     @SRCH_NG                                                         
@SRCH_BP EQU   *                                                                
         OI    FLAG,X'02'                                                       
         BR    R12                                                              
@SRCH_OK EQU   *                                                                
         OI    FLAG,X'02'                                                       
         BR    R12                                                              
@SRCH_NG EQU   *                                                                
         BR    R12                                                              
*-------------------------------------------------------------------            
*-------- 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    R08,FMTTBLP                                                      
*        LTR   R08,R08                                                          
         LA    R08,1                                                            
DC#LOP1  EQU   *                                                                
         CH    R08,FMTTBLP                                                      
         BH    DC#LOP1X                                                         
*                                                                               
         LR    R01,R08                                                          
         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    R08,1(R08)                Table count up                         
         B     DC#LOP1                                                          
DC#LOP1X EQU   *                                                                
         BR    R12                                                              
*-------------------------------------------------------------------            
*-------- 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     R11,CVTPTR                                                       
         USING CVTMAP,R11                                                       
         L     R15,CVTPCNVT                                                     
         DROP  R11                                                              
         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                       Reg. Savearea                          
* --- Show Data Index Area Control ---                                          
STFIRST  DS    F                         Index Area Table First Entry A         
STLAST   DS    F                         Index Area Table Last Entry A          
STCURR   DS    F                         Index Area Table Current Ent A         
STCURRP  DS    F                         Index Area Table Current Pos A         
STLASTE  DS    F                         Index Area Table Last Entry Nu         
STPOSIT  DS    F                         Current Display Index                  
STREADNO DS    F                         Current Data Read Record No.           
STLENGTH EQU   4096                      Index Area Table Length                
* -----------------                                                             
RV1SAREAN DC   CL8'RV1SAREA'             Show Panel Dynamic Area Name           
RV1SAREAT DC   CL8'CHAR    '             Show Panel Dynamic Area Name           
RV1SAREAA DS   A(0) <- RV1SAREA          SHow Panel Dynamic Area Name           
RV1SAREAL DS   F'8'                      Show Panel Dynamic Area Name           
* -----------------                                                             
SHOWFLAG  DS   XL1                                                              
*                 'o.......' : Opened.                                          
* -----------------                                                             
REV020    DC   CL8'REV020'                                                      
* --- Work Area ---                                                             
CURR_CHR DS    XL8                                                              
* --- Work Area ---                                                             
WK#F     DS    F                                                                
WK#F1    DS    F                                                                
WK#F2    DS    F                                                                
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             
* --- Current Process TTR ---                                                   
         DS    0F                                                               
CURR_TTR DS    XL4                       work ttr                               
ERRMSG04 DC    CL80'< I/O Error TTR:@@@@@@ @@@@@@@@@@@@@@@ LENG:@@@@ BU*        
               F:@@@@@@@@'                                                      
ERRMSG99 DC    CL80'< '                                                         
*-------------------------------------------------------------------            
         COPY  RV1#ETOP                                                         
         COPY  RV1#ISPC                                                         
*-------------------------------------------------------------------            
         DS    0D                                                               
*--- Show Data Index Area Header -----------------------------------            
         LTORG                                                                  
STHEADER DSECT                                                                  
STHPOSF  DS    F                         Index Table First Entry Num            
STHPOSL  DS    F                         Index Table Last Entry Num             
STHNEXT  DS    F                         Next Data Table Address                
STHPREV  DS    F                         Previous Data Table Address            
STHL     EQU   *-STHEADER                Length                                 
STE      DSECT                                                                  
STETTR   DS    XL2                       TTR                                    
STELENG  DS    XL2                       phisical record length                 
STERCDV  DS    XL2                       logical record length                  
         DSECT                                                                  
*--- Revive Common Dsect -------------------------------------------            
         COPY RV1#COMM                                                          
*-------------------------------------------------------------------            
         RV1#CMDA SECTTYP=DSECT                                                 
*-------------------------------------------------------------------            
*-------------------------------------------------------------------            
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   RV1SHOW                                                          
