Trailing-Edge
-
PDP-10 Archives
-
decus_20tap5_198111
-
decus/20-0137/bmd/bmd02d.for
There is 1 other file named bmd02d.for in the archive. Click here to see a list.
C CORRELATION WITH TRANSGENERATION APRIL 20, 1966
C THIS IS A SIFTED VERSION OF BMD02D ORIGINALLY WRITTEN IN
C FORTRAN II WITH SOME MODIFICATIONS TO MAKE IT OPERABLE.
C IT WAS THEN CONVERTED TO 360 FORTRAN IV (H-LEVEL)
COMMON CON(135),DATA(135),NEW(150),JUMP(150),NA(150),BN(150)
1,NSUB(36),REL(36),AMIN(135),OP(36),INDEX(36),SX(135),SX2(135)
2,AMAX(135),C(255),FMT(180),SXY(50,50)
DIMENSION Q(135)
EQUIVALENCE(Q,SX2)
DOUBLE PRECISION A123,B123,C123,D123,TODE, CODE,CON
C
ICDCNT = 0
100 FORMAT ('1BMD02D CORRELATION WITH TRANSGENERATION',
1' - REVISED MAY 5, 1969'/
240H HEALTH SCIENCES COMPUTING FACILITY,UCLA//
314H PROBLEM CODE A6,/
421H NUMBER OF VARIABLES I3,/
517H NUMBER OF CASES I5,//)
C
DATA PC7/2HNO/
DATA A123/6HFINISH/
DATA C123/6HTRNGEN/
DATA B123/6HPROBLM/
DATA D123/6HPLOTSL/
DATA ASK/2H**/
DATA A1/1HV/
NTAPE=5
IT1=1
CALL USAGEB('BMD02D')
998 READ (5,102)TODE,CODE,NVAR,NSAM,NSEL,NADD,NBOOL,PQ1,PQ2,PQ3,NTG,MT
1APE,KVR
GO TO 996
999 REWIND IT1
WRITE (IT1,1000) (DATA(K), K=1,14)
REWIND IT1
READ (IT1,102) TODE,CODE,NVAR,NSAM,NSEL,NADD,NBOOL,PQ1,PQ2,PQ3,
1NTG,MTAPE,KVR
996 REWIND IT1
IF(TODE .EQ. A123) GO TO 701
700 IF(TODE .EQ. B123) GO TO 703
TYPE 5001, TODE,CODE
5001 FORMAT(' PROGRAM EXPECTED PROBLM OR FINISH CARD INSTEAD READ THE
1 FOLLOWING'/1X,2A6)
702 WRITE (6,704)
701 IF(NTAPE.LE.5)GO TO 742
741 REWIND NTAPE
742 CALL EXIT
STOP
6000 TYPE 6001
6001 FORMAT(' DATA INPUT CANNOT BE FROM LOGICAL TAPES 1,5, OR 6.')
GO TO 702
6002 TYPE 6003
6003 FORMAT(' NUMBER OF VARIABLES CANNOT EXCEED 135')
GO TO 702
6004 TYPE 6005
6005 FORMAT(' NUMBER OF CASES MUST BE GREATER THAN 1.')
GO TO 702
6006 TYPE 6007
6007 FORMAT(' NUMBER OF VARIABLES AFTER TRANSGENERATION CANNOT EXCEED 1
135')
GO TO 702
6008 TYPE 6009
6009 FORMAT(' NUMBER OF CASE SELECTION CARDS MUST BE 9 OR LESS')
GO TO 702
8000 TYPE 8001
8001 FORMAT(' NUMBER OF TRANSGENERATION CARDS CANNOT EXCEED 150')
GO TO 702
8002 TYPE 8003, TODE
8003 FORMAT(' PROGRAM EXPECTED TRNGEN CARD INSTEAD READ THE FOLLOWING'/
11X,A6)
GO TO 702
6010 TYPE 6011
6011 FORMAT(' NUMBER OF PLOT SELECTION CARDS INCORRECTLY SPECIFIED')
GO TO 702
703 IF(MTAPE.EQ.IT1)GO TO 6000
773 CALL TPWD(MTAPE,NTAPE,PQ3)
IF((NVAR-1)*(136-NVAR))6002,6002,1008
1008 IF(NSAM.LE.1)GO TO 6004
1002 IF((NVAR+NADD-1)*(136-NVAR-NADD))6006,6006,705
705 IF(IABS(NBOOL)-9) 706,706,6008
706 IF(KVR.GT.0.AND.KVR.LE.10)GO TO 3
KVR=1
WRITE (6,4002)
3 WRITE (6,100)CODE,NVAR,NSAM
IF(NTG.GT.150)GO TO 8000
1003 IF(NTG)8000,401,402
402 WRITE (6,403)
WRITE (6,404)
DO 707 I=1,NTG
READ (5,406)TODE,NEW(I),JUMP(I),NA(I),BN(I)
IF(TODE .NE. C123) GO TO 8002
405 WRITE (6,447)I,NEW(I),JUMP(I),NA(I),BN(I)
IF(JUMP(I)-41)2000,707,2005
2000 IF(JUMP(I)*(17-JUMP(I)))2005,2005,707
2005 WRITE (6,4001)
JUMP(I)=99
707 CONTINUE
401 IF(NBOOL) 411,412,411
411 KK=IABS(NBOOL)*4
WRITE (6,413)
READ (5,414)(NSUB(I),REL(I),CON(I),OP(I),I=1,KK)
WRITE (6,415)
DO 416 I=1,KK
KK1=I
WRITE (6,417)NSUB(I),REL(I),CON(I),OP(I)
IF(ASK .EQ. OP(I)) GO TO 1234
416 CONTINUE
1234 DO 438 I=1,KK1
438 INDEX(I)=0
DO 437 I=1,KK1
REWIND IT1
WRITE (IT1,439) CON(I)
REWIND IT1
READ (IT1,709) PUS
REWIND IT1
IF(A1 .NE. PUS) GO TO 710
711 READ (IT1,712) CON(I)
712 FORMAT(2X,F3.0)
INDEX(I)=1
GO TO 437
710 READ (IT1,713) CON(I)
713 FORMAT(F6.0)
437 CONTINUE
REWIND IT1
412 IF(NTG*NBOOL) 423,418,425
418 IF(NTG)8000,419,424
419 IF(NBOOL)422,421,422
421 JESUS=1
GO TO 7
422 JESUS=2
NOB=0
GO TO 7
424 JESUS=3
GO TO 7
425 JESUS=4
NOB=0
GO TO 7
423 JESUS=5
NOB=0
7 REWIND 20
M=0
LCASE=0
LEFT=NSAM
NVAR1=NVAR+NADD
DO 4 I=1,NVAR1
AMIN(I)=10.0**10
AMAX(I)=-AMIN(I)
SX(I)=0.0
SX2(I)=0.0
DO 4 J=1,NVAR1
4 SXY(I,J)=0.0
KL=0
H=0.0
6 KVR=KVR*18
READ (5,103)(FMT(I),I=1,KVR)
TYPE 5000, (FMT(I), I=1,KVR)
5000 FORMAT(' VARIABLE FORMAT CARD(S)'/10(1X,18A4/))
C THE CODING USING THE MOD FUNCTION IS USED TO ALLOW THE TOTAL
C NUMBER OF CASES TO BE GREATER THAN 2**15 -1 (32767).
NSAM1=NSAM
77 NSAM2=MOD(NSAM1,32767)
IF(NSAM2.EQ.0)NSAM2=NSAM1
9876 FORMAT(2I10)
DO 600 II=1,NSAM2
READ (NTAPE,FMT)(DATA(I),I=1,NVAR)
GO TO (407,427,428,429,430),JESUS
427 CALL COOL(NTEST,KK1,A123,B123,D123,NTAPE)
GO TO (600,431,999,701),NTEST
431 NOB=NOB+1
GO TO 407
428 CALL TRNGEN(NVAR,NTG,NSAM,LEFT,LCASE,M,II)
IF(LCASE) 409,407,407
409 LCASE=0
GO TO 600
429 CALL TRNGEN(NVAR,NTG,NSAM,LEFT,LCASE,M,II)
IF(LCASE) 409,433,433
433 CALL COOL(NTEST,KK1,A123,B123,D123,NTAPE)
GO TO (600,431,999,701),NTEST
430 CALL COOL(NTEST,KK1,A123,B123,D123,NTAPE)
GO TO (600,435,999,701),NTEST
435 NOB=NOB+1
CALL TRNGEN(NVAR,NTG,NSAM,LEFT,LCASE,M,II)
IF(LCASE) 409,407,407
407 H=H+1.0
HH = 0.0
IF((H-1.0) .NE. 0.0) HH = H / (H-1.0)
DO 8 I=1,NVAR1
KL=KL+1
IF(KL-255)1004,1004,1005
1005 WRITE(20)(C(IJK),IJK=1,255)
5005 FORMAT(20A4)
KL=1
1004 C(KL)=DATA(I)
AMAX(I)=AMAX1(AMAX(I),DATA(I))
AMIN(I)=AMIN1(AMIN(I),DATA(I))
SX(I)=SX(I)+DATA(I)
Q(I)=DATA(I)
IF(H.NE.0.0)Q(I)=Q(I)-SX(I)/H
QQ=Q(I)*HH
DO 8 J=1,I
8 SXY(I,J)=SXY(I,J)+Q(J)*QQ
600 CONTINUE
NSAM1=NSAM1-NSAM2
IF(NSAM1.GT.0)GO TO 77
1011 DO 1012 I=1,NVAR1
SX2(I)=SXY(I,I)
DO 1012 J=1,I
1012 SXY(J,I)=SXY(I,J)
WRITE(20)(C(IJK),IJK=1,255)
GO TO (508,505,506,505,507),JESUS
505 NSAM=NOB
GO TO 508
506 NSAM=LEFT
GO TO 508
507 NSAM=NOB-(NSAM-LEFT)
508 NVAR=NVAR1
WRITE (6,502)NSAM
IF(NSAM)500,500,501
500 WRITE (6,503)
610 IF(NSEL)998,998,615
615 DO 620 I=1,NSEL
620 READ (5,112)TODE
GO TO 998
501 END FILE 20
REWIND 20
WRITE (6,104)
WRITE (6,105)(SX(I),I=1,NVAR)
WRITE (6,108)
FN=NSAM
DO 10 I=1,NVAR
10 DATA(I)=SX(I)/FN
WRITE (6,105)(DATA(I),I=1,NVAR)
IF(PQ1-PC7) 50,51,50
50 WRITE (6,106)
CALL PATTY(NVAR)
51 IF(1.0-FN) 305,350,350
305 WRITE (6,109)
DO 11 I=1,NVAR
DATA(I)=SX2(I)/(FN-1.0)
11 DATA(I)=SQRT(DATA(I))
WRITE (6,105)(DATA(I),I=1,NVAR)
DO 12 I=1,NVAR
DO 12 J=1,NVAR
12 SXY(I,J)=SXY(I,J)/(FN-1.0)
IF(PQ2-PC7) 52,53,52
52 WRITE (6,110)
CALL PATTY(NVAR)
53 WRITE (6,111)
DO 15 I=1,NVAR
DO 15 J=1,NVAR
IF((DATA(I).NE.0.0).AND.(DATA(J).NE.0.0))GO TO 14
SXY(I,J)=99.
GO TO 15
14 SXY(I,J)=SXY(I,J)/(DATA(I)*DATA(J))
15 CONTINUE
CALL PATTY(NVAR)
325 NPAGE=0
IF(NSEL)6010,998,201
201 CALL PLUT(NVAR,NSAM,NSEL,ICDCNT)
GO TO 998
C
350 WRITE (6,4000)
GO TO 325
C
102 FORMAT(2A6,I3,I5,I2,I4,I2,3A2 ,31X,I3,2I2)
103 FORMAT(18A4)
104 FORMAT(5H0SUMS//)
105 FORMAT(1H 8F14.4)
106 FORMAT(25H0CROSS PRODUCT DEVIATIONS)
108 FORMAT(6H0MEANS//)
109 FORMAT(20H0STANDARD DEVIATIONS//)
110 FORMAT(27H0VARIANCE-COVARIANCE MATRIX//)
111 FORMAT(19H0CORRELATION MATRIX//)
112 FORMAT(A6,I3,I2,20I3)
403 FORMAT(1H06X,23HTRANS GENERATOR CARD(S))
404 FORMAT(46H0CARD NEW TRANS ORIG. ORIG. VAR(B)/45H NO.
1VARIABLE CODE VAR(A) OR CONSTANT)
406 FORMAT(A6,I3,I2,I3,F6.0)
413 FORMAT(//21H CASE SELECTION CARDS//)
414 FORMAT(4(3X,I3,1X,A2,A6,1X,A2))
415 FORMAT(22H A CASE IS ACCEPTED IF)
417 FORMAT(6H (VAR(,I3,2H) ,A2,1X,A6,2H) ,A2)
439 FORMAT(A6)
442 FORMAT(F6.0)
443 FORMAT(2X,F3.0)
447 FORMAT(1H ,I3,I8,2I9,F14.4)
502 FORMAT(23H0REMAINING SAMPLE SIZE=I5)
503 FORMAT(18H0NO CASES ACCEPTED)
704 FORMAT(45H0CONTROL CARDS INCORRECTLY ORDERED OR PUNCHED)
709 FORMAT(A1)
1000 FORMAT(13A6,A2)
4000 FORMAT(115H0THE STANDARD DEVIATIONS, VARIANCE-COVARIANCE MATRIX AN
1D CORRELATION MATRIX ARE UNDEFINED FOR A SAMPLE SIZE OF ONE.)
4001 FORMAT(97H0INCORRECT TRANSGENERATION CODE ON CARD ABOVE. PROGRAM W
1ILL PROCEED WITHOUT THIS TRANSGENERATION.)
4002 FORMAT(1H023X71HNUMBER OF VARIABLE FORMAT CARDS INCORRECTLY SPECIF
1IED, ASSUMED TO BE 1.)
C
END
SUBROUTINE COOL(NTEST,KK1,A123,B123,D123,NTAPE)
C SUBROUTINE COOL FOR BMD02D FEBRUARY 1, 1966
C REWRITTEN BY DU BOIS 3-25-64
C DEFINITION OF NTEST
C NTEST=1 IF CASE FAILS BOOLEAN TEST
C NTEST=2 IF CASE SATISFIES BOOLEAN TEST
C NTEST=3 IF NEW PROBLEM CARD IS DETECTED
C NTEST=4 IF FINISH CARD IS DETECTED
C
COMMON CON(135),DATA(135),NEW(150),JUMP(150),NA(150),BN(150)
1,NSUB(36),REL(36),AMIN(135),OP(36),INDEX(36),SX(135),SX2(135)
2,AMAX(135),C(255),FMT(180),SXY(50,50)
DIMENSION WK(8),IN(37)
DOUBLE PRECISION A123,B123,D123,CON
C
DATA WK/2HGT,2HGE,2HLT,2HLE,2HEQ,2HNE,2HOR,2HAN/
DO 100 I=1,KK1
IS=NSUB(I)
C
C EXAMINE BOOLEAN EXPRESSION FOR GT, GE, LT, LE, EQ, NE
C
DO 55 J=1,6
IF(REL(I) .EQ. WK(J)) GO TO 26
55 CONTINUE
GO TO 311
26 IF(INDEX(I)) 27,27,28
27 CC=CON(I)
GO TO 29
28 K=CON(I)
CC=DATA(K)
29 GO TO (1,2,3,4,5,6),J
1 IF(DATA(IS)-CC) 50,50,20
2 IF(DATA(IS)-CC) 50,20,20
3 IF(DATA(IS)-CC) 20,50,50
4 IF(DATA(IS)-CC) 20,20,50
5 IF(DATA(IS)-CC) 50,20,50
6 IF(DATA(IS)-CC) 20,50,20
20 IN(I)=1
GO TO 100
50 IN(I)=0
100 CONTINUE
NTEST=IN(1)
KK=KK1-1
IF(KK)500,500,501
C
C EXAMINE BOOLEAN OPERATOR FOR OR/AN
C
501 DO 200 I=1,KK
IF(OP(I) .NE. WK(7)) GO TO 222
191 IF(NTEST) 199,199,321
199 NTEST=IN(I+1)
GO TO 200
222 IF(OP(I) .NE. WK(8)) GO TO 301
223 NTEST=NTEST*IN(I+1)
200 CONTINUE
500 IF(NTEST)320,320,321
321 NTEST=2
GO TO 333
320 NTEST=1
GO TO 333
C
C ERROR LOOK FOR NEXT PROBLEM OR FINISH CARD
C A123=6HFINISH
C B123=6HPROBLM
C D123=6HPLOTSL
C
311 X=REL(I)
GO TO 313
301 X=OP(I)
313 WRITE (6,2000)X
IF(NTAPE-5) 302,302,304
302 J=NTAPE
312 READ (J,1000)(DATA(K),K=1,14)
IF(DATA(1) .EQ. D123) GO TO 312
305 IF(DATA(1) .EQ. B123) GO TO 306
307 IF(DATA(1) .EQ. A123) GO TO 309
GO TO 312
306 NTEST=3
GO TO 333
309 NTEST=4
GO TO 3333
304 REWIND NTAPE
J=5
GO TO 312
3333 TYPE 3000
3000 FORMAT(' FINISH CARD ENCOUNTERED')
1000 FORMAT(13A6,A2)
2000 FORMAT(31H1ILLEGAL OPERATOR OR RELATION ,A2,58H IN CASE SELECTIO
1N CARD. PROGRAM SKIPPED TO NEXT PROBLEM.)
333 RETURN
END
SUBROUTINE PATTY(N)
C SUBROUTINE PATTY FOR BMD02D FEBRUARY 1, 1966
COMMON CON(135),DATA(135),NEW(150),JUMP(150),NA(150),BN(150)
1,NSUB(36),REL(36),AMIN(135),OP(36),INDEX(36),SX(135),SX2(135)
2,AMAX(135),C(255),FMT(180),A(50,50)
DIMENSION NN(8)
DOUBLE PRECISION CON
EQUIVALENCE (NN,SX)
C
IT=1
KK=0
K1=IT
K2=MIN0(8,N)
5 KK=KK+8
IF(N-KK)3,3,4
4 IT=IT+1
GO TO 5
3 DO 50 JX=1,IT
LLL=K2-K1+1
LL=0
DO 40 JJ=K1,K2
LL=LL+1
40 NN(LL)=JJ
WRITE (6,300)(NN(II),II=1,LLL)
DO 10 I=1,N
10 WRITE (6,20)I,(A(I,J),J=K1,K2)
K1=K2+1
K2=K1+7
K2=MIN0(K2,N)
20 FORMAT(1H I3,F11.4,7F14.4)
300 FORMAT(1H08X,4HCOL.7(10X,4HCOL.),/8X,I3,7( 11X,I3),/4H ROW//)
50 CONTINUE
RETURN
END
SUBROUTINE PLUT(NV,NO,NPL,ICDCNT)
C SUBROUTINE PLUT FOR BMD02D FEBRUARY 1, 1966
COMMON BC(135),DATA(135),IX(150),IY(150),NA(150),X(150),JC(36)
1,REL(36),AMIN(135),T(36),MM(36),SX(135),SX2(135),R(135),C(255)
2,FMT(180),SXY(50,50)
DOUBLE PRECISION BC,Z,PL
INTEGER XY(51,101),SYM,BLANK
DATA PL/6HPLOTSL/,P/1H./,C4/1H+/,BLANK/2H /,SYM/1H1/
C
NV1=NV+1
DO 800 I=1,NV
CALL SCALE(AMIN(I),R(I),100.0,JJJJ,AMIN(I),R(I),HHH)
800 R(I)=R(I)-AMIN(I)
IT=1
94 REWIND 20
K=0
9876 FORMAT(2I10)
DO 570 II=1,NPL
C
C
C
C
ICDCNT = ICDCNT + 1
READ (5,2)Z,LL,N,(MM(I1), I1=1,20)
2 FORMAT(A6,I3,I2,20I3)
IF(LL*(NV1-LL))3,3,77
77 IF(Z .EQ. PL) GO TO 5
3 WRITE(6,10)ICDCNT,Z,LL,N,(MM(KK),KK=1,20)
10 FORMAT('0ERROR ON PLOT SELECTION CARD',I4,2X,A6,I3,I2,20I3)
GO TO 570
5 DO 6 I=1,20
IF((NV -MM(I))*MM(I))1,7,7
1 WRITE(6,10)ICDCNT,Z,LL,N,(MM(KK),KK=1,20)
WRITE(6,11) ICDCNT,I,NV
11 FORMAT(' PLOTSL CARD',I4,'DESIGNATES AN INCORRECT CROSS-PLOT SELEC
1TION IN POSITION',I4,'SHOULDN''NT EXCEED',I4)
GO TO 570
7 IF(MM(I))770,770,8
8 K=K+1
IX(K)=MM(I)
6 IY(K)=LL
770 IF((II-NPL)*(K-100))570,600,600
600 KN=K
LEFF=0
505 LEFF=LEFF+1
DO 295 I1=1,51
DO 295 I2=1,101
295 XY(I1,I2)=BLANK
KIX=IX(LEFF)
KIY=IY(LEFF)
C
KL=255
DO 13 JJ=1,NO
301 DO 12 J=1,NV
KL=KL+1
IF(KL-255) 12,12,14
14 READ(20)(C(IJK),IJK=1,255)
KL=1
12 X(J)=C(KL)
C
L=KIX
M=KIY
L=51.5-(X(L)-AMIN(L))/R(L)*50.0
IF((52-L)*L)13,13,70
70 M=(X(M)-AMIN(M))/R(M)*100.0+1.5
IF((102-M)*M)13,13,71
71 CALL FORM2(SYM,XY(L,M))
13 CONTINUE
701 REWIND 20
DO 40 N=1,101
40 C(N)=P
DO 41 N=1,101,5
41 C(N)=C4
C
L=KIX
M=KIY
Q=AMIN(M)
D=R(M)/10.0
DO 51 N=1,11
T(N)=Q
51 Q=Q+D
Q=AMIN(L)+R(L)
D=R(L)/50.0
DO 52 N=1,51
X(N)=Q
52 Q=Q-D
50 WRITE (6,54)M,L,(T(N),N=1,11,2),(T(N),N=2,10,2),(C(N),N=1,101),(X(
1K00),C(K00),(XY(K00,N),N=1,101),C(K00),X(K00),K00=1,51),(C(N),N
2=1,101),(T(N),N=1,11,2),(T(N),N=2,10,2)
54 FORMAT(11H1 VARIABLE48X,8HVARIABLEI3/I7/2X,F15.3,
1 5F20.3/7X,5F20.3/13X,101A1,51(/1X,F10.3,1X,103A1 ,F10.3
2)/13X,101A1/2X,F15.3,5F20.3/7X,5F20.3)
IF(LEFF-KN)505,580,580
580 K=0
570 CONTINUE
900 RETURN
END
SUBROUTINE SCALE(YMIN,YMAX,YINT,JY,TYMIN,TYMAX,YIJ)
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/
C
50 YR=YMAX-YMIN
TT=YR/YINT
J=TEST
IF(TT.GT.0.0)J=J+ALOG10(TT)
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)
INTEGER XY,SYMB,SYM(63)
INTEGER BLANK
DATA BLANK/2H /
DATA SYM / 1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,1HA,
11HB,1HC,1HD,1HE,1HF,1HG,1HH,1HI,1HJ,1HK,1HL,1HM,1HN,1HO,1HP,1HQ,
21HR,1HS,1HT,1HU,1HV,1HW,1HX,1HY,1HZ,6*1H-,6*1H+,7*1H*,8*1H$,2*1H//
IF (XY.EQ.BLANK ) GO TO 50
DO 30 I=1,62
IF (XY.NE.SYM(I)) GO TO 30
XY=SYM(I+1)
GO TO 100
30 CONTINUE
IF (XY.EQ.SYM(63) ) GO TO 100
XY=SYM(1)
GO TO 100
50 XY=SYMB
100 RETURN
END
SUBROUTINE TPWD(NT1,NT2,PQ3)
C SUBROUTINE TPWD FOR BMD02D FEBRUARY 1, 1966
DATA P/2HNO/
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 IF(P-PQ3)1,24,1
1 REWIND NT1
24 NT2=NT1
28 RETURN
40 WRITE (6,49)
CALL EXIT
STOP
49 FORMAT(25H ERROR ON TAPE ASSIGNMENT)
END
SUBROUTINE TRNGEN(IND,NVG,NODATA,ISAMP,LCASE,MERRY,N)
C SUBROUTINE TRNGEN FOR BMD02D APRIL 20, 1966
C
COMMON CON(135),DATA(135),NNEWA(150),LLCODE(150),LLVA(150),
1 BBNEW(150),NSUB(36),REL(36),AMIN(135),OP(36),INDEX(36),SX(135),
2 SX2(135),AMAX(135),C(255),FMT(180),VECTOR(50,50)
DOUBLE PRECISION CON
EXTERNAL SIGN
ASN(XX)=ATAN(XX /SQRT(1.0-XX**2))
C
ITEM=N
SAMP=NODATA
DO 3 J=1,NVG
305 NEWA=NNEWA(J)
LCODE=LLCODE(J)
310 LVA=LLVA(J)
BNEW=BBNEW(J)
315 IF(LCODE.LE.10)GO TO 4
5 NEWB=BNEW
4 D=DATA(LVA)
IF(LCODE-41)500,170,3
500 GO TO (10,20,30,40,50,60,70,80,90,100,110,120,130,140,
1150,160),LCODE
10 IF(D)99,7,8
7 DATA(NEWA)=0.0
GO TO 3
8 DATA(NEWA)=SQRT(D)
GO TO 3
20 IF(D)99,11,12
11 DATA(NEWA)=1.0
GO TO 3
12 DATA(NEWA)=SQRT(D)+SQRT(D+1.0)
GO TO 3
30 IF(D.LE.0.0)GO TO 99
14 DATA(NEWA) = ALOG10(D)
GO TO 3
40 DATA(NEWA)=EXP(D)
GO TO 3
50 IF(D)99,7,17
17 IF(D-1.0)18,19,99
19 DATA(NEWA)=3.14159265/2.0
GO TO 3
18 A=SQRT(D)
DATA(NEWA)=ASN(A)
GO TO 3
60 A=D/(SAMP+1.0)
B=A+1.0/(SAMP+1.0)
IF(A)99,23,24
23 IF(B)99,7,27
27 DATA(NEWA)=ASN(SQRT(B))
GO TO 3
24 IF(B)99,28,29
28 DATA(NEWA)=ASN(SQRT(A))
GO TO 3
29 A=SQRT(A)
B=SQRT(B)
DATA(NEWA)=ASN(A)+ASN(B)
GO TO 3
70 IF(D.EQ.0.0)GO TO 99
31 DATA(NEWA)=1.0/D
GO TO 3
80 DATA(NEWA)=D+BNEW
GO TO 3
90 DATA(NEWA)=D*BNEW
GO TO 3
100 IF(D.EQ.0.0)GO TO 7
33 DATA(NEWA)=D**BNEW
GO TO 3
110 DATA(NEWA)=D+DATA(NEWB)
GO TO 3
120 DATA(NEWA)=D-DATA(NEWB)
GO TO 3
130 DATA(NEWA)=D*DATA(NEWB)
GO TO 3
140 IF(DATA(NEWB).EQ.0.0)GO TO 99
34 DATA(NEWA)=D/DATA(NEWB)
GO TO 3
150 IF(D-BNEW)7,11,11
160 IF(D-DATA(NEWB))7,11,11
170 IF(D.NE.0.0)GO TO 3
503 IF(SIGN(10.0,D)) 504,3,3
504 DATA(NEWA)=BNEW
3 CONTINUE
GO TO 42
99 LCASE=-999
IF(MERRY-J) 402,401,402
402 MERRY=J
WRITE (6,1404)J
401 WRITE (6,1405)ITEM
WRITE (6,1408)
ISAMP=ISAMP-1
42 RETURN
1404 FORMAT(30H0THE INSTRUCTIONS INDICATED ON/25H TRANS GENERATOR CARD
1NO.I2,4H RE-/29H SULTED IN THE VIOLATION OF A/31H RESTRICTION FOR
2THIS TRANSFOR-/31H MATION. THE VIOLATION OCCURRED/27H FOR THE CASE
3 LISTED BELOW./)
1405 FORMAT( 9H CASE NO.I5)
1408 FORMAT(45H0THIS CASE WILL BE DELETED FOR ALL VARIABLES )
C
END