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