Trailing-Edge
-
PDP-10 Archives
-
decuslib20-05
-
decus/20-0137/bmd/bmd05d.for
There is 1 other file named bmd05d.for in the archive. Click here to see a list.
C GENERAL PLOT WITH HISTOGRAM APRIL 1, 1966
C THIS IS A SIFTED VERSION OF BMD05D ORIGINALLY WRITTEN IN
C FORTRAN II. SOME MODIFICATIONS WERE MADE TO MAKE IT OPERABLE
C AND SLIGHTLY MORE EFFICIENT THAN THE SIFTED VERSION.
C IT WAS THEN CONVERTED TO 360 FORTRAN IV (H-LEVEL)
DIMENSION FG(120),X(5000),NX(15),HEAD(54),XMI(500),XMA(500),
1Z(15),NXX(15)
COMMON SYM(15),XY(51,34),X,HEAD,Z
C
EQUIVALENCE (FG,XMI)
DOUBLE PRECISION A123,B123,C123,D123,TODE,SAME
C
110 FORMAT ('1BMD05D GENERAL PLOT - INCLUDING HISTOGRAM',
* ' - REVISED FEBRUARY 17, 1969'/
241H HEALTH SCIENCES COMPUTING FACILITY, UCLA /)
DATA A123/6HFINISH/
DATA B123/6HPROBLM/
DATA C123/6HCRSVAR/
DATA D123/6HSELECT/
DATA YES/'YES'/
DATA BLANK/' '/
DATA NO/' NO'/
DATA RE / 'NO' /
NTAPE=5
CALL USAGEB('BMD05D')
5 READ(5,101) TODE,SAME,NV,NP,NG,NADD,REW,NTRAN,MTAPE,NCARD
204 FORMAT(45H0CONTROL CARDS INCORRECTLY ORDERED OR PUNCHED)
IF(TODE .NE. A123) GO TO 200
GO TO 201
800 PRINT 801, TODE
GO TO 202
802 PRINT 803
GO TO 202
804 PRINT 805
GO TO 202
806 PRINT 807
GO TO 202
808 PRINT 809
GO TO 202
810 PRINT 811
GO TO 202
812 PRINT 813
GO TO 202
814 PRINT 815, TODE
GO TO 202
816 PRINT 817
GO TO 202
818 PRINT 819
GO TO 202
820 PRINT 821, TODE
202 WRITE (6,204)
201 IF(NTAPE-5)308,308,307
307 REWIND NTAPE
308 CALL EXIT
200 IF(TODE .NE. B123) GO TO 800
203 IF (REW.NE.RE) CALL TPWD(MTAPE,NTAPE)
IF (REW.EQ.RE) GO TO 3050
GO TO 306
3050 IF (MTAPE.EQ.BLANK) NTAPE = 5
IF (MTAPE.NE.BLANK) NTAPE = MTAPE
306 IF(NV*(NV-501))309,802,802
309 IF((NP-1)*(NP-20001))205,804,804
205 IF((NV+NADD)*NP-5000) 206,206,806
206 IF(NCARD.GT.0.AND.NCARD.LE.10)GO TO 207
NCARD=1
WRITE(6,4000)
207 WRITE (6,110)
WRITE (6,210)SAME,NV,NP,NG,NADD,NTRAN,NCARD
IF (REW.EQ.RE) WRITE(6,1210) NO
IF (REW.NE.RE) WRITE(6,1210) YES
71 NTOT=NP*NV-NP
IF((NV+NADD)*(NV+NADD-501))1,808,808
1 NCARD=NCARD*18
READ (5,102)(FG(I),I=1,NCARD)
PRINT 1031,(FG(I),I=1,NCARD)
1031 FORMAT ('0',' VARIABLE FORMAT CARD(S)'/1X,18A4)
NCARD=NTOT+NP
DO 211 I=1,NCARD
211 X(I)=0.0
70 DO 3 I=1,NP
C ***** READ IN THE RAW DATA AND TRANSPOSE THE MATRIX
READ (NTAPE,FG)(XMA(J), J=1,NV)
DO 3 J=1,NV
K=NP*J-NP+I
3 X(K)=XMA(J)
IF(NTRAN) 810,22,21
21 CALL TRANS(NP,NV,NTRAN)
IF(NV) 812,812,22
22 NPV=NP
NV=NV+NADD
K=1
DO 63 I=1,NV
XMI(I)=99999999.0
XMA(I)=-99999999.0
DO 64 J=K,NPV
XMI(I)= AMIN1(X(J),XMI(I))
64 XMA(I)= AMAX1(X(J),XMA(I))
K=K+NP
63 NPV=NPV+NP
DO 50 JJ=1,NG
READ (5,104)TODE,NH,NL,NC,NY,FN
IF(TODE .NE. D123) GO TO 814
209 IF(NH*(NH-3))215,816,816
215 NH=NH*18
READ (5,102)(HEAD(I),I=1,NH)
IF(NC) 818,20,8
8 NNC=(NC+6)/7
IF(NNC-2)9,9,818
9 NG2=0
DO 150 I=1,NNC
NG1=NG2+1
NG2=NG2+7
READ (5,105)TODE,(NX(J),SYM(J),J=NG1,NG2)
IF(TODE .NE. C123) GO TO 820
150 CONTINUE
XMAX=-99999999.0
XMIN=99999999.0
IF(NC-1)20,11,12
11 J=NX(1)
XMAX=XMA(J)
XMIN=XMI(J)
GO TO 14
12 DO 13 I=1,NC
J=NX(I)
XMAX= AMAX1(XMAX,XMA(J))
13 XMIN= AMIN1(XMIN,XMI(J))
14 NPV=0
10 DO 65 I=1,NC
65 NXX(I)=NX(I)*NP-NP
NYY=NY*NP-NP
IF(NL)23,23,24
24 WRITE (6,110)
IF(9-NC)242,249,249
242 WRITE (6,108)NY,(NX(I),I=1,9)
WRITE (6,112)
WRITE (6,111)(NX(I),I=10,NC)
GO TO 250
249 WRITE (6,108)NY,(NX(I),I=1,NC)
250 WRITE (6,112)
DO 26 I=1,NP
MY=NYY+I
Y=X(MY)
DO 25 J=1,NC
MX=NXX(J)+I
25 Z(J)=X(MX)
26 WRITE (6,106)Y,(Z(K),K=1,NC)
23 WRITE (6,110)
WRITE (6,103)(HEAD(I),I=1,NH)
WRITE (6,4444) NY, (NX(ICK),SYM(ICK),ICK=1,NC)
4444 FORMAT (2X,'PLOT OF VARIABLE',I3, ' (VERTICAL AXIS) VERSUS VARIAB
*LE(S)', I3,' (SYMBOL=', A1,'),', 7(I3,'(',A1,'),') /
* 56X, 6(I3, '(',A1, '),'))
NNP=FN
YMAX=XMA(NY)
YMIN=XMI(NY)
DO 16 I=1,NP
ASSIGN 155 TO ISKIP
MY=NYY+I
Y=X(MY)
DO 15 J=1,NC
MX=NXX(J)+I
15 Z(J)=X(MX)
GO TO ISKIP,(155,157)
155 CALL PLOTR(Y,YMIN,YMAX,Z,SYM,XMIN,XMAX,NC,NNP)
ASSIGN 157 TO ISKIP
GO TO 16
157 CALL PLOTR(Y,YMIN,YMAX,Z,SYM,XMIN,XMAX,NC,NNP)
16 CONTINUE
IF(NNP)31,32,32
31 NC=-1
GO TO 33
32 NC=0
33 CALL PLOTR(Y,YMIN,YMAX,Z,SYM,XMIN,XMAX,NC,NNP)
GO TO 50
20 NYT=NY*NP
NYY=NYT-NP+1
IF(NL)29,29,28
28 WRITE (6,110)
NNC=(NP+9)/10
NG2=NYY-1
WRITE (6,107)NY
DO 285 I=1,NNC
NG1=NG2+1
NG2=NG2+10
IF(NYT-NG2)283,284,284
283 NG2=NYT
284 WRITE (6,125)(X(J),J=NG1,NG2)
285 CONTINUE
29 WRITE (6,110)
WRITE (6,103)(HEAD(I),I=1,NH)
WRITE (6,707) NY
707 FORMAT (' HISTOGRAM OF VARIABLE ', I3)
XMAX=XMA(NY)
XMIN=XMI(NY)-.0000005
IF((XMAX-XMIN)/FN-34.0)34,34,35
35 FN=(XMAX-XMIN)/34.0
WRITE (6,109)FN
34 CALL HIST(NYY,NYT,XMIN,XMAX,FN,NP)
50 CONTINUE
GO TO 5
C
101 FORMAT(2A6,I3,I5,I3,I4,36X,A2,I3,2I2)
102 FORMAT(18A4)
103 FORMAT(24X,18A4)
104 FORMAT(A6,2I1,I2,I3,F11.0)
105 FORMAT(A6,7(I3,A4,2X))
106 FORMAT(1H 10(F10.4,1X))
107 FORMAT(1H 23H HISTOGRAM OF VARIABLE I3//)
108 FORMAT(14H BASE VARIABLE,38X, 16H CROSS VARIABLES/6X,10(I3,8X))
109 FORMAT(1H ,54H THE VALUE GIVEN FOR THE INTERVAL WIDTH IS TOO SMALL
1. /13H A NEW VALUE,F11.4,22H,HAS BEEN SUBSTITUTED.//)
111 FORMAT(5X,5(I3,8X))
112 FORMAT(1H )
125 FORMAT(1H 10F11.4)
210 FORMAT(14H PROBLEM CODE ,3(2H. ),1X,A6/18H NO. OF VARIABLES ,
13(2H. ),I3/14H NO. OF CASES ,4(2H. ),I5/24H NO. OF SELECTION CARDS
2 ,I3/24H NO.OF VARIABLES ADDED ,I3/22H NO. OF TRNGEN CARDS ,2H. ,
3I3/22H NO. OF FORMAT CARDS ,2H. ,I3)
1210 FORMAT (' REWIND INPUT TAPE .... ',A3)
801 FORMAT(' PROGRAM EXPECTED PROBLM OR FINISH CARD INSTEAD READ THE
1 FOLLOWING'/1X,A6)
803 FORMAT(' NUMBER OF VARIABLES INCORRECTLY SPECIFIED')
805 FORMAT(' NUMBER OF CASES INCORRECTLY SPECIFIED')
807 FORMAT(' TOTAL DATA INPUT CANNOT EXCEED 20,000')
809 FORMAT(' NUMBER OF VARIABLES AFTER TRANSGENERATION CANNOT EXCEED 5
100')
811 FORMAT(' PROBLM CARD ERROR'/' NUMBER OF TRANSGENERATION CARDS IS N
1EGATIVE')
813 FORMAT(' NUMBER OF VARIABLES AFTER TRANSGENERATION HAS BECOME LESS
1 THAN OR EQUAL TO ZERO')
815 FORMAT(' PROGRAM EXPECTED SELECT CARD INSTEAD READ THE FOLLOWING'/
11X,A6)
817 FORMAT(' NUMBER OF HEADING CARDS INCORRECTLY SPECIFIED')
819 FORMAT(' NUMBER OF CROSS VARIABLES TO APPEAR ON GRAPH IS INCORRECT
LY SPECIFIED'/' ERROR ON SELECT CARD')
821 FORMAT(' PROGRAM EXPECTED CRSVAR CARD INSTEAD READ THE FOLLOWING'/
11X,A6)
4000 FORMAT(1H023X71HNUMBER OF VARIABLE FORMAT CARDS INCORRECTLY SPECIF
1IED, ASSUMED TO BE 1.)
C
END
C SUBROUTINE HIST FOR BMD05D APRIL 1, 1966
SUBROUTINE HIST(NYY,NYT,XMIN,XMAX,SYMB,NP)
COMMON SYM(15),XY(51,34),X,HEAD,Z
DIMENSION X(5000),K000FX(35),XM(3),D(3),Z(15),BONE(3),CLAB(36)
C
DATA TEMP1/3H /
DATA TEMP2/1H+/
DATA TEMP3/1H./
DATA TOPPER/3H---/,FILLER/3H111/
23 FORMAT(1H F5.1,1X,A1,34A3,A1,1X,F5.1)
101 FORMAT (5X,17(F5.1,1X),F5.1/8X,17(F5.1,1X)/8X,17('+++...'))
102 FORMAT(8X,17('+++...')/5X,17(F5.1,1X),F5.1/8X,17(F5.1,1X))
4000 FORMAT( 8H MIN = ,F12.6,80X,7H MAX = ,F12.6)
M=1
WRITE (6,4000)XMIN,XMAX
DO 50 I=1,35
50 K000FX(I)=0
DO 100 K=1,34
DO 100 J=1,50
100 XY(J,K) = TEMP1
MINH=XMIN/SYMB
TXMIN=XMIN/SYMB-1.0
CLAB(1)=XMIN
DO 16 I=2,35
16 CLAB(I)=CLAB(I-1)+SYMB
WRITE (6,101) (CLAB(I),I=1,35,2),(CLAB(J),J=2,34,2)
DO 1 I=NYY,NYT
K=X(I)/SYMB-TXMIN
K000FX(K)=K000FX(K)+1
IF(K000FX(M)-K000FX(K))8,1,1
8 M=K
1 CONTINUE
YMAX=K000FX(M)
SC=50.0
32 IF(YMAX-SC)30,30,31
31 SC=SC+50.0
GO TO 32
C
30 SC = 50.0 / SC
15 DO 6 I=1,34
XL = K000FX(I)
L = XL * SC + 0.5
IF(L) 5,6,5
5 XY(L,I) = TOPPER
L=L-1
IF(L)11,6,11
11 DO 10 K=1,L
10 XY(K,I) = FILLER
6 CONTINUE
DO 7 K=1,50
L=51-K
R=L
R=R/SC
I=MOD(K,5)
IF(I-1)2,3,2
3 W = TEMP2
GO TO 7
2 W = TEMP3
7 WRITE (6,23)R,W,(XY(L,M),M=1,34),W,R
WRITE (6,102) (CLAB(I),I=1,35,2),(CLAB(J),J=2,34,2)
RETURN
END
SUBROUTINE TPWD(NT1,NT2)
C SUBROUTINE TPWD FOR BMD05D APRIL 1, 1966
IF(NT1)40,10,12
10 NT1=5
12 IF(NT1-NT2)14,19,14
14 IF(NT2.EQ.5)GO TO 18
17 REWIND NT2
19 IF(NT1-5)18,24,18
18 IF(NT1-6)22,40,22
22 REWIND NT1
24 NT2=NT1
28 RETURN
40 WRITE (6,49)
STOP
49 FORMAT(25H ERROR ON TAPE ASSIGNMENT)
END
SUBROUTINE TRANS(N,NJ,NTR)
C SUBROUTINE TRANS FOR BMD05D APRIL 1, 1966
C
COMMON DUM(15),UJUNK(51,34),DATA(5000)
DOUBLE PRECISION C123,TODE
ASN(XX)=ATAN(XX/SQRT(1.0-XX**2))
C
DATA C123/6HTRNGEN/
C
ON=N+1
MARY=0
WRITE (6,1403)
WRITE (6,1400)
IERROR=0
DO 1000 I=1,NTR
READ (5,900)TODE,NE,NC,NV,CO
IF(TODE .EQ. C123) GO TO 6
300 NJ=-NJ
RETURN
6 WRITE (6,1402)I,NE,NC,NV,CO
MA=N*NE-N
MB=N*NV-N+1
MC=MB+N-1
IF(NC*(15-NC))1500,1500,2
2 IF(NC-11) 4, 3, 3
3 K=CO
MD=N*K-N
4 DO 210 J=MB,MC
D1=DATA(J)
MA=MA+1
MD=MD+1
5 CONTINUE
GO TO (10,20,30,40,50,60,70,80,90,100,110,120,130,140),NC
10 IF(D1)99,32,8
8 D2=SQRT(D1)
GO TO 200
20 IF(D1)99,11,12
11 D2=1.0
GO TO 200
12 D2=SQRT(D1)+SQRT(D1+1.0)
GO TO 200
30 IF(D1)99,99,14
14 D2=ALOG10(D1)
GO TO 200
40 D2=EXP(D1)
GO TO 200
50 IF(D1)99,32,17
17 IF(D1-1.0)18,19,99
19 D2=3.14159265/2.0
GO TO 200
18 D2=ASN(SQRT(D1))
GO TO 200
60 A=D1/ON
B=A+1.0/ON
IF(A)99,23,24
23 IF(B)99,32,27
27 D2=ASN(SQRT(B))
GO TO 200
24 IF(B)99,28,29
28 D2=ASN(SQRT(A))
GO TO 200
29 A=SQRT(A)
B=SQRT(B)
D2=ASN(A)+ASN(B)
GO TO 200
70 IF(D1)31,99,31
31 D2=1.0/D1
GO TO 200
80 D2=D1+CO
GO TO 200
90 D2=D1*CO
GO TO 200
100 IF(D1)33,32,33
32 D2=0.0
GO TO 200
33 D2=D1**CO
GO TO 200
110 D2=D1+DATA(MD)
GO TO 200
120 D2=D1-DATA(MD)
GO TO 200
130 D2=D1*DATA(MD)
GO TO 200
140 IF(DATA(MD))157,99,157
157 D2=D1/DATA(MD)
GO TO 200
99 IF(MARY)43,44,44
44 MARY=-999
IERROR=-999
WRITE (6,1404)I
43 WRITE (6,1405)J
GO TO 210
200 DATA(MA)=D2
210 CONTINUE
MARY=0
1000 CONTINUE
IF(IERROR)42,1111,1111
42 WRITE (6,1401)
1111 RETURN
C
900 FORMAT(A6,I3,I2,I3,F6.0)
1500 WRITE (6,1406)
GO TO 1000
C
1400 FORMAT(46H0CARD NEW TRANS ORIG. ORIG. VAR(B)/45H NO.
1VARIABLE CODE VAR(A) OR CONSTANT)
1401 FORMAT(78H VALUES OF VARIABLES OF WHICH AN ERROR WAS FOUND DURING
1TRANS-GENERATION WILL /77H STILL BE INCLUDED IN THE GRAPHS. HOWEVE
2R, THESE GRAPHS MAY BE MEANINGLESS /54H SINCE SOME VALUES WILL B
3E TRANSFORMED AND OTHERS NOT.)
1402 FORMAT(2H I2,I8,2I9,4X,F10.5)
1403 FORMAT(1H06X,23HTRANS GENERATOR CARD(S))
1404 FORMAT(55H0THE INSTRUCTIONS INDICATED ON TRANS GENERATOR CARD NO.I
12,1X,3HRE-/60H SULTED IN THE VIOLATION OF A RESTRICTION FOR THIS T
2RANSFOR-/59H MATION. THE VIOLATION OCCURRED FOR THE ITEMS LISTED B
3ELOW.)
1405 FORMAT(10H ITEM NO. I5)
1406 FORMAT(107H0TRANSGENERATION CODE ON CARD LISTED ABOVE IS INCORRECT
1. PROGRAM WILL PROCEED WITHOUT THIS TRANSGENERATION.)
C
END
SUBROUTINE PLOTR(X,ZMIN,ZMAX,Y,SYM,WMIN,WMAX,NC,NP)
C SUBROUTINE PLOTR (IBM 360) AUGUST 13, 1966
C
C 'PLOTR' IS A UTILITY SUBPROGRAM FOR THE BMD... PROGRAMS WHICH
C PLOTS EITHER SINGLE-LINE OR WHOLE-PAGE GRAPHS AND SETS UP
C APPROPRIATE SCALING. THE CALLING PARAMETERS ARE AS FOLLOWS -
C
C X - THE VALUE OF THE INDEPENDENT VARIABLE
C ZMIN - THE MINIMUM VALUE OF X FOR THIS PLOT
C ZMAX - THE MAXIMUM VALUE OF X FOR THIS PLOT
C Y - THE ARRAY CONTAINING THE VALUES OF UP TO 15 DEPENDENT VAR.'S
C SYM - THE ARRAY CONTAINING THE SYMBOLS TO BE PLOTTED
C WMIN - THE MINIMUM VALUE OF ALL Y'S FOR THIS PLOT
C WMAX - THE MAXIMUM VALUE OF ALL Y'S FOR THIS PLOT
C NC - THE NUMBER OF DEPENDENT VARIABLES
C NC=-1 CLOSES A SINGLE-LINE PLOT
C NC= 0 PRINTS AND CLOSES A WHOLE-PAGE PLOT
C NP - THE CONTROL VARIABLE
C NP=-1 PRINTS A SINGLE LINE
C NP=0 OR NP=1 SETS UP A WHOLE-PAGE PLOT
C
C THE PLOTTING ROUTINE MUST BE CALLED ONCE FOR EACH VALUE OF THE
C INDEPENDENT VARIABLE THAT IS TO BE PLOTTED NO MATTER WHETHER IN
C THE SINGLE-LINE OR WHOLE-PAGE MODE
C
DIMENSION Y(15),CLAB(12),GF(10),FMT(12),XY(51,101),SYM(15)
INTEGER XY,BLANKS
DATA TC,TP,BLANKS/1H.,1H+,1H /
DATA GF/ 4H 1X,,4H 2X,,4H 3X,,4H 4X,,4H 5X,,4H 6X,,
14H 7X,,4H 8X,,4H 9X,,4H 10X/
DATA FMT/'(17X',' ','5(F1','2.3,','8X)/','7X, ',' ','4(F1','2.3,',
1'8X),','F12.','3) '/
C
100 FORMAT(1H 6X5(F12.3,8X),F12.3/17X,5(F12.3,8X))
101 FORMAT(1H F12.3,1X,103A1,F12.3)
102 FORMAT (1H 13X,103A1)
1000 FORMAT(1H 14X,101A1)
1001 FORMAT(15X,20(5H+....),1H+)
C
DATA NCC/2/
C 'NCC' ON THE INITIAL ENTRY TO PLOTR IS NON-ZERO BECAUSE OF THE DATA
C STATEMENT ABOVE.
C
C 'NCC' IS 0 WHILE A PLOT IS BEING MADE. IT IS 1 OR 2 AT OTHER TIMES
C
IF(NCC) 50,48,50
C
C THE VARIABLE 'KL' CONTROLS THE FUNCTIONING OF THE OPENING AND
C CLOSING SECTIONS OF PLOTR. KL=0 INDICATES OPENING OF THE GRAPH,
C KL=1 INDICATES CLOSING.
C
50 KL=0
CALL SCALE(WMIN,WMAX,100.0,JY,YMIN,YMAX,YIJ)
YR=YMAX-YMIN
230 J=JY
IF(J*(J-10))204,201,201
C
C THE FOLLOWING SECTION OPENS OR CLOSES A PLOT IN FIXED FORMAT
C UNDER CONTROL OF KL
C
201 IF(KL)220,220,231
C
231 WRITE (6,1001)
IF(KL)250,250,220
C
220 CLAB(1)= YMIN
DO 222 I=2,11
222 CLAB(I)=CLAB(I-1)+YIJ
WRITE (6,100)(CLAB(I),I=1,11,2),(CLAB(J),J=2,10,2)
IF(KL)231,231,14
C
C THE FOLLOWING SECTION OPENS OR CLOSES A PLOT IN A VARIABLE
C FORMAT UNDER CONTROL OF KL AND JY FROM 'SCALE'
C
204 IF(J-5)205,221,207
207 J=J-5
205 JYT=5-J
221 CONTINUE
226 FMT(2)=GF(JY)
IF (KL) 225,225,227
C
225 FMT(7)=GF(JY)
TT=JY
TT=TT*YIJ/10.0
CLAB(1)= YMIN+TT
DO 223 I=2,10
223 CLAB(I)=CLAB(I-1) +YIJ
WRITE (6,FMT)(CLAB(I),I=2,10,2),(CLAB(I),I=1,9 ,2)
IF(KL)227,227,14
C
227 IF(JY-5)208,209,208
208 WRITE(6,1000)(TC,I=1,J ),(TP,(TC,I=1,4),K=1,19),TP,(TC,I=1,JYT)
IF (KL) 250,250,225
C
209 WRITE (6,1001)
IF (KL) 250,250,225
C
250 CONTINUE
NCC=0
IC=0
IF(NP)80,11,11
C
C THIS SECTION PREPARES FOR A FULL PAGE PLOT BY FILLING IN XY WITH
C BLANKS AND SETTING UP SCALING FOR THE INDEPENDENT VARIABLE 'X'
C
11 DO 1 I=1,51
DO 1 J=1,101
1 XY(I,J)=BLANKS
CALL SCALE (ZMIN,ZMAX,50.0,JX,XMIN,XMAX,XIJ)
XR=XMAX-XMIN
GO TO 48
C
C
C ENTRY TO PLOTS CAN BE USED ONLY AFTER THE CALLING PARAMETERS
C HAVE BEEN TRANSFERRED BY A CALL ON PLOTR. THE CALL ON PLOTS
C IS IDENTICAL WITH ENTRY TO PLOTR BUT IT ALLOWS THE PROGRAMMER TO
C CALL THE PLOTTING ROUTINE WITHOUT HAVING TO INCLUDE THE PARAMETERS
C
48 IF(NC)52,13,49
49 IF(NP)80,10,10
C THE FOLLOWING SECTION SETS UP A FULL PAGE BUT DOES NO PRINTING.
C THIS SECTION IS REACHED BY SPECIFYING NC POSITIVE AND NP POSITIVE.
C
10 DO 9 N=1,NC
SYMB=SYM(N)
XDIFFR=XMAX-X
IF(XDIFFR)105,106,106
105 XDIFFR=0.0
106 YDIFFR=YMAX-Y(N)
IF(YDIFFR)107,108,108
107 YDIFFR=0.0
108 L=51.0-(50.0*XDIFFR)/XR+.5
K=101.0-(100.0*YDIFFR)/YR+.5
CALL FORM2(SYMB,XY(L,K))
9 CONTINUE
GO TO 15
C
C THE FOLLOWING SECTION CONSTRUCTS AND PLOTS ONE LINE OF A MULTILINE
C GRAPH. LOCATION ALONG THE AXIS OF THE PAPER IS PRINTED AT EVERY
C STEP. THIS SECTION IS ACCESSIBLE BY SPECIFYING NC POSITIVE AND
C NP NEGATIVE.
C
80 DO 86 I=1,101
86 XY(1,I)=BLANKS
L=1
DO 95 N=1,NC
SYMB=SYM(N)
YDIFFR=YMAX-Y(N)
IF(YDIFFR)860,865,865
860 YDIFFR=0.0
865 K=101.0-(100.0*YDIFFR)/YR+.5
95 CALL FORM2(SYMB,XY(L,K))
IF(MOD(IC,5))97,96,97
96 W=TP
GO TO 98
97 W=TC
98 WRITE (6,101)X,W,(XY(1,N),N=1,101),W,X
IC=IC+1
GO TO 15
C
C THIS SECTION PLOTS OUT THE PREVIOUSLY PREPARED WHOLE PAGE GRAPH.
C IT PRINTS LOCATION ALONG THE PAPER'S AXIS EVERY FIFTH STEP. THIS
C SECTION IS ACCESSED BY SPECIFYING NC=0.
C
13 M=6-JX
LL=50+M
T=JX
IF(5-JX)131,131,135
131 T=0.0
135 RLAB=XMAX-(T*XIJ)/5.0
W=TC
K=52
DO 31 L=M,LL
K=K-1
I=MOD(L,5)
IF(I-1)2,3,2
3 W=TP
WRITE (6,101)RLAB,W,(XY(K,N),N=1,101),W,RLAB
RLAB=RLAB-XIJ
W=TC
GO TO 31
2 WRITE (6,102)W,(XY(K,N),N=1,101),W
31 CONTINUE
C
52 KL=1
GO TO 230
C
14 NCC=1
15 RETURN
END
SUBROUTINE SCALE(YMIN,YMAX,YINT,JY,TYMIN,TYMAX,YIJ)
C SUBROUTINE SCALE FOR PLOTR JUNE 21, 1966
C
C SUBROUTINE 'SCALE' CALCULATES THE SCALING FOR 'PLOTR'
C
DIMENSION C(10)
DATA C /1.0,1.5,2.0,3.0,4.0,5.0,7.5,10.0,15.0,20.0/
DATA TEST / 0.76293945E-05/
50 YR=YMAX-YMIN
TT=YR/YINT
J = ALOG10(TT)+TEST
E=10.0**J
TT=TT/E
I=0
IF(TT-1.0+TEST)205,201,201
205 TT=TT*10.0
E=E/10.0
201 I=I+1
IF(9-I)1,2,2
1 E=E*10.0
I=1
2 IF(TT-C(I))233,202,201
233 YIJ=C(I)*E
GO TO 203
202 Y=YMIN/C(I)
J=Y
T=J
IF(0.0001-ABS(T-Y))204,233,233
204 YIJ=C(I+1)*E
203 X=((YMAX+YMIN)/YIJ-YINT )/2.0+.00001
K=X
IF(K)235,240,240
235 Y=K
IF(X-Y)236,240,236
236 K=K-1
240 TYMIN=K
TYMIN=YIJ*TYMIN
TYMAX=TYMIN+YINT*YIJ
IF (YMAX-TYMAX-TEST)11,11,201
11 YIJJ=C(I)*E
XT=((YMAX+YMIN)/YIJJ-YINT)/2.0+.00001
KT=XT
IF (KT) 1235,1240,1240
1235 YT=KT
IF (XT.NE.YT) KT=KT-1
1240 TYMINT=KT
TYMINT=YIJJ*TYMINT
TYMAXT=TYMINT+YINT*YIJJ
IF(YMAX-TYMAXT.GT.TEST)GO TO 10
TYMIN=TYMINT
TYMAX=TYMAXT
YIJ=YIJJ
K=KT
10 TT=YINT/10.0
JY=TT+.000001
YIJ=YINT*(YIJ/10.0)
J=TYMIN/YIJ
IF(K)242,241,241
242 J=J-1
241 J=J*JY+JY-K
JY=J
RETURN
END
SUBROUTINE FORM2(SYMB,XY)
DIMENSION TEST(18)
DATA BLANK/' '/,TEST/'2 ','3 ','4 ','5 ','6 ',
1'7 ','8 ','9 ','A ','B ','C ','D ','E ','F ','G ','H ','I ','/ '/
IF(XY.EQ.BLANK)GO TO 50
DO 30 I=1,17
IF(XY.NE.TEST(I))GO TO 30
C PUT IN NEXT SYMBOL OF ARRAY FOR MULTIPLE POINTS
XY=TEST(I+1)
GO TO 100
30 CONTINUE
IF(XY.EQ.TEST(18))GO TO 100
C IF OTHER THAN CHARACTERS IN ARRAY TEST PUT IN CHARACTER 2.
XY=TEST(1)
GO TO 100
C IF BLANK, PUT IN SYMBOL
50 XY=SYMB
100 RETURN
END