Trailing-Edge
-
PDP-10 Archives
-
decus_20tap5_198111
-
decus/20-0137/ilano/ilano.for
There is 1 other file named ilano.for in the archive. Click here to see a list.
00100 C
00200 C WESTERN MICHIGAN UNIVERSITY
00300 C
00400 C
00500 C ANALYSIS OF VARIANCE
00600 C
00700 C ADAPTED BY BERENICE GAN
00800 C COMPUTER CENTER, WMU
00900 C SEPTEMBER, 1972
01000 C
01100 C
01200 C THIS PROGRAM IS ADAPTED FROM THE WAYNE STATE UNIVERSITY
01300 C VERSION OF ANALYSIS OF VARIANCE (BALANOVA) ORIGINALLY WRITTEN AT
01400 C UNIVERSITY OF ILLINOIS. THE WMU COMPUTER CENTER DISCLAIM ANY
01500 C RESPONSIBILITY IN THE DESIGN, EFFICIENCY AND ACCURACY OF
01600 C THIS PROGRAM.
01700 C
01800 C
01900 C ASIDE FROM REDUCING THE DIMENSION STATEMENTS AND COMPACTING
02000 C THE COMMON STATEMENTS, THIS PROGRAM IS DIVIDED INTO 3 PARTS:
02100 C ILANO.ANO THE RESIDENT PROGRAM
02200 C ILANO1.ANO THE PROGRAM CALLED BY CHAIN 1
02300 C ILANO2.ANO THE PROGRAM CALLED BY CHAIN 2
02400 C
02500 C
02600 C
02700 C SUBROUTINES CONTAINED IN ANO.ANO:
02800 C
02900 C BOOBOO
03000 C CHLOOP
03100 C PRTSN
03200 C C***********************************************************************
03300 C
03400 C
03500 DIMENSION QFNAME(5),QFR(5),ITEMPS(5),NLEV(5),ISIG(100),
03600 1 LDEN1(100),LDEN2(100),LEMST1(100),LT1D(100),LT1S(100),LT2D(100),
03700 2 LT2S(100),LT3S(100),QP1(133),QP2(133),TIT(16)
03800 DIMENSION FNLEV(5),IFIN(5),IND2(5),ISTART(5),ISUB(5),
03900 1 ISUB1(5),ISUB2(5),NALL1(5),NALPHA(5),NALPHR(5),
04000 2 PNAME(5),QFN(5),SSM(32),DF(100),FRAT(100),SIGDIG(100),
04100 3 SMS(100),SS(100),ENTOT(200),XBAR1(200),XTOT(200),X1(200),
04200 4 X(5000),FMT(16)
04300 DIMENSION ISUBSC(5,100),LAUX(5,100),LEMST3(10,100),
04400 1 JSUBSC(5,5),QNEST(5,19)
04500 DIMENSION QCOEFX(5,10,100)
04600 COMMON/BLOCK1/IIID,IIIS,ILAST,IR,IYES,LOOPF,LOOPH,LOOPMX,MICON,
04700 1 MNS,ND,NF,NF1,NIN,NOTS,NOUT,NS,NSCR1,
04800 2 NS1,NS2,NS3,NT1D,NT1S,NT2D,NT2S,NT3S,QB,QBLANK,QC,
04900 3 QN,QP,QREP,QRRR,QX,Q0,QFNAME,QFR,ITEMPS,ISIG,LDEN1,
05000 4 LDEN2,LEMST1,LT1D,LT1S,LT2D,LT2S,LT3S,ISUBSC,LAUX,
05100 5 LEMST3,JSUBSC,QP1,QP2,TIT,QNEST,NLEV,NDEP,NINX,ND1OR2
05200 COMMON/BLOCK3/QCOEFX
05300 COMMON/BLOCK2/COUN,COUNT,EQUN,INITA,INITB,INITC,INITD,INITE,ISUBX,
05400 1 LOOPA,LOOPB,LOOPC,LOOPD,LOOPE,MAXDEP,MNX,NA,NABS,
05500 2 NA1,NN,NNX,NN1,NN2,NN3,NOWDEP,NSTAR,NSTAR1,NSTAR2,
05600 3 NSTAR3,NTYPE1,NTYPE2,NXCDS,NZERO,PILEV,SSC,SSM1,
05700 4 SUMN,SUMX,SUMX2,XNEW,XSUM,FNLEV,IFIN,IND2,ISTART,
05800 5 ISUB,ISUB1,ISUB2,NALL1,NALPHA,NALPHR,SSM,DF,FRAT,
05900 6 SMS,SS,ENTOT,XBAR1,XTOT,X1,FMT,PNAME,PROVER,QFN,
06000 7 SIGDIG
06100 EQUIVALENCE (QCOEFX,X)
06200 DATA FCP016/1H0/,FCP017/1HN/,FCP018/1H /,FCP019/1H /,FCP020/1H&/,
06300 1 FCP021/1HR/,FCP022/1HX/,B/'FINIS'/
06400 C CALL USAGE('ILANO')
06500 NIN=2
06600 NOUT=20
06700 NSCR1=21
06800 C MAXIMUM NUMBER OF FACTORS
06900 MNF=5
07000 C MAXIMUM NUMBER OF LEGAL SOURCES
07100 MNS=100
07200 C MAXIMUM NUMBER OF SIGMA-SQUARED TERMS IN ONE E(MS)
07300 MICON=10
07400 C HOLLERITH LITERAL CONSTANTS
07500 Q0=FCP016
07600 QN=FCP017
07700 QB=FCP018
07800 QBLANK=FCP019
07900 QP=FCP020
08000 QRRR=FCP021
08100 QX=FCP022
08200 29 READ (NIN,30)(TIT(I),I=1,16)
08300 IF (TIT(1).EQ.B) CALL EXIT
08400 30 FORMAT(16A5)
08500 WRITE (NOUT,31)(TIT(I),I=1,16)
08600 31 FORMAT(//'1',54X,'WESTERN MICHIGAN UNIVERSITY'//62X,'VERSION OF'//
08700 1 56X,'UNIVERSITY OF ILLINOIS'///61X,'BALANOVA 5'/61X,10(1H-)//
08800 2 53X,'ANALYSIS OF VARIANCE PROGRAM'////20X,'TITLE, PARAMETER AND
08900 3 FACTOR SPECIFICATION CARDS'/20X,47(1H-)///1X,16A5)
09000 C READ PARAMETER CARD
09100 C NF = NUMBER OF FACTORS
09200 C NDEP = NUMBER OF DEPENDENT VARIABLES
09300 C NINX = NUMBER OF INPUT TAPE FOR DATA CARDS (IF = NIN MAY BE
09400 C BE LEFT BLANK)
09500 C ND1OR2 = 1, DEPENDENT VARIABLES ARE FIRST ON DATA CARDS, FOL-
09600 C LOWED BY SUBSCRIPT SET
09700 C = 2 OR BLANK, DEPENDENT VARIABLES ARE LAST ON DATA CARDS,
09800 C PRECEDED BY SUBSCRIPT SET.
09900 C NCDF = NUMBER OF DATA CARDS PER FORMAT (I.E. PER READ STATEMENT
10000 C OR PER SUBJECT) - NOT NECESSARY TO INCLUDE IF
10100 C NINX = BLANK OR 7
10200 C THE FOLLOWING TWO PARAMETERS ARE NORMALLY BLANK - USED PRINC-
10300 C IPALLY FOR DEBUGGING.
10400 C LOOPMX = OPTIONAL SPECIFICATION OF LOOPMX - USED TO CONTROL
10500 C MAXIMUM NUMBER OF CYCLES IN CERTAIN NESTED LOOPS
10600 C - IF LEFT BLANK, LOOPMX IS SET = 5000 BY PROGRAM
10700 C ILAST = 0, NO DEBUG PRINTING.
10800 C = 1, DEBUG PRINTING.
10900 READ (NIN,9)NF,NDEP,NINX,ND1OR2,NCDF,LOOPMX,ILAST,MISDAT
11000 9 FORMAT (13I6)
11100 WRITE (NOUT,20)NF,NDEP
11200 20 FORMAT(/1X,'THE NUMBER OF FACTORS IS',I6/1X,'THE NUMBER OF DEPENDE
11300 1NT VARIABLES IS',I6/)
11400 IF (NF-MNF)820,820,14
11500 820 IF (NF-1)14,14,840
11600 14 WRITE (NOUT,16)NF
11700 16 FORMAT ('0NUMBER OF FACTORS IS',I10,' WHICH IS ILLEGAL')
11800 CALL BOOBOO(1)
11900 840 NF1=NF-1
12000 C RESET LOOPMX IF READ IN AS 0
12100 IF (LOOPMX.LE.0) LOOPMX=5000
12200 C INPUT DESIGN AND COMPUTE ALL LEGAL SOURCES
12400 730 CALL INPUTD
12500 CALL LEGALS
12600 CALL AUXIL
12700 DO 600 IS=1,NS
12800 600 CALL EMS(IS,ISUBSC(1,IS),ISIG(IS),LEMST3(1,IS),QCOEFX(1,1,IS))
12900 WRITE(NOUT,21)
13000 21 FORMAT(1H0,20X,'TABLE OF EXPECTED VALUES (USED TO DETERMINE COR
13100 1RECT DENOMINATORS)'/21X,67(1H-))
13200 CALL PRTEMS
13300 DO 601 IS=1,NS
13400 601 CALL FINDEN(IS,ISUBSC(1,IS),LEMST3(1,IS),QCOEFX(1,1,IS),
13500 1 ISIG(IS),LDEN1(IS))
13600 CALL SORTAN
13700 IIID=NCDF
13900 CALL SEQPGM
14000 DO 72 NOWDEP=1,NDEP
14100 WRITE (NOUT,90) (TIT(I),I=1,16),NOWDEP
14200 90 FORMAT(1H1,16A5,2X,'DEPENDENT VARIABLE NUMBER ',I5)
14300 IF (IR) 87,87,88
14400 88 NPRINT=0
14500 DO 84 JJ=1,NF
14600 IF (NALPHA(JJ)-1) 84,85,84
14700 85 NPRINT=NPRINT+1
14800 PNAME(NPRINT)=QFNAME(JJ)
14900 84 CONTINUE
15000 WRITE(NOUT,86)(PNAME(NP),NP=1,NPRINT)
15100 86 FORMAT (1H0,20X,'NUMBER OF REPLICATIONS IN EACH CELL'/21X,36(1H-)
15200 1 /1H0,20X,'NUMBER',4X,'CELL'/1H0,30X,10A5)
15300 WRITE(NOUT, 80)
15400 80 FORMAT(1X)
15500 87 CALL READX
15600 IF (NTYPE2.EQ.4) GO TO 72
15700 WRITE(NOUT,76) (QFNAME(IF),IF=1,NF)
15800 76 FORMAT(1H0,20X,'CELL AND MARGINAL MEANS OF THE DEPENDENT VARIABLE'
15900 1 /21X,49(1H-)//' EACH MEAN CORRESPONDS TO THE SUBSCRIPT (LEVEL)
16000 2 SET PRINTED ON THE RIGHT.'/' A ZERO INDICATES THAT THE SUBSCRIPT
16100 3 IS DOTTED (SUMMED OVER)'//16X,'MEAN',6X,'SUBSCRIPT SET'/1H0,30X,
16200 4 10A5)
16300 IF (NTYPE2-2) 73,74,73
16400 73 CALL SSEQU
16500 GO TO 75
16600 74 CALL SSPROP
16700 75 IF (NTYPE1-1) 91,92,91
16800 91 IF (IR) 92,92,104
16900 104 WRITE(NOUT,93)
17000 93 FORMAT('0IN SOME LINES IN THE TABLE THE REPLICATION FACTOR MAY
17100 1 NOT BE DOTTED. IN ANY LINE IN WHICH THIS IS THE CASE, THE INPUT
17200 2 REP-'/' LICATION NUMBER WILL APPEAR AS THE SUBSCRIPT. NOTE
17300 3 THAT IF THE INPUT REPLICATION SUBSCRIPT NUMBER IS EVER ZERO IT
17400 4 WILL NOT'/' BE DISTINGUISHED FROM A DOTTED SUBSCRIPT IN THE
17500 5 TABLE. INTERNALLY IN BALANOVA, HOWEVER, NO CONFUSION WILL HAVE
17600 6 ARISEN.'/'0IF THE REPLICATION FACTOR IS ALWAYS DOTTED IN THE
17700 7 TABLE, IGNORE THIS MESSAGE.')
17800 92 CALL FISH
17900 CALL FPRINT
18000 72 CONTINUE
18100 GO TO 29
18200 END
18300 SUBROUTINE BOOBOO(KK)
18400 NOUT=20
18500 IF (KK.NE.1) GO TO 40
18600 WRITE (NOUT,21)
18700 21 FORMAT ('-THE ABOVE ERROR IS DUE TO ONE OF THE PROGRAM RESTRIC
18800 1TIONS BEING EXCEEDED. THIS ERROR IS POSSIBLY DUE TO AN ERROR ON
18900 2 THE'/' PARAMETER OR FACTOR SPECIFICATION CARDS. IF THESE CARDS
19000 3 ARE CORRECT THEN THE ANALYSIS IS TOO LARGE TO BE RUN WITH THE
19100 4 PRESENT'/' PROGRAM. THE DIMENSIONS IN THE PROGRAM CAN BE INCREA
19200 5SED,HOWEVER, BY FOLLOWING THE INSTRUCTIONS IN THE FORTRAN LISTINGS
19300 6 OF'/' THE TWO MAIN PROGRAMS, ONE FOR EACH CORE LOAD.')
19400 CALL EXIT
19500 40 IF (KK.NE.2) GO TO 41
19600 WRITE (NOUT,22)
19700 22 FORMAT ('0THIS ERROR IS DUE TO AN INCONSISTENCY ON ONE OR MORE
19800 1 FACTOR SPECIFICATION CARDS. CORRECT THE ERROR AND RERUN.')
19900 CALL EXIT
20000 41 IF (KK.NE.3) GO TO 42
20100 13 WRITE(NOUT,23)
20200 23 FORMAT(' THIS ERROR CONDITION WAS INSERTED IN THE PROGRAM PRIMARIL
20300 1Y FOR PROGRAM DEBUGGING. THIS CONDITION SHOULD NOT HAVE OCCURED'
20400 2 /' SINCE THE DESIGN HAS ALREADY BEEN CHECKED TO BE A LEGAL DESIGN
20500 3. HENCE THE OCCURENCE OF THIS ERROR PROBABLY INDICATES A'/' REM
20600 4AMINING ERROR IN THE PROGRAM. IN SOME CASES THIS ERROR IS
20700 5 CONSIDERED NON-FATAL AND THE PROGRAM HAS CONTINUED'/' HOWEVER THE
20800 6 RESULTS SHOULD BE INTERPRETED WITH EXTREME CAUTION IN ANY CASE.')
20900 IF (KK.EQ.6) RETURN
21000 CALL EXIT
21100 42 IF (KK.NE.4)GO TO 45
21200 WRITE (NOUT,24)
21300 24 FORMAT ('-BALANOVA, OF COURSE CONTAINS MANY LOOPS WITHIN LOOPS.
21400 1 THE PRESENT PROGRAM, AS A HEDGE AGAINST INFINITE LOOPING DURING
21500 2 DEBUGGING,'/' CONTAINS AN UPPER LIMIT OF 10,000 ON THE NUMBER
21600 3 OF LOOPS IN ANY ONE NEST OF LOOPS. THIS NUMBER HAS NOW BEEN
21700 4 EXCEEDED.'/' IF THIS IS NOT DUE TO MACHINE ERROR THIS SUPER LIMIT
21800 5 (LOOPMX) MAYBE ALTERED IN THE MAIN PROGRAM OF CORE LOAD 1'/)
21900 CALL EXIT
22000 45 IF (KK.NE.5) GO TO 46
22100 IF (NSWIT.NE.7) GO TO 13
22200 WRITE (NOUT,25)
22300 25 FORMAT ('-THIS ERROR IS DUE TO THE SUBSCRIPT SET GIVEN ABOVE A
22400 1PPEARING ON A DATA CARD. THE SUBSCRIPT SET FALLS OUTSIDE THE MAX
22500 2IMUM NUMBER'/' OF LEVELS STATED ON THE FACTOR SPECIFICATION CARDS.
22600 3 CORRECT EITHER THE FACTOR SPECIFICATION CARDS OR THE DATA CARD
22700 4 AND RERUN')
22800 WRITE(NOUT,52)
22900 52 FORMAT(' IF THIS IS A CLASS B DESIGN (REPLICATION FACTOR BUT NOT
23000 1COMPLETELY CROSSED), IGNORE THE SUBSCRIPT PRINTED FOR THE REPLICA
23100 2TION'/' FACTOR SINCE THIS SUBSCRIPT IS AN INTERNAL NUMBER RATHER
23200 3 THAN THE NUMBER ON THE DATA CARD. THIS SUBSCRIPT IS NOT THE ONE
23300 4 IN'/' ERROR ANYWAY. ONE OF THE OTHERS IS IN ERROR. FOR CLASS A
23400 5 OR C DESIGNS, ALL SUBSCRIPTS PRINTED ARE AS THEY APPEARED ON THE
23500 6 '/' DATA CARD AND ONE OF THEM IS IN ERROR')
23600 CALL EXIT
23700 46 IF (KK.EQ.6) GO TO 13
23800 IF (KK-7)49,17,49
23900 17 NSWIT=17
24000 RETURN
24100 49 IF (KK.NE.8) CALL EXIT
24200 51 NSWIT=8
24300 RETURN
24400 END
24500 SUBROUTINE CHLOOP(LOOP,MAX,LOOPNM,SUBNAM)
24600 NOUT=20
24700 LOOP=LOOP+1
24800 IF (LOOP.LE.MAX) RETURN
24900 11 WRITE (NOUT,12) LOOPNM,LOOP,SUBNAM
25000 12 FORMAT (1H0,A6,' =',I10,' EXCEEDING MAX IN SUBROUTINE ',A6)
25100 CALL BOOBOO(4)
25200 10 RETURN
25300 END
25400 C
25500 C THIS IS A COMBINATION OF THE ORIGINAL SUBROUTINES PRTN AND
25600 C PRTS. PRTN AND PRTS ONLY DIFFER BY ONE STATEMENT AND HENCE
25700 C PRTSN HAS AN EXTRA ARGUMENT TO COMPENSATE THE DIFFERENCE.
25800 C
25900 C
26000 C
26100 SUBROUTINE PRTSN(QQ,I,ISUBS,IDUM)
26200 DIMENSION QFNAME(5),QFR(5),ITEMPS(5),NLEV(5),ISIG(100),
26300 1 LDEN1(100),LDEN2(100),LEMST1(100),LT1D(100),LT1S(100),LT2D(100),
26400 2 LT2S(100),LT3S(100),QP1(133),QP2(133),TIT(16)
26500 DIMENSION ISUBSC(5,100),LAUX(5,100),LEMST3(10,100),
26600 1 JSUBSC(5,5),QNEST(5,19)
26700 DIMENSION ISUBS(5),QQ(133)
26800 COMMON/BLOCK1/IIID,IIIS,ILAST,IR,IYES,LOOPF,LOOPH,LOOPMX,MICON,
26900 1 MNS,ND,NF,NF1,NIN,NOTS,NOUT,NS,NSCR1,
27000 2 NS1,NS2,NS3,NT1D,NT1S,NT2D,NT2S,NT3S,QB,QBLANK,QC,
27100 3 QN,QP,QREP,QRRR,QX,Q0,QFNAME,QFR,ITEMPS,ISIG,LDEN1,
27200 4 LDEN2,LEMST1,LT1D,LT1S,LT2D,LT2S,LT3S,ISUBSC,LAUX,
27300 5 LEMST3,JSUBSC,QP1,QP2,TIT,QNEST,NLEV,NDEP,NINX,ND1OR2
27400 COMMON/BLOCK3/QCOEFX
27500 C STORE SOURCE IN FORM FOR PRINTING IN QQ(I) ONWARDS.
27600 C EXIT WITH I = SUBSCRIPT OF FIRST BLANK COLUMN.
27700 C ONLY LIVE SUBSCRIPTS ARE PRINTED.
27800 C ISUBS(IF),IF=1,NF IS SOURCE SPECIFICATION
27900 DO 12 IF=1,NF
28000 IF (ISUBS(IF)-IDUM)12,13,12
28100 13 QQ(I)=QFNAME(IF)
28200 I=I+1
28300 IF (IDUM.EQ.1) QQ(I)=QC
28400 IF (IDUM.EQ.2) QQ(I)=QX
28500 I=I+1
28600 12 CONTINUE
28700 I=I-1
28800 QQ(I)=QB
28900 RETURN
29000 END