      PARAMETER ( N =  20)
      PARAMETER ( M = 300)
      REAL       TAUNR(M,N*3+1) , TAUNI(M,N*3+1) , RO(M)
     *         , TAUR(M,N*4+2) , TAUI(M,N*4+2)
     *         , SX(M) , SY1(M) , SY2(M) , SHIFT
     *         , ROEND , CREND , CIEND , UNST
     *         , X , YR , YI , CHOUSEI
      COMPLEX    TAUN(M,N*3+1) , TAU(M,N*4+2)
      INTEGER  JRO , JMOD , IXG1 , IXG2 , IYGR1 , IYGR2 , IYGI1 , IYGI2
     *       , IPAT , NC , JCRT , JSIZE
     *       , IR , IGP , IGM , JPAGE
C     CHARACTER*1 CHAR
C     CHARACTER*8 NLIST(3),DEVNAM
C     COMMON/PNAMES/NLIST,DEVNAM
      COMMON/PLPNTB/HPOINT,HCHAR
      DATA IPAT/Z'0000F0F0'/
C     CALL SETFNM('CCURVE  ','ADMIMAGE','W1      ')
      ROEND = 3.0
      CREND = 2.0
      CIEND = 1.0
      IXG1  = 6
      IXG2  = 5
      IYGR1 = 4
      IYGR2 = 5
      IYGI1 = 2
      IYGI2 = 5
      SHIFT = 1.0
      IR    = 10
      IGP   = 7
      IGM   = 1
      UNST  = 1.0E-8
      HPOINT= 0.1
      JPEND = 4
      CHOUSEI = ( HPOINT - 0.03 ) / 10.0 / 2.0
*
      OPEN (11,FILE = './taun.dat')
*
        DO 10 JRO = 1 , M
          READ(11,610) RI , RO(JRO)
          READ(11,*  ) (TAUN(JRO,JMOD) , JMOD = 1 , N*3+1 )
 10     CONTINUE
 610  FORMAT(2F8.4)
      CLOSE(11)
*
      OPEN (12,FILE = './tau.dat')
*
        DO 15 JRO = 1 , M
          READ(12,610) RI , RO(JRO)
          READ(12,*  ) (TAU(JRO,JMOD) , JMOD = 1 , N*4+2 )
 15     CONTINUE
      CLOSE(12)
*
      DO 20 JRO = 1 , M
        DO 30 JMOD = 1 , N*3+1
          TAUNR(JRO,JMOD) = REAL(TAUN(JRO,JMOD))
          TAUNI(JRO,JMOD) = - AIMAG(TAUN(JRO,JMOD))
 30     CONTINUE
 20   CONTINUE
*
      DO 25 JRO = 1 , M
        DO 35 JMOD = 1 , N*4+2
          TAUR(JRO,JMOD) = REAL(TAU(JRO,JMOD))
          TAUI(JRO,JMOD) = - AIMAG(TAU(JRO,JMOD))
 35     CONTINUE
 25   CONTINUE
*
*
      CALL PLSTRT ( 20.0 , 20.0 , 'NLP1' )
*
      DO 510 JPAGE = 1 , JPEND
      CALL SET ( 0.3 , 0.8 , 0.45, 0.95, 0.0 ,ROEND,-CREND ,CREND , 1 )
      CALL SETLAB ( 1 , 0 , 20 , 18 , 6 , 6H(F6.1) )
      CALL SETLAB ( 2 , 0 , 20 , 18 , 6 , 6H(F6.1) )
*
*
      CALL DASHD ( IPAT , NC , JCRT , JSIZE )
        DO 40 JMOD = N*2+1-IR , N*2+1+IGP
          DO 50 JRO = 1 , M
             SX(JRO) = RO(JRO)
                SY1(JRO) = TAUNR(JRO,JMOD) - SHIFT
              IF (SY1(JRO).GT.CREND) THEN
                SY1(JRO) = CREND
              ELSEIF (SY1(JRO).LT.-CREND) THEN
                SY1(JRO) = -CREND
              ENDIF
                SY2(JRO) = - SY1(JRO)
 50       CONTINUE
      IF (JPAGE.GE.2) THEN
      CALL SETRGB ( 0.0 , 1.0 , 0.0 )
      CALL OPTN ( 'INTN' , 'MID ' )
      CALL PCURVE ( SX , SY1 , M )
      ENDIF
      IF (JPAGE.GE.3) THEN
      CALL SETRGB ( 0.0 , 0.0 , 1.0 )
      CALL OPTN ( 'INTN' , 'MID ' )
      CALL PCURVE ( SX , SY2 , M )
      ENDIF
 40     CONTINUE
*
        DO 60 JMOD = N+1-IGM , N+1
          DO 70 JRO = 1 , M
             SX(JRO) = RO(JRO)
                SY1(JRO) = TAUNR(JRO,JMOD) - SHIFT
              IF (SY1(JRO).GT.CREND) THEN
                SY1(JRO) = CREND
              ELSEIF (SY1(JRO).LT.-CREND) THEN
                SY1(JRO) = -CREND
              ENDIF
                SY2(JRO) = - SY1(JRO)
 70       CONTINUE
      IF (JPAGE.GE.2) THEN
      CALL SETRGB ( 0.0 , 1.0 , 0.0 )
      CALL OPTN ( 'INTN' , 'MID ' )
      CALL PCURVE ( SX , SY1 , M )
      ENDIF
      IF (JPAGE.GE.3) THEN
      CALL SETRGB ( 0.0 , 0.0 , 1.0 )
      CALL OPTN ( 'INTN' , 'MID ' )
      CALL PCURVE ( SX , SY2 , M )
      ENDIF
 60     CONTINUE
*
      CALL SETBLACK
      IF ((JPAGE.EQ.1).OR.(JPAGE.EQ.4)) THEN
        DO 80 JMOD = 1 , N*4+2
          DO 90 JRO = 1 , M
             SX(JRO) = RO(JRO)
                SY1(JRO) = TAUR(JRO,JMOD)
              IF (SY1(JRO).GT.CREND) THEN
                SY1(JRO) = CREND
              ELSEIF (SY1(JRO).LT.-CREND) THEN
                SY1(JRO) = -CREND
              ENDIF
 90       CONTINUE
      CALL OPTN ( 'INTN' , 'LOW ' )
      CALL PCURVE ( SX , SY1 , M )
 80     CONTINUE
      CALL OPTN ( 'INTN' , 'HIGH' )
*
        DO 100 JMOD = 1 , N*4+2
          DO 110 JRO = 1 , M
            IF (TAUI(JRO,JMOD).GT.UNST) THEN
              X  = RO(JRO)        - CHOUSEI * ROEND
              YR = TAUR(JRO,JMOD) - CHOUSEI * CREND * 2.0
              CALL POINT ( X , YR )
            ENDIF
 110      CONTINUE
 100    CONTINUE
      ENDIF
*
      CALL PGRIDA (IXG1,IXG2,IYGR1,IYGR2,  0 ,  1 ,  0 ,  0 ,  0 ,  0 )
*
      CALL PWRIT ( ROEND , CREND*1.1 , 'Ri=     ', 8 , 24 , 0 , 1 )
      CALL PNUMBR ( ROEND , CREND*1.1 , RI , 5 , 6H(F5.2) , 24 , 0 , 1 )
      CALL PWRIT (-ROEND*0.2, CREND*0.0, 'Cr' , 2 , 36 , 0 , 1 )
*
      IF ((JPAGE.EQ.1).OR.(JPAGE.EQ.4)) THEN
      CALL SET ( 0.3 , 0.8 , 0.15, 0.4 , 0.0 ,ROEND,   0.0 ,CIEND , 1 )
      CALL SETLAB ( 1 , 0 , 20 , 18 , 6 , 6H(F6.1) )
      CALL SETLAB ( 2 , 0 , 20 , 18 , 6 , 6H(F6.1) )
      CALL PGRIDA (IXG1,IXG2,IYGI1,IYGI2,  1 ,  1 ,  0 ,  0 ,  0 ,  0 )
*
        DO 120 JMOD = 1 , N*4+2
          DO 130 JRO = 1 , M
            IF (TAUI(JRO,JMOD).GT.UNST) THEN
              X  = RO(JRO)        - CHOUSEI * ROEND
              YI = TAUI(JRO,JMOD) - CHOUSEI * CIEND * 2.0
              CALL POINT ( X , YI )
            ENDIF
 130      CONTINUE
 120    CONTINUE
*
      CALL PWRIT (-ROEND*0.2, CIEND*0.5, 'Ci' , 2 , 36 , 0 , 1 )
      CALL PWRIT ( ROEND*0.5,-CIEND*0.2, 'Ro' , 2 , 36 , 0 , 1 )
      ENDIF
*
      IF (JPAGE.NE.4) THEN
      CALL FRAME
      ENDIF
 510  CONTINUE
*
      CALL PLOTE ( 1 , 1 , 999 )
      STOP
      END
