File: DGRAPH.FT of Tape: Various/ETH/prog1
(Source file text) 

      SUBROUTINE GRAPH(X,Y,NB,NPOINT) 
C 
      DIMENSION X(1),Y(1),NB(1),LINEA(120),LRUB(120),XSCALE(24) 
      LOGICAL SQUARE
C 
      DATA LINEA /120*1H /
C 
 1000 FORMAT(3X,A6,2H :/10X,1H:)
 1001 FORMAT(10X,1H:,120A1) 
 1002 FORMAT(1X,F8.3,2H :,120A1)
 1003 FORMAT(10X,1H-,24A5)
 1004 FORMAT(8X,11(F6.3,4X))
C 
      IXAUT=2 
      XMIN=1. 
      XMAX=-1E100 
      IYAUT=3 
      YMIN=1.E100 
      YMAX=-1.E100
      KCOL=91.
      LINE=55.
      SQUARE=.F.
      XAXIS=5H T[K] 
      YAXIS=6HETA[T]
C 
      LRUB(1)=1 
      IF(IXAUT.EQ.0) GO TO 20 
      DO 10 N=1,NPOINT
      IF (IXAUT.NE.2) XMIN=AMIN1(XMIN,X(N)) 
      IF (IXAUT.NE.1) XMAX=AMAX1(XMAX,X(N)) 
   10 CONTINUE
   20 IF(IYAUT.EQ.0) GO TO 40 
      DO 30 N=1,NPOINT
      IF (IYAUT.NE.2) YMIN=AMIN1(YMIN,Y(N)) 
   30 IF (IYAUT.NE.1) YMAX=AMAX1(YMAX,Y(N)) 
   40 DX=(XMAX-XMIN)/(KCOL-1) 
      DY=(YMAX-YMIN)/(LINE-1) 
      IF(.NOT.SQUARE) GOTO 50 
      DX=DX*10. 
      DY=DY*6.
      DX=AMAX1(DX,DY) 
      DY=DX 
      DX=DX/10. 
      DY=DY/6.
   50 CENX=(XMIN+XMAX)/2. 
      CENY=(YMIN+YMAX)/2. 
      RKCEN=FLOAT(KCOL)/2.
      RLCEN=FLOAT(LINE)/2.
      WRITE(4,1000) YAXIS 
      NP=NPOINT 
      DO 100 L=1,LINE 
      KLAST=0 
      LPOINT=0
      IF(NP.EQ.0) GOTO 65 
      DO 60 N=1,NP
      NLP=N-LPOINT
      X(NLP)=X(N) 
      Y(NLP)=Y(N) 
      NB(NLP)=NB(N) 
      IF((RLCEN-(Y(N)-CENY)/DY).GT.FLOAT(L)) GOTO 60
      LPOINT=LPOINT+1 
      K=IFIX(RKCEN+(X(N)-CENX)/DX)+1
      LRUB(LPOINT)=K
      KLAST=MAX0(K,KLAST) 
      IF(NB(N).NE.1) GOTO 51
      LINEA(K)=1HE
      GOTO 60 
   51 IF(NB(N).NE.2) GOTO 52
      LINEA(K)=1H-
      GOTO 60 
   52 IF(NB(N).NE.3) GOTO 53
      LINEA(K)=1H+
      GOTO 60 
   53 IF(NB(N).NE.4) GOTO 54
      LINEA(K)=1H0
      GOTO 60 
   54 IF(NB(N).NE.5) GOTO 55
      IF(LINEA(K).NE.1H ) GOTO 60 
      LINEA(K)=1H.
      GOTO 60 
   55 IF(NB(N).NE.6) GOTO 56
      IF(LINEA(K).NE.1H ) GOTO 60 
      LINEA(K)=1H*
      GOTO 60 
   56 LINEA(K)=1H'
   60 CONTINUE
   65 LINEL=LINE-L
      LSCALE=(LINEL)/6
      IF((6*LSCALE).EQ.(LINEL)) GOTO 70 
      WRITE(4,1001) (LINEA(K),K=1,KLAST)
      GOTO 80 
   70 YSCALE=CENY+DY*(FLOAT(LINEL)-RLCEN+.5)
      WRITE(4,1002) YSCALE,(LINEA(K),K=1,KLAST) 
   80 NP=NP-LPOINT
      DO 90 K=1,LPOINT
      KL=LRUB(K)
   90 LINEA(KL)=1H 
  100 CONTINUE
      KSCALE=KCOL/5 
      IF(KSCALE.EQ.24) KSCALE=23
      DO 110 K=1,KSCALE 
  110 XSCALE(K)=5H^---- 
      WRITE(4,1003) (XSCALE(K),K=1,KSCALE),XAXIS
      KSCALE=KCOL/10
      IF(KSCALE.EQ.12) KSCALE=11
      DO 120 K=1,KSCALE 
  120 XSCALE(K)=CENX+DX*(10.*FLOAT(K-1)-RKCEN+.5) 
      WRITE(4,1004) (XSCALE(K),K=1,KSCALE)
      RETURN
      END