Trailing-Edge
-
PDP-10 Archives
-
FORTRAN-10_V7wLink_Feb83
-
forpl1.for
There are 11 other files named forpl1.for in the archive. Click here to see a list.
C PLOTTER ROUTINES ,7(3210)
C FORPLT - PART 1, FORTRAN ROUTINES
C
C
c***** Begin Revision History *****
c
c 1100 CKS
c Convert back to Fortran, remove arithmetic IFs and Hollerith
c
c***** Begin Version 7 *****
c
c 3210 PLB
c FORTRAN-77ization; IF-THEN-ELSE, DO
c CAXIS
c
c***** End Revision History *****
C COPYRIGHT (C) DIGITAL EQUIPMENT CORPORATION 1980, 1983
C
C THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
C ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
C INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
C COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
C OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
C TRANSFERRED.
C
C THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
C AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
C CORPORATION.
C
C DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
C SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
SUBROUTINE CAXIS (X,Y,CHREXP,SIGN,SIZE,THETA,YMIN,DY)
C New 7(3210) [PLB]
C ARGS:
C X,Y STARTING POINT OF AXIS, IN INCHES, WHERE THE LOWER LEFT CORNER
C OF THE PAGE IS (0,0)
C CHREXP CHARACTER EXPRESSION TEXT LABEL FOR THE AXIS
C SIGN DIRECTION FOR AXIS LABEL
C SIZE LENGTH OF AXIS, INCHES
C THETA ANGLE AT WHICH AXIS IS PLOTTED (0=HORIZONTAL, 90=VERTICAL)
C XMIN X VALUE AT LEFT EDGE OF AXIS
C DX X CHANGE IN 1 INCH
CHARACTER*(*) CHREXP
IF (SIGN .LT. 0) THEN
SIGN = -1.
ELSE
SIGN = 1.
END IF
NAC=LEN(CHREXP)
N=SIZE+.5
CTH=COSD(THETA)
STH=SIND(THETA)
TN=N
XB=X
YB=Y
XA=X-.1*SIGN*STH
YA=Y+.1*SIGN*CTH
CALL PLOT(XA,YA,3)
DO I=1,N
CALL PLOT(XB,YB,2)
XC=XB+CTH
YC=YB+STH
CALL PLOT(XC,YC,2)
XA=XA+CTH
YA=YA+STH
CALL PLOT(XA,YA,2)
XB=XC
YB=YC
END DO
EXP=0
NT=INT(ALOG10(DY)+.001)
IF (NT .LT. -1 .OR. NT .GT. 1) EXP = NT
ADY=DY*10.**(-EXP)
ABSV=YMIN*10.**(-EXP)+TN*ADY
XA=XB-(.20*SIGN-.05)*STH-.0857*CTH
YA=YB+(.20*SIGN-.05)*CTH-.0857*STH
N=N+1
DO I=1,N
CALL NUMBER(XA,YA,.1,ABSV,THETA,3)
ABSV=ABSV-ADY
XA=XA-CTH
YA=YA-STH
END DO
TNC=NAC+7
XA=X+(SIZE/2.-.06*TNC)*CTH-(-.07+SIGN*.36)*STH
YA=Y+(SIZE/2.-.06*TNC)*STH+(-.07+SIGN*.36)*CTH
CALL SYMBOL(XA,YA,.12,CHREXP,THETA)
XA=XA+((TNC-6.)*.12)*CTH
YA=YA+((TNC-6.)*.12)*STH
IF (EXP .NE. 0) THEN
CALL SYMBOL(XA,YA,.12,'(*10 )',THETA)
XA=XA+.48*CTH-.07*STH
YA=YA+.48*STH+.07*CTH
CALL NUMBER(XA,YA,.1,EXP,THETA,-1)
END IF
RETURN
END
SUBROUTINE AXIS (X,Y,BCD,NC,SIZE,THETA,YMIN,DY)
C ARGS:
C X,Y STARTING POINT OF AXIS, IN INCHES, WHERE THE LOWER LEFT CORNER
C OF THE PAGE IS (0,0)
C BCD TEXT LABEL FOR THE AXIS
C NC NUMBER OF CHARACTERS IN BCD
C SIZE LENGTH OF AXIS, INCHES
C THETA ANGLE AT WHICH AXIS IS PLOTTED (0=HORIZONTAL, 90=VERTICAL)
C XMIN X VALUE AT LEFT EDGE OF AXIS
C DX X CHANGE IN 1 INCH
DIMENSION BCD(2)
SIGN = 1.
IF (NC .LT. 0) SIGN = -1.
NAC=IABS(NC)
N=SIZE+.5
CTH=COSD(THETA)
STH=SIND(THETA)
TN=N
XB=X
YB=Y
XA=X-.1*SIGN*STH
YA=Y+.1*SIGN*CTH
CALL PLOT(XA,YA,3)
DO I=1,N ![3210]
CALL PLOT(XB,YB,2)
XC=XB+CTH
YC=YB+STH
CALL PLOT(XC,YC,2)
XA=XA+CTH
YA=YA+STH
CALL PLOT(XA,YA,2)
XB=XC
YB=YC
END DO ![3210]
EXP=0
NT=INT(ALOG10(DY)+.001)
IF (NT .LT. -1 .OR. NT .GT. 1) EXP = NT
ADY=DY*10.**(-EXP)
ABSV=YMIN*10.**(-EXP)+TN*ADY
XA=XB-(.20*SIGN-.05)*STH-.0857*CTH
YA=YB+(.20*SIGN-.05)*CTH-.0857*STH
N=N+1
DO I=1,N ![3210]
CALL NUMBER(XA,YA,.1,ABSV,THETA,3)
ABSV=ABSV-ADY
XA=XA-CTH
YA=YA-STH
END DO ![3210]
TNC=NAC+7
XA=X+(SIZE/2.-.06*TNC)*CTH-(-.07+SIGN*.36)*STH
YA=Y+(SIZE/2.-.06*TNC)*STH+(-.07+SIGN*.36)*CTH
CALL SYMBOL(XA,YA,.12,BCD,THETA,NAC)
XA=XA+((TNC-6.)*.12)*CTH
YA=YA+((TNC-6.)*.12)*STH
IF (EXP .NE. 0) THEN ![3210]
CALL SYMBOL(XA,YA,.12,'(*10 )',THETA,7)
XA=XA+.48*CTH-.07*STH
YA=YA+.48*STH+.07*CTH
CALL NUMBER(XA,YA,.1,EXP,THETA,-1)
END IF ![3210]
RETURN
END
SUBROUTINE LINE (X,Y,N,K)
DIMENSION X(1),Y(1)
I3=3
DO I=1,N*K,K ![3210]
CALL PLOT(X(I),Y(I),I3)
I3=2
END DO ![3210]
END
SUBROUTINE SCALE (X, N, S, XMIN, DX)
C ARGS:
C X INPUT ARRAY, RETURNED SCALED FOR PLOTTING
C N NUMBER OF ELEMENTS IN X
C S AXIS LENGTH IN INCHES
C XMIN,DX RETURNED SET UP FOR AXIS ROUTINE
DIMENSION X(N)
XMIN = X(1); XMAX = X(1)
DO I = 2,N ![3210]
IF (X(I) .LT. XMIN) XMIN = X(I)
IF (X(I) .GT. XMAX) XMAX = X(I)
END DO ![3210]
IF (XMIN .NE. XMAX) GO TO 20
XMIN = 0; XMAX = 2 * XMAX
IF (XMAX .GT. 0) GO TO 20
XMIN = XMAX; XMAX = 0
IF (XMIN .NE. 0) GO TO 20
XMIN = -1; XMAX = 1
20 CONTINUE
T = (XMAX - XMIN) * 10 / S + XMIN
D = T - XMIN
E = ALOG10(D); IE = E
IF (E .LT. 0 .AND. E .NE. AINT(E)) IE = IE - 1
T = D / 10.**IE
22 IF (T .LE. 8) THEN ![3210]
IF (T .LE. 8) D = 8
IF (T .LE. 5) D = 5
IF (T .LE. 4) D = 4
IF (T .LE. 2) D = 2
IF (T .LE. 1) D = 1
ELSE ![3210]
IE = IE + 1; D = 1
END IF ![3210]
DX = 10.**(IE-1) * D
E = XMIN/DX
IF (E .LT. 0 .AND. E .NE. AINT(E)) E = E - 1
XMIN1 = DX * AINT(E)
XMAX1 = XMIN1 + S*DX
IF (XMIN1 .LE. XMIN .AND. XMAX1 .GE. XMAX) GO TO 40
T = D*2
IF (D .EQ. 4) T = 5
GO TO 22
40 XMIN = XMIN1
DO I = 1,N ![3210]
X(I) = (X(I) - XMIN) / DX
END DO ![3210]
END