File: PSCALE.FT of Tape: Sources/Fortran/os8-f4-3
(Source file text) 

	SUBROUTINE PSCALE(ARRAY,AXLEN,NPTS,INC)
C	VERSION 40A 30-MAY-80 WVDM
	REAL INTVAL(6),ARRAY(1)
	DATA INTVAL/1.,2.,4.,5.,8.,10./
	IXLEN=AXLEN
	IF(IXLEN.LT.1)GO TO 97
	XMIN=ARRAY(1)
	XMAX=ARRAY(1)
	L=ABS(INC)
	POW=ABS(AINT(NPTS))*L
	DO 10 I=1,POW,L
	IF(XMIN.GT.ARRAY(I))XMIN=ARRAY(I)
	IF(XMAX.LT.ARRAY(I))XMAX=ARRAY(I)
10	CONTINUE
	POW=1.
	IF(XMAX.EQ.XMIN)GO TO 99
	UNIN=ABS(XMAX-XMIN)/IXLEN
C	GET POWER SO RANGE OF PLOT 1-10
20	IF(UNIN/POW.LT.10.)GO TO 32
	POW=POW*10.
	GO TO 20
32	DELTAV=.1
	IF(UNIN/POW.GE.1.)GO TO 35
	POW=POW*DELTAV
	GO TO 32
35	M=1
	UNIN=UNIN/POW
C	DETERMINE PLOTTING INCREMENT
36	IF(INTVAL(M).GE.UNIN)GO TO 40
	M=M+1
	GO TO 36
40	DELTAV=INTVAL(M)*POW
41	PLTMIN=DELTAV
45	IF(XMIN.GE.PLTMIN)GO TO 47
	PLTMIN=PLTMIN-DELTAV
	GO TO 45
47	UNIN=PLTMIN+IXLEN*DELTAV
	IF(XMAX.GT.UNIN)GO TO 200
	IF(INC.GE.0)GO TO 50
	DELTAV=-DELTAV
	PLTMIN=UNIN
50	ARRAY(NPTS*L+1)=PLTMIN
	ARRAY(NPTS*L+L+1)=DELTAV
98	RETURN
200	IF(M.NE.6)GO TO 210
	POW=POW*10.
	M=0
210	M=M+1
	DELTAV=INTVAL(M)*POW
	GO TO 41
99	WRITE(0,300)
300	FORMAT(' MAX PT = MIN PT'/)
	GO TO 98
97	WRITE(0,100)
100	FORMAT(' AXIS LENGTH < 1'/)
	END