File: PSCALE.LS of Disk: V50/Source/Source-Listing-RALF-1
(Source file text)
FORTRAN IV 5AAAA (A6) 8-APR-92 PAGE ONE 0002 SUBROUTINE PSCALE(ARRAY,AXLEN,NPTS,INC) C VERSION 50A 30-MAY-80 WVDM 0003 REAL INTVAL(6),ARRAY(1) 0004 DATA INTVAL/1.,2.,4.,5.,8.,10./ 0005 IXLEN=AXLEN 0006 IF(IXLEN.LT.1)GO TO 97 0007 XMIN=ARRAY(1) 0010 XMAX=ARRAY(1) 0011 L=ABS(INC) 0012 POW=ABS(AINT(NPTS))*L 0013 DO 10 I=1,POW,L 0014 IF(XMIN.GT.ARRAY(I))XMIN=ARRAY(I) 0015 IF(XMAX.LT.ARRAY(I))XMAX=ARRAY(I) 0016 10 CONTINUE 0017 POW=1. 0020 IF(XMAX.EQ.XMIN)GO TO 99 0021 UNIN=ABS(XMAX-XMIN)/IXLEN C GET POWER SO RANGE OF PLOT 1-10 0022 20 IF(UNIN/POW.LT.10.)GO TO 32 0023 POW=POW*10. 0024 GO TO 20 0025 32 DELTAV=.1 0026 IF(UNIN/POW.GE.1.)GO TO 35 0027 POW=POW*DELTAV 0030 GO TO 32 0031 35 M=1 0032 UNIN=UNIN/POW C DETERMINE PLOTTING INCREMENT 0033 36 IF(INTVAL(M).GE.UNIN)GO TO 40 0034 M=M+1 0035 GO TO 36 0036 40 DELTAV=INTVAL(M)*POW 0037 41 PLTMIN=DELTAV 0040 45 IF(XMIN.GE.PLTMIN)GO TO 47 0041 PLTMIN=PLTMIN-DELTAV 0042 GO TO 45 0043 47 UNIN=PLTMIN+IXLEN*DELTAV 0044 IF(XMAX.GT.UNIN)GO TO 200 0045 IF(INC.GE.0)GO TO 50 0046 DELTAV=-DELTAV 0047 PLTMIN=UNIN 0050 50 ARRAY(NPTS*L+1)=PLTMIN 0051 ARRAY(NPTS*L+L+1)=DELTAV 0052 98 RETURN 0053 200 IF(M.NE.6)GO TO 210 0054 POW=POW*10. 0055 M=0 0056 210 M=M+1 0057 DELTAV=INTVAL(M)*POW 0060 GO TO 41 0061 99 WRITE(0,300) 0062 300 FORMAT(' MAX PT = MIN PT'/) 0063 GO TO 98 0064 97 WRITE(0,100) 0065 100 FORMAT(' AXIS LENGTH < 1'/) FORTRAN IV 5AAAA (A6) 8-APR-92 PAGE TWO 0066 END