C     SUBROUTINE SCALE(X,N,S,XMIN,DX) TO SCALE ARBITRARY
C     VARIABLES TO UNITS OF INCHES WHICH CAN BE PLOTTED
C     USING SUBROUTINE PLOT.
C
C     MEMBER OF LIBRARY "PLTLIB", ADDED OCT., 1979
C
C     ORIGINAL PROGRAM BY C. E. COHN FOR THE SEL-840, MODIFIED
C     FOR THE PDP-11/34 BY J. MORMAN, SEPT., 1979.
C     
C     THE ROUTINE IS USED BY THE STATEMENT    
C                    CALL SCALE (X,N,S,XMIN,DX)
C     WHERE X IS THE NAME OF THE REAL ARRAY TO BE SCALED,
C     CONTAINING N MEMBERS.  S IS THE RANGE OF THE PLOT IN
C     INCHES.  XMIN AND DX ARE QUANTITIES CALCULATED BY THE
C     SUBROUTINE -- XMIN IS THE VALUE OF X ASSOCIATED  WITH
C     THE ORIGIN OF THE GRAPH  AND  DX IS THE INCREMENT IN
C     X PER INCH OF THE GRAPH.
C
C     ***  AFTER EXIT FROM SCALE, THE ARRAY X HAS EACH ELEMENT
C     ***  REPLACED BY ITS COORDINATE IN INCHES.  IF THE ORIGINAL
C     ***  VALUES ARE NEEDED THEY MUST BE SAVED ELSEWHERE.
C
      SUBROUTINE SCALE (X,N,S,XMIN,DX)
      DIMENSION X(N),P(8)
      DATA P/1.,2.,3.,4.,5.,6.,7.,8./
      B = X(1)
      A = B
      DO 10 I=2,N
      T = X(I)
      A = AMIN1 (A,T)
   10 B = AMAX1 (B,T)
      R = B - A
      RS = R/S
      T = ALOG10 (RS)
      IF (T) 11,12,13
   11 JT = INT(T - 1.)
      GO TO 14
   12 JT = 0.
      GO TO 14
   13 JT = T
   14 H = RS/10.**JT
      IF (H - 8.) 1,1,2
    2 JT = JT + 1
      H = H/10.
    1 DO 3 I=1,8
      IF (P(I) - H) 3,4,4
    3 CONTINUE
    4 DX = P(I)*10.**JT
      SD = S*DX
      XM = (B + A - SD)/(2.*DX)
   15 XMIN = AINT(XM)*DX
      IF (A - XMIN) 8,9,9
    8 XM = XM - 1.
      GO TO 15
    9 IF (B - XMIN - SD) 5,5,6
    6 I = I + 1
      IF (I - 8) 4,4,7
    7 JT = JT + 1
      H = H/10.
      GO TO 1
    5 DO 20 I=1,N
   20 X(I) = (X(I) - XMIN)/DX
      RETURN
      END
