mirror of
https://github.com/retro-software/B5500-software.git
synced 2026-03-10 04:11:27 +00:00
1. Commit library tape images, directories, and extracted text files. 2. Commit additional utilities under Unisys-Emode-Tools.
1187 lines
94 KiB
Plaintext
1187 lines
94 KiB
Plaintext
BEGIN 00000000
|
|
COMMENT ANCOVA1/STATMAN; 00000100
|
|
COMMENT THIS IS BMD04V; 00000200
|
|
FORMAT OKTL(50O); 00000300
|
|
FILE TAPE2 2(2,50); 00000400
|
|
FILE TAPE3 (2,56,10); 00000500
|
|
INTEGER FORMOT; 00000600
|
|
FORMAT CHKFOR (A6); 00000700
|
|
FORMAT NOFRM ("MISSING FORMAT SPECIFICATION CARD(S)"); 00000800
|
|
FORMAT FMT2(////////////////////////////////////////////////// 00000900
|
|
////////////////////////////////////////////////// 00001000
|
|
////////////////////////////////////////////////// 00001100
|
|
////////////////////////////////////////////////// 00001200
|
|
//////////////////////////////////////////////////);00001300
|
|
INTEGER Z; 00001400
|
|
INTEGER ARRAY NN,SCALE[0:100]; 00001500
|
|
FILE IN CARD 0(2,10); FILE OUT LINE 4(2,15); 00001600
|
|
FILE OUT PUNCH 0(2,10); 00001700
|
|
BOOLEAN BADCARDFLAG; 00001800
|
|
BOOLEAN ARRAY SENSL[0:4]; 00001900
|
|
REAL ARRAY COMMON[0:15]; 00002000
|
|
REAL XPR; 00002100
|
|
INTEGER QQ; 00002200
|
|
LABEL FINIS; 00002300
|
|
INTEGER ARRAY NEWQ[0:99], JUMPQ[0:99], NAQ[0:99], 00002400
|
|
NSAMQ[0:99], NSUBQ[0:6,0:99], NGQ[0:99], LLLQ[0:35], 00002500
|
|
KKKQ[0:36], NAMESQ[0:36], INDEX1Q[0:36], INDEX2Q[0:36]; 00002600
|
|
REAL ARRAY SLQ[0:26], BNQ[0:99], FMTQ[0:120], DATAQ[0:100], 00002700
|
|
CONTQ[0:6,0:99], RELQ[0:6,0:99], OPERQ[0:6,0:99], 00002800
|
|
X[0:36], SSVARQ[0:36,0:99], TOTXXQ[0:36,0:36], 00002900
|
|
TOTXYQ[0:36], TREXXQ[0:36,0:36], TREXYQ[0:36], 00003000
|
|
ERRXXQ[0:36,0:36], ERRXYQ[0:36], B[0:35], C[0:35], 00003100
|
|
D[0:35], SEBQ[0:35], SECQ[0:35], SEDQ[0:35], 00003200
|
|
ADYQ[0:99], SEADYQ[0:99]; 00003300
|
|
PROCEDURE BADCARD(P); 00003400
|
|
VALUE P; 00003500
|
|
INTEGER P; 00003600
|
|
BEGIN 00003700
|
|
SWITCH FORMAT SWF~("PROBLEM CARD SPECIFIES MORE VARIABLES THAN ", 00003800
|
|
"ALLOWED."), 00003900
|
|
("PROBLEM CARD INDICATES THAT NUMBER OF VARIABLES " 00004000
|
|
"READ IN PLUS NUMBER ADDED EXCEEDS LIMIT OF 99."), 00004100
|
|
("USER HAS DESIGNATED ILLEGAL BCD TAPE AS INPUT."), 00004200
|
|
("LESS THAN TWO VARIABLES INPUT IMPLIES NO ", 00004300
|
|
"INDEPENDENT COVARIATE."), 00004400
|
|
("PROBLEM CARD INDICATES INCORRECT NUMBER OF ", 00004500
|
|
"TRANSGENERATION CARDS."), 00004600
|
|
("TRNGEN CARDS INCORRECTLY ORDERED OR PUNCHED."), 00004700
|
|
("PROBLEM CARD INDICATES INCORRECT NUMBER OF ", 00004800
|
|
"GROUP DEFINITION CARDS."), 00004900
|
|
("GRPDEF CARDS INCORRECTLY ORDERED OR PUNCHED."), 00005000
|
|
("SAMSIZ CARDS INCORRECTLY ORDERED OR PUNCHED."), 00005100
|
|
("PROBLEM CARD INDICATES INCORRECT NUMBER OF ", 00005200
|
|
"LABELS CARDS."), 00005300
|
|
("LABELS CARDS INCORRECTLY ORDERED OR PUNCHED."), 00005400
|
|
("CVRSEL CARD INCORRECTLY ORDERED OR PUNCHED."), 00005500
|
|
("CVRSEL CARD INDICATES NUMBER OF COVARIATES ", 00005600
|
|
"EXCEEDS PROGRAM LIMIT OF 35."), 00005700
|
|
("NUMBER OF GROUPS AND COVARIATES RELATIVE TO ", 00005800
|
|
"NUMBER OF CASES INDICATES INSUFFICIENT DEGREES ", 00005900
|
|
"OF FREEDOM."); 00006000
|
|
FORMAT FERR(//"ERROR FINISH:"/); 00006100
|
|
WRITE(LINE,FERR); 00006200
|
|
WRITE(LINE,SWF[P]); 00006300
|
|
BADCARDFLAG~TRUE; 00006400
|
|
END OF BADCARD; 00006500
|
|
PROCEDURE DATELINE (PROGRAM); 00006600
|
|
VALUE PROGRAM; 00006700
|
|
ALPHA PROGRAM; 00006800
|
|
BEGIN OWN BOOLEAN USED; 00006900
|
|
FORMAT HD(A4,I3,", ",A4,X2,"TIME:",I5,X10,"OUTPUT FROM PROGRAM ", 00007000
|
|
A6,X10,"UNIVERSITY OF DENVER COMPUTING CENTER" ///), 00007100
|
|
LAYT (/ / "EXECUTION TIME =", I5, X03, "I/O TIME =", I5, 00007200
|
|
" SECONDS ",A4,I3,", ", A4, X03, "TIME:", I7 / / /); 00007300
|
|
LABEL GOTIT; 00007400
|
|
ALPHA MO, MINS, FEB, HRS, YR, DAY; 00007500
|
|
USED ~ USED AND PROGRAM . [18 : 6] = 0; 00007600
|
|
DAY ~ TIME (0); 00007700
|
|
YR ~ DAY . [18 : 12] + "1900"; 00007800
|
|
DAY ~ DAY . [42 : 6] + 10 | DAY . [36 : 6] + 100 | DAY . [30 : 6]; 00007900
|
|
FEB ~ IF YR . [42 : 6] MOD 4 = 0 THEN "(FEB." ELSE "&FEB."; 00008000
|
|
FOR MO ~ "~JAN.", FEB, "~MAR.", "<APR.", "~ MAY", "<JUNE", "~JULY" 00008100
|
|
, "~AUG.", "<SEPT", "~OCT.", "<NOV.", "~DEC." DO 00008200
|
|
BEGIN IF DAY { MO . [18 : 06] THEN GO TO GOTIT; 00008300
|
|
DAY ~ DAY - MO . [18 : 6]; 00008400
|
|
END; 00008500
|
|
GOTIT: MINS ~ TIME (1) / 3600; 00008600
|
|
HRS ~ 100 | (MINS DIV 60) + MINS MOD 60; 00008700
|
|
IF USED THEN WRITE (LINE, LAYT, TIME (2) / 60, TIME (3) / 60, MO, 00008800
|
|
DAY, YR, HRS) ELSE WRITE (LINE, HD,MO,DAY,YR,HRS,PROGRAM); 00008900
|
|
USED ~ TRUE; 00009000
|
|
END OF DATELINE; 00009100
|
|
PROCEDURE OBJECTFMTGEN(INFORMAT);FORMAT INFORMAT;BEGIN OWN REAL NCR,NFWD00009200
|
|
,ELCLASS;OWN REAL LCR;OWN INTEGER CNT,TCNT,RSLT,F;OWN INTEGER FMAX;OWN R00009300
|
|
EAL ARRAY ACCUM[0:9];SAVE OWN REAL ARRAY GENF[0:259];SAVE OWN REAL ARRAY00009400
|
|
IMAG[0:9];OWN REAL ARRAY PRNT[0:19];OWN BOOLEAN ERRTOG;LABEL FINISHED;S00009500
|
|
TREAM PROCEDURE TATTLE(F,LINE);VALUE F;BEGIN SI~LOC F;DI~LINE;10(DS~LIT"00009600
|
|
");DS~9LIT"FMT SIZE ";DS~3DEC;DS~4LIT" WDS";47(DS~2LIT" ");END OF TATT00009700
|
|
LE;PROCEDURE FLAG(ERRNUM);INTEGER ERRNUM;BEGIN STREAM PROCEDURE INSERT(E00009800
|
|
RR,LINE,ACCUM,CNT);VALUE ERR,CNT;BEGIN SI~LOC ERR;DI~LINE;10(DS~LIT"X");00009900
|
|
DS~16LIT" SYNTAX ERROR #";DS~3DEC;DS~4LIT" ..";SI~ACCUM;SI~SI+3;DS~CNT00010000
|
|
CHR;DS~4LIT".. ";10(DS~LIT"X");36(DS~2LIT" ");END OF INSERT;INSERT(ER00010100
|
|
RNUM,PRNT[0],ACCUM[1],CNT);WRITE(LINE,15,PRNT[*]);ERRTOG~TRUE;END OF FLA00010200
|
|
G;PROCEDURE ERR(ERRNUM);INTEGER ERRNUM;BEGIN FLAG(ERRNUM);END;REAL STREA00010300
|
|
M PROCEDURE SETUP(CARD,LINE,LCR);BEGIN LOCAL SET1;SI~CARD;DI~LINE;DS~10W00010400
|
|
DS;40(DS~2LIT" ");SI~CARD;SET1~SI;DI~LOC SETUP;SI~LOC SET1;DS~WDS;DI~CA00010500
|
|
RD;9(DI~DI+8);SET1~DI;DS~LIT"%";SI~LOC SET1;DI~LCR;DS~WDS;END OF SETUP;R00010600
|
|
EAL STREAM PROCEDURE FMTF(FMTIN);BEGIN LOCAL ST;SI~FMTIN;DI~LOC FMTF;ST~00010700
|
|
SI;SI~LOC ST;DS~WDS;END OF FMTF;REAL STREAM PROCEDURE EXAMIN(NCR);VALUE 00010800
|
|
NCR;BEGIN SI~NCR;DI~LOC EXAMIN;DI~DI+7;DS~CHR;END OF EXAMIN;REAL STREAM 00010900
|
|
PROCEDURE CONV(ACCUM,SKP,N);VALUE SKP,N;BEGIN SI~ACCUM;SI~SI+SKP;SI~SI+300011000
|
|
;DI~LOC CONV;DS~N OCT;END OF CONV;REAL PROCEDURE CONVERT;BEGIN REAL T;IN00011100
|
|
TEGER N;T~CONV(ACCUM[1],TCNT,N~(CNT-TCNT)MOD 8);FOR N~TCNT+N STEP 8UNTIL00011200
|
|
CNT-1DO T~T|100000000+CONV(ACCUM[1],N,8);CONVERT~T;END OF CONVERT;STREA00011300
|
|
M PROCEDURE SCAN(NCRV,NCR,ACCUM,CNT,CNTV,RSLT,RSLTV,AC);VALUE NCRV,CNTV,00011400
|
|
RSLTV,AC;BEGIN LOCAL ST1,ST2;LABEL DEBLANK,GETCHR,NUMBER,EXIT,FINIS;LABE00011500
|
|
L L;SI~NCRV;DI~RSLT;DI~DI+7;CI~CI+RSLTV;GO TO FINIS;GO TO FINIS;GO TO FI00011600
|
|
NIS;GO TO NUMBER;GO TO FINIS;GO TO GETCHR;GO TO FINIS;DEBLANK:IF SC=" "T00011700
|
|
HEN BEGIN L:SI~SI+1;IF SC=" "THEN GO TO L;END;GO TO FINIS;GETCHR:DS~LIT"00011800
|
|
2";TALLY~1;SI~SI+1;GO TO EXIT;NUMBER:TALLY~63;DS~LIT"3";AC(TALLY~TALLY+100011900
|
|
;IF SC<"0"THEN JUMP OUT TO EXIT;SI~SI+1);EXIT:ST1~TALLY;TALLY~TALLY+CNTV00012000
|
|
;ST2~TALLY;DI~CNT;SI~LOC ST2;DS~WDS;DI~ACCUM;SI~SI-3;DS~3CHR;DI~DI+CNTV;00012100
|
|
SI~NCRV;DS~ST1 CHR;FINIS:DI~NCR;ST1~SI;SI~LOC ST1;DS~WDS;END OF SCAN;PRO00012200
|
|
CEDURE READACARD;BEGIN READ(CARD,10,IMAG[*]);NCR~SETUP(IMAG[0],PRNT[0],L00012300
|
|
CR);WRITE(LINE,15,PRNT[*]);END OF READACARD;PROCEDURE SCANNER;BEGIN LABE00012400
|
|
L L;L:SCAN(NCR,NCR,ACCUM[1],CNT,CNT,RSLT,RSLT,63-CNT);IF NCR=LCR THEN BE00012500
|
|
GIN READACARD;GO TO L;END;END OF SCANNER;PROCEDURE NEXTENT;BEGIN CNT~ACC00012600
|
|
UM[1]~0;IF EXAMIN(NCR)=" "THEN BEGIN RSLT~7;SCANNER;END DEBLANK;IF EXAMI00012700
|
|
N(NCR){9THEN BEGIN RSLT~3;SCANNER;TCNT~0;IF CNT>4THEN FLAG(140)ELSE IF E00012800
|
|
LCLASS~-CONVERT<-1023THEN FLAG(140)END ELSE BEGIN RSLT~5;SCANNER;ELCLASS00012900
|
|
~ACCUM[1].[18:6];END;END OF NEXTENT;STREAM PROCEDURE MOVECODE(TEMP,FINAL00013000
|
|
,RPT,REM);VALUE RPT,REM;BEGIN LOCAL ST1;SI~TEMP;DI~FINAL;DS~REM WDS;ST1~00013100
|
|
SI;SI~LOC RPT;SI~SI+7;IF SC!"0"THEN BEGIN SI~ST1;RPT(DS~63WDS);END;END O00013200
|
|
F MOVECODE;PROCEDURE MAXWDS(INFORMAT);FORMAT INFORMAT;BEGIN OWN INTEGER 00013300
|
|
CTR,FLG;LABEL RETURN,EX;INTEGER STREAM PROCEDURE WDCTR(FMT,CTR,FLG);VALU00013400
|
|
E CTR;BEGIN LOCAL ST1;LABEL SCAN,FND,EXIT;SI~LOC CTR;SI~SI+7;DI~LOC ST1;00013500
|
|
DS~4LIT"0000";DI~DI-4;IF SC="0"THEN BEGIN SI~FMT;GO TO SCAN;END;SI~FMT;C00013600
|
|
TR(63(SI~SI+8));SCAN:63(IF 4SC=DC THEN JUMP OUT TO FND;TALLY~TALLY+1;DI~00013700
|
|
DI-4;SI~SI+4);ST1~TALLY;GO TO EXIT;FND:ST1~TALLY;SI~SI-4;DI~FLG;DS~WDS;E00013800
|
|
XIT:SI~LOC ST1;DI~LOC WDCTR;DS~WDS;END OF WDCTR;FMAX~CTR~FLG~0;RETURN:FM00013900
|
|
AX~FMAX+WDCTR(INFORMAT,CTR,FLG);IF FLG!0THEN GO TO EX;CTR~CTR+1;GO TO RE00014000
|
|
TURN;EX:END OF MAXWDS;STREAM PROCEDURE LARGER(LINE,F);VALUE F;BEGIN SI~L00014100
|
|
OC F;DI~LINE;10(DS~LIT"X");DS~41LIT" FORMAT TOO LARGE (RECEIVER FMT SIZ00014200
|
|
E IS ";DS~3DEC;DS~9LIT" WORDS) ";10(DS~LIT"X");47(DS~LIT" ");END OF LAR00014300
|
|
GER;PROCEDURE GETINT;BEGIN NEXTENT;IF ELCLASS~-ELCLASS<0THEN BEGIN FLAG(00014400
|
|
137);ELCLASS~0END END GETINT;INTEGER PROCEDURE DIVIDE(NUMBER,P1,P2);VALU00014500
|
|
E NUMBER;INTEGER P1,P2,NUMBER;BEGIN IF NUMBER<0THEN BEGIN FLAG(138);NUMB00014600
|
|
ER~0END;P1~IF NUMBER<8THEN NUMBER ELSE 8;NUMBER~NUMBER-P1;P2~IF NUMBER<800014700
|
|
THEN NUMBER ELSE 8;DIVIDE~NUMBER-P2 END DIVIDE;STREAM PROCEDURE WHIPOUT(00014800
|
|
NFWDV,W,NFWD);VALUE NFWDV;BEGIN LOCAL ST;SI~W;DI~NFWDV;DS~WDS;ST~DI;DI~N00014900
|
|
FWD;SI~LOC ST;DS~WDS;END OF WHIPOUT;BOOLEAN PROCEDURE FORMATPHRASE;BEGIN00015000
|
|
LABEL EL,EX,EXIT,L1,L2,L3;PROCEDURE EMITFORMAT(S,CODE,REPEAT,SKIP,W,W1,00015100
|
|
W2,D1,D2);VALUE S,CODE,REPEAT,SKIP,W,W1,W2,D1,D2;REAL CODE,REPEAT,SKIP,W00015200
|
|
,W1,W2,D1,D2;BOOLEAN S;BEGIN IF W>63THEN FLAG(163);W~REPEAT&W[6:42:6]&SK00015300
|
|
IP[32:42:6]&W1[28:44:4]&W2[24:44:4]&D1[20:44:4]&D2[16:44:4]&CODE[2:44:4]00015400
|
|
&REAL(S)[1:47:1];F~F+1;WHIPOUT(NFWD,W,NFWD);END EMITFORMAT;STREAM PROCED00015500
|
|
URE PACKALPHA(PLACE,LETTER,CTR);VALUE LETTER,CTR;BEGIN DI~PLACE;DS~LIT"B00015600
|
|
";SI~LOC CTR;SI~SI+7;DS~CHR;SI~PLACE;SI~SI+3;DS~5CHR;SI~LOC LETTER;SI~SI00015700
|
|
+7;DS~CHR END PACKALPHA;INTEGER REPEAT,SKIP,W,W1,W2,D1,D2,CODE;BOOLEAN S00015800
|
|
;INTEGER ST;DEFINE RRIGHT=0#,RLEFT=4#,RSTROKE=6#;DEFINE RSCALE=8#,RR=15#00015900
|
|
;DEFINE RD=0#,RX=2#,RA=4#,RI=6#,RF=8#,RE=10#,RO=12#,RL=14#;IF ELCLASS<0T00016000
|
|
HEN BEGIN REPEAT~-ELCLASS;NEXTENT;IF ELCLASS=","THEN GO EX END ELSE REPE00016100
|
|
AT~REAL(ELCLASS!"("AND ELCLASS!"<");IF ELCLASS="("OR ELCLASS="<"THEN BEG00016200
|
|
IN SKIP~F;EMITFORMAT(TRUE,RLEFT,REPEAT,1,0,0,0,0,0);DO BEGIN NEXTENT;EL:00016300
|
|
IF FORMATPHRASE THEN GO TO EX END UNTIL ELCLASS!",";WHILE ELCLASS="/"DO 00016400
|
|
BEGIN EMITFORMAT(TRUE,RSTROKE,0,1,0,0,0,0,0);NEXTENT END;IF ELCLASS!")"A00016500
|
|
ND ELCLASS!">"THEN GO TO EL;IF REPEAT=0THEN EMITFORMAT(TRUE,RSTROKE,1,0,00016600
|
|
0,0,0,0,0);S~TRUE;REPEAT~F-SKIP;CODE~RRIGHT END ELSE IF ELCLASS="O"THEN 00016700
|
|
BEGIN CODE~RO;W~8END ELSE IF ELCLASS="D"THEN BEGIN CODE~RD;W~8END ELSE I00016800
|
|
F ELCLASS=","THEN GO TO L2 ELSE IF ELCLASS="/"THEN GO TO EXIT ELSE IF EL00016900
|
|
CLASS=")"OR ELCLASS=">"THEN GO TO EXIT ELSE IF ELCLASS="S"THEN BEGIN NEX00017000
|
|
TENT;W~IF ELCLASS="-"THEN 1ELSE 0;IF ELCLASS>0THEN NEXTENT;IF ELCLASS>0T00017100
|
|
HEN BEGIN ERR(136);GO TO EXIT END ELSE REPEAT~-ELCLASS;EMITFORMAT(TRUE,R00017200
|
|
SCALE,REPEAT,0,W,0,0,0,0);GO TO L2 END ELSE IF ELCLASS="""THEN BEGIN COD00017300
|
|
E~100;ST~0;DO BEGIN SKIP~1;DO BEGIN RSLT~5;CNT~0;SCANNER;IF ELCLASS~ACCU00017400
|
|
M[1].[18:6]=CODE THEN BEGIN IF SKIP!1THEN BEGIN WHIPOUT(NFWD,W,NFWD);F~F00017500
|
|
+1;END;GO TO L2 END;CODE~""";PACKALPHA(W,ELCLASS,SKIP);END UNTIL SKIP~SK00017600
|
|
IP+1=7;WHIPOUT(NFWD,W,NFWD);F~F+1;END UNTIL(ST~ST+6)>132;GO TO EX END EL00017700
|
|
SE BEGIN CODE~ELCLASS;GETINT;W~ELCLASS;IF CODE="I"THEN BEGIN SKIP~DIVIDE00017800
|
|
(W,W1,W2);CODE~RI END ELSE IF CODE="F"THEN BEGIN CODE~RF;GO TO L1 END EL00017900
|
|
SE IF CODE="R"THEN BEGIN CODE~RR;GO TO L1 END ELSE IF CODE="E"THEN BEGIN00018000
|
|
CODE~RE;D1~1;L1:NEXTENT;IF ELCLASS!"."THEN GO TO EX;GETINT;IF DIVIDE(EL00018100
|
|
CLASS+D1,D1,D2)>0THEN GO TO EX;IF CODE=RF OR CODE=RR THEN SKIP~DIVIDE(W-00018200
|
|
ELCLASS-1,W1,W2)ELSE IF SKIP~W-ELCLASS-6<0THEN GO TO EX END ELSE IF CODE00018300
|
|
="X"THEN BEGIN CODE~RX;W1~W.[38:4];SKIP~W~W.[42:6]END ELSE IF CODE="A"TH00018400
|
|
EN BEGIN CODE~RA;W1~6;GO TO L3 END ELSE IF CODE="L"THEN BEGIN CODE~RL;W100018500
|
|
~5;L3:IF W<W1 THEN W1~W;SKIP~W-W1 END ELSE GO EX END;EMITFORMAT(S,CODE,R00018600
|
|
EPEAT,SKIP,W,W1,W2,D1,D2);L2:NEXTENT;GO TO EXIT;EX:FORMATPHRASE~TRUE;ERR00018700
|
|
(136);EXIT:END FORMATPHRASE;ERRTOG~FALSE;READACARD;NFWD~FMTF(GENF);F~0;D00018800
|
|
O NEXTENT UNTIL ELCLASS="("OR ELCLASS=";";IF ELCLASS!"("THEN BEGIN FLAG(00018900
|
|
32);NCR~TIME(1);DO F~0UNTIL TIME(1)-NCR>200;F~@40*2;END;ERRTOG~FORMATPHR00019000
|
|
ASE;IF ELCLASS=";"THEN GO TO FINISHED;FLAG(119);FINISHED:TATTLE(F,PRNT[000019100
|
|
]);WRITE(LINE,15,PRNT[*]);MAXWDS(INFORMAT);IF F>FMAX THEN BEGIN LARGER(P00019200
|
|
RNT[0],FMAX);WRITE(LINE,15,PRNT[*]);ERRTOG~TRUE;END;NCR~0&(F+1)[24:39:9]00019300
|
|
;WHIPOUT(NFWD,NCR,NFWD);CNT~(F+1)DIV 63;TCNT~(F+1)MOD 63;IF ERRTOG THEN 00019400
|
|
BEGIN NCR~TIME(1);DO F~0UNTIL TIME(1)-NCR>200;F~@40*2;END;MOVECODE(GENF,00019500
|
|
INFORMAT,CNT,TCNT);END OF OBJECTFMTGEN; 00019600
|
|
PROCEDURE ERROR(N); VALUE N; INTEGER N; BEGIN 00019700
|
|
FORMAT F(///////"STOP / PAUSE NO. ", I5); 00019800
|
|
WRITE (LINE, F, N); GO TO FINIS END; 00019900
|
|
REAL PROCEDURE INT(ARG1); VALUE ARG1; REAL ARG1; 00020000
|
|
BEGIN INT~(SIGN(ARG1)|ENTIER(ABS(ARG1))) END; 00020100
|
|
REAL PROCEDURE MAX(ARG1,ARG2); VALUE ARG1,ARG2; REAL ARG1,ARG2; 00020200
|
|
BEGIN MAX~(IF ARG1}ARG2 THEN ARG1 ELSE ARG2) END; 00020300
|
|
REAL PROCEDURE MIN(ARG1,ARG2); VALUE ARG1,ARG2; REAL ARG1,ARG2; 00020400
|
|
BEGIN MIN~(IF ARG1{ARG2 THEN ARG1 ELSE ARG2) END; 00020500
|
|
COMMENT ************************** MATINV ****************; 00020600
|
|
PROCEDURE MATINVQ(A,N,INQ,V); 00020700
|
|
VALUE N; 00020800
|
|
INTEGER N; 00020900
|
|
INTEGER ARRAY INQ[0]; 00021000
|
|
REAL ARRAY A[0,0],V[0]; 00021100
|
|
BEGIN 00021200
|
|
OWN REAL ARRAY U[0:36]; 00021300
|
|
OWN INTEGER I, K, L, J; 00021400
|
|
OWN REAL D, P, T, H, Y; 00021500
|
|
LABEL DUMMY,L7; 00021600
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL N DO BEGIN 00021700
|
|
V[I] ~ A[I,I]; 00021800
|
|
INQ[I] ~ 0 END; 00021900
|
|
D ~ 1; 00022000
|
|
K ~ 1; 00022100
|
|
FOR L ~ 1, L+1 STEP 1 UNTIL N DO BEGIN 00022200
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL K DO BEGIN 00022300
|
|
U[I] ~ A[I,K]; 00022400
|
|
A[I,K] ~ 0 END; 00022500
|
|
P ~ U[K]; 00022600
|
|
FOR I ~ K, I+1 STEP 1 UNTIL N DO BEGIN 00022700
|
|
U[I] ~ A[K,I]; 00022800
|
|
A[K,I] ~ 0 END; 00022900
|
|
T ~ H; 00023000
|
|
H ~ -1@20; 00023100
|
|
INQ[K] ~ 1; 00023200
|
|
U[K] ~ -1; 00023300
|
|
D ~ D|P; 00023400
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL N DO BEGIN 00023500
|
|
Y ~ U[I]/P; 00023600
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL I DO BEGIN 00023700
|
|
A[J,I] ~ A[J,I]-Y|U[J] END; 00023800
|
|
IF INQ[I]>0 THEN GO TO L7; 00023900
|
|
IF H}A[I,I]/V[I] THEN GO TO L7; 00024000
|
|
H ~ A[I,I]/V[I]; 00024100
|
|
K ~ I; 00024200
|
|
L7: END; 00024300
|
|
END; 00024400
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL N DO BEGIN 00024500
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL I DO BEGIN 00024600
|
|
A[J,I] ~ -A[J,I]; 00024700
|
|
A[I,J] ~ A[J,I] END; 00024800
|
|
END; 00024900
|
|
GO TO DUMMY; 00025000
|
|
DUMMY: END; 00025100
|
|
00025200
|
|
COMMENT ************************** GRPSEL ****************; 00025300
|
|
PROCEDURE GRPSELQ(M); 00025400
|
|
INTEGER M; 00025500
|
|
BEGIN 00025600
|
|
OWN REAL ARRAY B[0:6]; 00025700
|
|
OWN INTEGER AVISKIP; 00025800
|
|
OWN INTEGER I, ISQ; 00025900
|
|
OWN REAL FBQ, A, O, STARQ; 00026000
|
|
FORMAT FL4000(/" ",X14,"ILLEGAL OPERATION OR RELATION ",A2, 00026100
|
|
". PROGRAM WILL PROCEED TO NEXT JOB, IF ANY, OR TERMI","NATE." 00026200
|
|
); 00026300
|
|
LIST LIST1(RELQ[I,M]); 00026400
|
|
LABEL DUMMY,L500,L96,L2,L4,L6,L8,L10,L11,L20,L50,L90,L100,L105,L110, 00026500
|
|
L125,L145,L147,L150,L152,L170,L175,L222,L300,L333,L350,L104; 00026600
|
|
SWITCH ASSIGN~L105,L125; 00026700
|
|
FBQ ~ 1; 00026800
|
|
AVISKIP ~ 1; 00026900
|
|
A ~ (+"A"); 00027000
|
|
O ~ (+"O"); 00027100
|
|
STARQ ~ (+"*"); 00027200
|
|
L500: FOR I ~ 1, I+1 STEP 1 UNTIL 6 DO BEGIN 00027300
|
|
ISQ ~ NSUBQ[I,M]; 00027400
|
|
IF RELQ[I,M]=(+"GT") THEN GO TO L2; 00027500
|
|
IF RELQ[I,M]=(+"LT") THEN GO TO L4; 00027600
|
|
IF RELQ[I,M]=(+"LE") THEN GO TO L6; 00027700
|
|
IF RELQ[I,M]=(+"GE") THEN GO TO L8; 00027800
|
|
IF RELQ[I,M]=(+"EQ") THEN GO TO L10; 00027900
|
|
IF RELQ[I,M]=(+"NE") THEN GO TO L11; 00028000
|
|
IF RELQ[I,M]=(+" ") THEN GO TO L100; 00028100
|
|
L96: WRITE(LINE,FL4000,LIST1); 00028200
|
|
M ~ -6; 00028300
|
|
GO TO DUMMY; 00028400
|
|
L2: IF DATAQ[ISQ]>CONTQ[I,M] THEN GO TO L20 ELSE GO TO L50; 00028500
|
|
L4: IF DATAQ[ISQ]}CONTQ[I,M] THEN GO TO L50 ELSE GO TO L20; 00028600
|
|
L6: IF DATAQ[ISQ]>CONTQ[I,M] THEN GO TO L50 ELSE GO TO L20; 00028700
|
|
L8: IF DATAQ[ISQ]}CONTQ[I,M] THEN GO TO L20 ELSE GO TO L50; 00028800
|
|
L10: IF DATAQ[ISQ]=CONTQ[I,M] THEN GO TO L20 ELSE GO TO L50; 00028900
|
|
L11: IF DATAQ[ISQ]=CONTQ[I,M] THEN GO TO L50; 00029000
|
|
L20: B[I] ~ 1; 00029100
|
|
GO TO L90; 00029200
|
|
L50: B[I] ~ 0; 00029300
|
|
L90: END; 00029400
|
|
L100: GO TO ASSIGN[AVISKIP]; 00029500
|
|
L105: IF OPERQ[1,M]=A THEN GO TO L147 ELSE GO TO L145; 00029600
|
|
L110: FBQ ~ FBQ|B[1]; 00029700
|
|
GO TO L175; 00029800
|
|
L125: IF OPERQ[6,M-1]=A THEN GO TO L110 ELSE GO TO L150; 00029900
|
|
L145: IF OPERQ[1,M]!O THEN GO TO L170; 00030000
|
|
L147: FBQ ~ B[1]; 00030100
|
|
GO TO L175; 00030200
|
|
L150: IF OPERQ[6,M-1]=O THEN GO TO L152; 00030300
|
|
I ~ 6; 00030400
|
|
RELQ[6,M] ~ OPERQ[6,M-1]; 00030500
|
|
GO TO L96; 00030600
|
|
L152: IF FBQ>0 THEN GO TO L175 ELSE GO TO L147; 00030700
|
|
L170: FBQ ~ B[1]; 00030800
|
|
GO TO L350; 00030900
|
|
L175: FOR I ~ 1, I+1 STEP 1 UNTIL 5 DO BEGIN 00031000
|
|
IF OPERQ[I,M]!A THEN GO TO L222; 00031100
|
|
FBQ ~ FBQ|B[I+1]; 00031200
|
|
GO TO L300; 00031300
|
|
L222: IF OPERQ[I,M]!O THEN GO TO L333; 00031400
|
|
IF FBQ>0 THEN GO TO L300; 00031500
|
|
FBQ ~ B[I+1]; 00031600
|
|
L300: END; 00031700
|
|
IF OPERQ[6,M]=STARQ THEN GO TO L350; 00031800
|
|
M ~ M+1; 00031900
|
|
AVISKIP ~ 2; 00032000
|
|
GO TO L500; 00032100
|
|
L333: IF OPERQ[I,M]=STARQ THEN GO TO L350; 00032200
|
|
RELQ[I,M] ~ OPERQ[I,M]; 00032300
|
|
GO TO L96; 00032400
|
|
L350: IF FBQ{0 THEN GO TO DUMMY; 00032500
|
|
DATAQ[100] ~ NGQ[M]; 00032600
|
|
L104: GO TO DUMMY; 00032700
|
|
DUMMY: END; 00032800
|
|
00032900
|
|
COMMENT ************************** PATTY2 ****************; 00033000
|
|
PROCEDURE PATTY2Q(A,N,NAMESQ); 00033100
|
|
INTEGER N; 00033200
|
|
INTEGER ARRAY NAMESQ[0]; 00033300
|
|
REAL ARRAY A[0,0]; 00033400
|
|
BEGIN 00033500
|
|
OWN INTEGER ARRAY NNQ[0:8]; 00033600
|
|
INTEGER DX1; 00033700
|
|
OWN INTEGER ITQ, KKQ, K1Q, K2Q, JXQ, LLLQ, LLQ, JJQ, I; 00033800
|
|
FORMAT FL300(/" ",X13,A6,7(X8,A6)/), 00033900
|
|
FL20(" ",A6,X1,8R14.4); 00034000
|
|
LIST LIST1(FOR DX1 ~ 1 STEP 1 UNTIL LLLQ DO NNQ[DX1]), 00034100
|
|
LIST2(NAMESQ[I],FOR DX1 ~ K1Q STEP 1 UNTIL K2Q DO A[DX1, 00034200
|
|
I]); 00034300
|
|
LABEL DUMMY,L5,L3; 00034400
|
|
ITQ ~ 1; 00034500
|
|
KKQ ~ 0; 00034600
|
|
K1Q ~ ITQ; 00034700
|
|
K2Q ~ MIN(8,N); 00034800
|
|
L5: KKQ ~ KKQ+8; 00034900
|
|
IF N{KKQ THEN GO TO L3; 00035000
|
|
ITQ ~ ITQ+1; 00035100
|
|
GO TO L5; 00035200
|
|
L3: FOR JXQ ~ 1, JXQ+1 STEP 1 UNTIL ITQ DO BEGIN 00035300
|
|
LLLQ ~ K2Q-K1Q+1; 00035400
|
|
LLQ ~ 0; 00035500
|
|
FOR JJQ ~ K1Q, JJQ+1 STEP 1 UNTIL K2Q DO BEGIN 00035600
|
|
LLQ ~ LLQ+1; 00035700
|
|
NNQ[LLQ] ~ NAMESQ[JJQ] END; 00035800
|
|
WRITE(LINE,FL300,LIST1); 00035900
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL N DO BEGIN 00036000
|
|
WRITE(LINE,FL20,LIST2); 00036100
|
|
END; 00036200
|
|
K1Q ~ K2Q+1; 00036300
|
|
K2Q ~ K1Q+7; 00036400
|
|
K2Q ~ MIN(K2Q,N); 00036500
|
|
END; 00036600
|
|
GO TO DUMMY; 00036700
|
|
DUMMY: END; 00036800
|
|
00036900
|
|
COMMENT ************************** TG41 ****************; 00037000
|
|
PROCEDURE TG41Q(IIQ,M); 00037100
|
|
VALUE M; 00037200
|
|
INTEGER IIQ,M; 00037300
|
|
BEGIN 00037400
|
|
DEFINE NTGQ =COMMON[4]#; 00037500
|
|
DEFINE NCASEQ =COMMON[5]#; 00037600
|
|
OWN INTEGER I, JOKEQ, NWQ, NAAQ, NBQ, NSKIPQ; 00037700
|
|
OWN REAL SAMPXQ, PI2Q, BBNQ, A, B; 00037800
|
|
FORMAT FL4001(/" TRANSGENERATOR CARD",I3, 00037900
|
|
" HAS VARIABLE NUMBERS TOO LARGE FOR PROGRAM."), 00038000
|
|
FL4000(/" DATA OF VARIABLE",I4," VIOLATES RESTRICTION FOR CODE", 00038100
|
|
I3,". THIS WAS FOR TREATMENT GROUP",I3," SAMPLE",I4), 00038200
|
|
FL4002(" THE DATA WILL REMAIN UNCHANGED."); 00038300
|
|
LIST LIST1(I), 00038400
|
|
LIST2(NAAQ,JUMPQ[I],IIQ,M); 00038500
|
|
LABEL DUMMY,L33,L1,L11,L12,L2,L13,L14,L3,L4,L5,L18,L6,L24,L287,L29, 00038600
|
|
L7,L8,L9,L10,L111,L110,L120,L130,L140,L150,L160,L170,L180, 00038700
|
|
L190,L20,L21,L22,L230,L97,L98,L99,L991,L1000; 00038800
|
|
SWITCH SWGO1~L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L111,L111,L111,L111,L150, 00038900
|
|
L111,L170,L180,L190,L20,L21,L22,L230; 00039000
|
|
SWITCH SWGO2~L110,L120,L130,L140,L150,L160; 00039100
|
|
REAL PROCEDURE ASNQ(ARGX); 00039200
|
|
VALUE ARGX; 00039300
|
|
REAL ARGX; 00039400
|
|
BEGIN ASNQ ~ ARCTAN(ARGX/SQRT(1-ARGX*2)) END; 00039500
|
|
SAMPXQ ~ NCASEQ; 00039600
|
|
PI2Q ~ 1.57079633; 00039700
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NTGQ DO BEGIN 00039800
|
|
JOKEQ ~ JUMPQ[I]; 00039900
|
|
NWQ ~ NEWQ[I]; 00040000
|
|
IF NWQ}100 THEN GO TO L97; 00040100
|
|
NAAQ ~ NAQ[I]; 00040200
|
|
IF NAAQ}100 THEN GO TO L97; 00040300
|
|
NBQ ~ BNQ[I]; 00040400
|
|
BBNQ ~ BNQ[I]; 00040500
|
|
IF JOKEQ{17 THEN GO TO L33; 00040600
|
|
JOKEQ ~ JOKEQ-2; 00040700
|
|
IF JOKEQ{22 THEN GO TO L33; 00040800
|
|
JOKEQ ~ 23; 00040900
|
|
L33: GO TO SWGO1[JOKEQ]; 00041000
|
|
L1: IF (XPR ~ DATAQ[NAAQ])>0 THEN GO TO L12; 00041100
|
|
IF XPR<0 THEN GO TO L99; 00041200
|
|
L11: DATAQ[NWQ] ~ 0; 00041300
|
|
GO TO L1000; 00041400
|
|
L12: DATAQ[NWQ] ~ SQRT(DATAQ[NAAQ]); 00041500
|
|
GO TO L1000; 00041600
|
|
L2: IF (XPR ~ DATAQ[NAAQ])>0 THEN GO TO L14; 00041700
|
|
IF XPR<0 THEN GO TO L99; 00041800
|
|
L13: DATAQ[NWQ] ~ 1; 00041900
|
|
GO TO L1000; 00042000
|
|
L14: DATAQ[NWQ] ~ SQRT(DATAQ[NAAQ])+SQRT(DATAQ[NAAQ]+1); 00042100
|
|
GO TO L1000; 00042200
|
|
L3: IF DATAQ[NAAQ]{0 THEN GO TO L99; 00042300
|
|
DATAQ[NWQ] ~ 0.4342944819|LN(DATAQ[NAAQ]); 00042400
|
|
GO TO L1000; 00042500
|
|
L4: DATAQ[NWQ] ~ EXP(DATAQ[NAAQ]); 00042600
|
|
GO TO L1000; 00042700
|
|
L5: IF (XPR ~ DATAQ[NAAQ])=0 THEN GO TO L11; 00042800
|
|
IF XPR<0 THEN GO TO L99; 00042900
|
|
IF (XPR ~ DATAQ[NAAQ]-1)>0 THEN GO TO L99; 00043000
|
|
IF XPR<0 THEN GO TO L18; 00043100
|
|
DATAQ[NWQ] ~ PI2Q; 00043200
|
|
GO TO L1000; 00043300
|
|
L18: A ~ SQRT(DATAQ[NAAQ]); 00043400
|
|
DATAQ[NWQ] ~ ASNQ(A); 00043500
|
|
GO TO L1000; 00043600
|
|
L6: A ~ DATAQ[NAAQ]/(SAMPXQ+1); 00043700
|
|
B ~ A+1/(SAMPXQ+1); 00043800
|
|
IF (XPR ~ A)>0 THEN GO TO L24; 00043900
|
|
IF XPR<0 THEN GO TO L99; 00044000
|
|
DATAQ[NWQ] ~ ASNQ(SQRT(B)); 00044100
|
|
GO TO L1000; 00044200
|
|
L24: IF (XPR ~ B)>0 THEN GO TO L29; 00044300
|
|
IF XPR<0 THEN GO TO L99; 00044400
|
|
IF (XPR ~ A-1)>0 THEN GO TO L99; 00044500
|
|
IF XPR=0 THEN GO TO L287; 00044600
|
|
DATAQ[NWQ] ~ ASNQ(SQRT(A))|2; 00044700
|
|
GO TO L1000; 00044800
|
|
L287: DATAQ[NWQ] ~ 3.14159265; 00044900
|
|
GO TO L1000; 00045000
|
|
L29: A ~ SQRT(A); 00045100
|
|
B ~ SQRT(B); 00045200
|
|
IF A>1 THEN GO TO L99; 00045300
|
|
IF B>1 THEN GO TO L99; 00045400
|
|
DATAQ[NWQ] ~ ASNQ(A)+ASNQ(B); 00045500
|
|
GO TO L1000; 00045600
|
|
L7: IF DATAQ[NAAQ]=0 THEN GO TO L99; 00045700
|
|
DATAQ[NWQ] ~ 1/DATAQ[NAAQ]; 00045800
|
|
GO TO L1000; 00045900
|
|
L8: DATAQ[NWQ] ~ DATAQ[NAAQ]+BBNQ; 00046000
|
|
GO TO L1000; 00046100
|
|
L9: DATAQ[NWQ] ~ DATAQ[NAAQ]|BBNQ; 00046200
|
|
GO TO L1000; 00046300
|
|
L10: IF (XPR ~ DATAQ[NAAQ])=0 THEN GO TO L11; 00046400
|
|
IF XPR<0 THEN GO TO L99; 00046500
|
|
DATAQ[NWQ] ~ DATAQ[NAAQ]*BBNQ; 00046600
|
|
GO TO L1000; 00046700
|
|
L111: IF NBQ}100 THEN GO TO L97; 00046800
|
|
NSKIPQ ~ JOKEQ-10; 00046900
|
|
GO TO SWGO2[NSKIPQ]; 00047000
|
|
L110: DATAQ[NWQ] ~ DATAQ[NAAQ]+DATAQ[NBQ]; 00047100
|
|
GO TO L1000; 00047200
|
|
L120: DATAQ[NWQ] ~ DATAQ[NAAQ]-DATAQ[NBQ]; 00047300
|
|
GO TO L1000; 00047400
|
|
L130: DATAQ[NWQ] ~ DATAQ[NAAQ]|DATAQ[NBQ]; 00047500
|
|
GO TO L1000; 00047600
|
|
L140: IF DATAQ[NBQ]=0 THEN GO TO L98; 00047700
|
|
DATAQ[NWQ] ~ DATAQ[NAAQ]/DATAQ[NBQ]; 00047800
|
|
GO TO L1000; 00047900
|
|
L150: IF DATAQ[NAAQ]}BBNQ THEN GO TO L13 ELSE GO TO L11; 00048000
|
|
L160: IF DATAQ[NAAQ]}DATAQ[NBQ] THEN GO TO L13 ELSE GO TO L11; 00048100
|
|
L170: IF DATAQ[NAAQ]{0 THEN GO TO L99; 00048200
|
|
DATAQ[NWQ] ~ LN(DATAQ[NAAQ]); 00048300
|
|
GO TO L1000; 00048400
|
|
L180: DATAQ[NWQ] ~ SIN(DATAQ[NAAQ]); 00048500
|
|
GO TO L1000; 00048600
|
|
L190: DATAQ[NWQ] ~ COS(DATAQ[NAAQ]); 00048700
|
|
GO TO L1000; 00048800
|
|
L20: IF (DATAQ[NAAQ]-PI2Q)|(-PI2Q-DATAQ[NAAQ])>0 THEN GO TO L99; 00048900
|
|
DATAQ[NWQ] ~ ARCTAN(DATAQ[NAAQ]); 00049000
|
|
GO TO L1000; 00049100
|
|
L21: IF (XPR ~ DATAQ[NAAQ])=0 THEN GO TO L11; 00049200
|
|
IF XPR<0 THEN GO TO L99; 00049300
|
|
IF NBQ}100 THEN GO TO L97; 00049400
|
|
DATAQ[NWQ] ~ DATAQ[NAAQ]*DATAQ[NBQ]; 00049500
|
|
GO TO L1000; 00049600
|
|
L22: IF (XPR ~ BBNQ)=0 THEN GO TO L11; 00049700
|
|
IF XPR<0 THEN GO TO L99; 00049800
|
|
DATAQ[NWQ] ~ BBNQ*DATAQ[NAAQ]; 00049900
|
|
GO TO L1000; 00050000
|
|
L230: IF DATAQ[NAAQ]!0 THEN GO TO L1000; 00050100
|
|
IF (ABS(10)|SIGN(DATAQ[NAAQ]))}0 THEN GO TO L1000; 00050200
|
|
DATAQ[NWQ] ~ BBNQ; 00050300
|
|
GO TO L1000; 00050400
|
|
L97: WRITE(LINE,FL4001,LIST1); 00050500
|
|
GO TO L991; 00050600
|
|
L98: NAAQ ~ NBQ; 00050700
|
|
L99: WRITE(LINE,FL4000,LIST2); 00050800
|
|
L991: WRITE(LINE,FL4002); 00050900
|
|
L1000: END; 00051000
|
|
GO TO DUMMY; 00051100
|
|
DUMMY: END; 00051200
|
|
00051300
|
|
COMMENT ************************** TPWD ****************; 00051400
|
|
00051500
|
|
COMMENT ************************** VFCHCK ****************; 00051600
|
|
PROCEDURE VFCHCKQ(NVFQ); 00051700
|
|
INTEGER NVFQ; 00051800
|
|
BEGIN 00051900
|
|
FORMAT FL4000(/" ",X23, 00052000
|
|
"NUMBER OF VARIABLE FORMAT CARDS INCORRECTLY SPECIFIE", 00052100
|
|
"D, ASSUMED TO BE 1."); 00052200
|
|
LABEL DUMMY,L10,L50,L20; 00052300
|
|
IF NVFQ>0 THEN GO TO L20; 00052400
|
|
L10: WRITE(LINE,FL4000); 00052500
|
|
NVFQ ~ 1; 00052600
|
|
L50: GO TO DUMMY; 00052700
|
|
L20: IF NVFQ>10 THEN GO TO L10 ELSE GO TO DUMMY; 00052800
|
|
DUMMY: END; 00052900
|
|
00053000
|
|
COMMENT ************************** MAINPRO ****************; 00053100
|
|
PROCEDURE MAINPRO; 00053200
|
|
BEGIN 00053300
|
|
DEFINE LHQ =COMMON[1]#; 00053400
|
|
DEFINE IERRORQ =COMMON[2]#; 00053500
|
|
DEFINE NVARQ =COMMON[3]#; 00053600
|
|
DEFINE NTGQ =COMMON[4]#; 00053700
|
|
DEFINE NCASEQ =COMMON[5]#; 00053800
|
|
REAL ARRAY ARRAY1[0:1]; 00053900
|
|
DEFINE IA1Q =ARRAY1[1]#; 00054000
|
|
DEFINE A123Q =ARRAY1[1]#; 00054100
|
|
REAL ARRAY ARRAY2[0:1]; 00054200
|
|
DEFINE IOUTQ =ARRAY2[1]#; 00054300
|
|
DEFINE OUTQ =ARRAY2[1]#; 00054400
|
|
REAL ARRAY ARRAY3[0:1]; 00054500
|
|
DEFINE IP1Q =ARRAY3[1]#; 00054600
|
|
DEFINE P123Q =ARRAY3[1]#; 00054700
|
|
REAL ARRAY ARRAY4[0:1]; 00054800
|
|
DEFINE A421Q =ARRAY4[1]#; 00054900
|
|
DEFINE IA6Q =ARRAY4[1]#; 00055000
|
|
REAL ARRAY ARRAY5[0:1]; 00055100
|
|
DEFINE A126Q =ARRAY5[1]#; 00055200
|
|
DEFINE IA4Q =ARRAY5[1]#; 00055300
|
|
REAL ARRAY ARRAY6[0:1]; 00055400
|
|
DEFINE A124Q =ARRAY6[1]#; 00055500
|
|
DEFINE IA2Q =ARRAY6[1]#; 00055600
|
|
REAL ARRAY ARRAY7[0:1]; 00055700
|
|
DEFINE A521Q =ARRAY7[1]#; 00055800
|
|
DEFINE IA7Q =ARRAY7[1]#; 00055900
|
|
REAL ARRAY ARRAY8[0:1]; 00056000
|
|
DEFINE A321Q =ARRAY8[1]#; 00056100
|
|
DEFINE IA5Q =ARRAY8[1]#; 00056200
|
|
REAL ARRAY ARRAY9[0:1]; 00056300
|
|
DEFINE A125Q =ARRAY9[1]#; 00056400
|
|
DEFINE IA3Q =ARRAY9[1]#; 00056500
|
|
REAL ARRAY ARRAY10[0:1]; 00056600
|
|
DEFINE KREPQ =ARRAY10[1]#; 00056700
|
|
DEFINE REPQ =ARRAY10[1]#; 00056800
|
|
OWN INTEGER ARRAY NSAMQ[0:99], LLLQ[0:35], KKKQ[0:36], 00056900
|
|
NAMESQ[0:36], INDEX1Q[0:36], INDEX2Q[0:36]; 00057000
|
|
OWN REAL ARRAY SLQ[0:26], FMTQ[0:120], X[0:36], 00057100
|
|
SSVARQ[0:36,0:99], TOTXXQ[0:36,0:36], TOTXYQ[0:36], 00057200
|
|
TREXXQ[0:36,0:36], TREXYQ[0:36], ERRXXQ[0:36,0:36], 00057300
|
|
ERRXYQ[0:36], B[0:35], C[0:35], D[0:35], 00057400
|
|
SEBQ[0:35], SECQ[0:35], SEDQ[0:35], ADYQ[0:99], 00057500
|
|
SEADYQ[0:99]; 00057600
|
|
INTEGER DX1; 00057700
|
|
OWN INTEGER AVNSKIP, AVLSKIP, AVMUD; 00057800
|
|
OWN INTEGER ITAPEQ, IT3Q, NTAPEQ, KODEQ, NGRPSQ, NCARDQ, NCOVQ, NADDQ, 00057900
|
|
NDVQ, INAMQ, LYNNQ, MTAPEQ, KVFQ, I, NVAR1Q, LRQ, J, NCARDSQ, 00058000
|
|
N2Q, N1Q, NCRDSQ, K1Q, NNQ, NCOQ, KKQ, JJQ, JXQ, N3Q, MESSQ, 00058100
|
|
IIQ, LGQ, M, K, N, L, NTQ, LTQ, N4Q, N5Q, N6Q; 00058200
|
|
OWN REAL CODEQ, BIGQ, T, TOTYYQ, TREYYQ, ERRYYQ, SSDTREQ, SSDTOTQ, 00058300
|
|
SSDERRQ, SSATREQ, SSATOTQ, SSAERRQ, TESTQ, DN4Q, DN5Q, DN6Q, 00058400
|
|
DN1Q, SMATREQ, SMAERRQ, ADJTESQ, FTESTQ, SMATOTQ, T1Q; 00058500
|
|
COMMENT THE FOLLOWING SUBROUTINES ARE REQUIRED: 00058600
|
|
REMOVE, TPWD, VFCHCK, GRPSEL, TG41, PATTY2, MATINV; 00058700
|
|
FORMAT FL102(" BMD04V-ANALYSIS OF COVARIANCE-MULTIPLE COVARIATES -", 00058800
|
|
" VERSION OF JUNE 17, 1964", 00058900
|
|
/"UNIVERSITY OF DENVER MODIFIED VERSION, W.H.E. AND ", 00059000
|
|
"J.L.H., MARCH, 1965"//), 00059100
|
|
FL100(2A6,I2,I5,2I2,I3,I2,A3,I3,A3,I2,X27,3I2), 00059200
|
|
FL403("PROBLEM CARD INCORRECTLY ORDERED OR PUNCHED."), 00059300
|
|
FL103(" PROBLEM CODE",20("."),A6/ 00059400
|
|
" NUMBER OF TREATMENT GROUPS......",I6/ 00059500
|
|
" TOTAL NUMBER OF CASES",11("."),I6/ 00059600
|
|
" NUMBER OF CARDS PER CASE",8("."),I6/ 00059700
|
|
" NUMBER OF ENTERING VARIABLES....",I6/ 00059800
|
|
" NUMBER OF VARIABLES ADDED",7("."),I6/ 00059900
|
|
" INDEX OF THE DEPENDENT VARIABLE.",I6/" PRINT DATA INPUT",16( 00060000
|
|
"."),X3,A3/" NUMBER OF VARIABLES NAMED",7("."),I6/ 00060100
|
|
" USE DATA CARDS OF LAST PROBLEM..",X3,A3/ 00060200
|
|
" NUMBER OF GROUP DEFINITION CARDS",I6/ 00060300
|
|
" NUMBER OF TRANSGENERATION CARDS.",I6/ 00060400
|
|
" SPECIFIED BCD TAPE NUMBER.......",I6/ 00060500
|
|
" NUMBER OF VARIABLE FORMAT CARDS.",I6), 00060600
|
|
FL104(" TRANS-GENERATION CARDS"//), 00060700
|
|
FL105(" CARD NEW TRANS OLD CONST."/ 00060800
|
|
" NO. VAR. CODE VAR(A) OR VAR(B)"//), 00060900
|
|
FL106(A6,I3,I2,I3,I6 ), 00061000
|
|
FL107(I4,I5,I6,I5,X4,R9.4), 00061100
|
|
FL150(/" ",X29,"TRANSGENERATION CARD",I3, 00061200
|
|
" HAS INVALID CODE FOR THIS PROGRAM."), 00061300
|
|
FL110(/" GROUP DEFINITION CARDS"), 00061400
|
|
FL111(A6,I2,6(I2,A2,R5.0,A1)), 00061500
|
|
FL112(//" A CASE IS IN GROUP ",I2," IF,"), 00061600
|
|
FL113(" VAR(",I2,") IS ",A2," ",R9.4," ",A1), 00061700
|
|
FL108(A6,22I3), 00061800
|
|
FL101(A3,X3,7(I4,A6)), 00061900
|
|
FL109(12A6), 00062000
|
|
FL114(13A6,A2), 00062100
|
|
FL151(A6,33I2), 00062200
|
|
FL115(/" GROUP NO. SAMPLE"/" SPECIFIED ASSIGNED* SIZE"/ 00062300
|
|
/), 00062400
|
|
FL116(X5,I2,X7,I2,X4,I5), 00062500
|
|
FL415(//" DATA INPUT (LAST VALUE FOR EACH CASE IS TREATMENT G", 00062600
|
|
"ROUP NUMBER)"), 00062700
|
|
FL418(/" CASE NUMBER ",I5), 00062800
|
|
FL250(" ",10R11.4), 00062900
|
|
FL117(///" VARIABLE MEANS FOR EACH GROUP"//), 00063000
|
|
FL888(" X(",I2,")"), 00063100
|
|
FL777(A6), 00063200
|
|
FL118(/" GROUP NO. ",I2//), 00063300
|
|
FL119(6(" (",A6,X1,R10.4,")")/), 00063400
|
|
FL120(//" SUMS OF SQUARES AND CROSS PRODUCT MATRIX"), 00063500
|
|
FMT1(40I2), 00063600
|
|
FL121(" FOR TOTAL."//), 00063700
|
|
FL122(" FOR TREATMENT."//), 00063800
|
|
FL123(" FOR ERROR."//), 00063900
|
|
FL124(//" INVERSE OF THE COVARIATES"/" CROSS PRODUCT MATRIX"), 00064000
|
|
FL125(" ",X35,"ANALYSIS OF COVARIANCE TABLE"/), 00064100
|
|
FL126(" ",93("*")), 00064200
|
|
FL127(" *",X11,"I",X7,"I",3(X15,"I"),X7,"I",X15,"*"), 00064300
|
|
FL128(" *",X11,"I",X7,"I",X15, 00064400
|
|
"I SUM-SQUARES I SUM-SQUARES I",X7,"I",X15,"*"), 00064500
|
|
FL129(" * SOURCE I DF I YY I (DUE) ", 00064600
|
|
" I (ABOUT) I DF I MEAN-SQUARE *"), 00064700
|
|
FL130(" *",91("-"),"*"), 00064800
|
|
FL131(" * TREATMENT I",X7,"I",3(X15,"I"),X7,"I",X15,"*"), 00064900
|
|
FL132(" * (BETWEEN) I ",I5," ","I ",R13.4," ",2("I ",X13," "), 00065000
|
|
"I ",X5," I ",X13," *"), 00065100
|
|
FL133(" * ERROR I",X7,"I",3(X15,"I"),X7,"I",X15,"*"), 00065200
|
|
FL134(" * (WITHIN) I ",I5,X1,3("I ",R13.4," "),"I ",I5," I ", 00065300
|
|
R13.4," *"), 00065400
|
|
FL136(" * + ERROR I",X7,"I",3(X15,"I"),X7,"I",X15,"*"), 00065500
|
|
FL137(" * (TOTAL) I ",I5,X1,3("I ",R13.4," "),"I",I6," I",X15, 00065600
|
|
"*"), 00065700
|
|
FL138(" *DIFFERENCE FOR TESTING ADJUSTED TREATMENT MEANS...", 00065800
|
|
".I ",R13.4," I ",I5," I ",R13.4," *"), 00065900
|
|
FL139(///" NULL HYPOTHESIS. NO DIFFERENCE AMONG TREATMENTS AFT", 00066000
|
|
"ER"/X18,"ADJUSTING WITH COVARIATES."//), 00066100
|
|
FL140(X18,"F(",I5,",",I5,")=",R8.3//), 00066200
|
|
FL135(//" TABLE OF COEFFICIENTS"//), 00066300
|
|
FL142(" ",X16,"TREATMENT (BETWEEN)"), 00066400
|
|
FL152(" ",X8,"COEFFICIENT"//), 00066500
|
|
FL144(" ",A6,3(X1,R13.4)), 00066600
|
|
FL141(//" TABLE OF COEFFICIENTS,STANDARD ERRORS AND COMPUTED ", 00066700
|
|
"T-VALUES"//), 00066800
|
|
FL145(" ",X17,"ERROR (WITHIN)"), 00066900
|
|
FL143(" ",X8,"COEFFICIENT STAND. ERROR T-VALUE"//), 00067000
|
|
FL146(" ",X11,"TREATMENT+ERROR (TOTAL)"), 00067100
|
|
FL147(" TABLE OF ADJUSTED MEANS AND STANDARD ERRORS"//), 00067200
|
|
FL148(" TREATMENT TREATMENT ADJUSTED SE ADJUSTED"/ 00067300
|
|
" NO.",X7,"MEAN",X9,"MEAN",X9,"MEAN"/), 00067400
|
|
FL149(" ",I5,R16.4,2R13.4); 00067500
|
|
LIST LIST1(KODEQ,CODEQ,NGRPSQ,NCASEQ,NCARDQ,NCOVQ,NADDQ,NDVQ,OUTQ,INAMQ,00067600
|
|
KREPQ,LYNNQ,NTGQ,MTAPEQ,KVFQ), 00067700
|
|
LIST2(CODEQ,NGRPSQ,NCASEQ,NCARDQ,NCOVQ,NADDQ,NDVQ,OUTQ,INAMQ,REPQ, 00067800
|
|
LYNNQ,NTGQ,MTAPEQ,KVFQ), 00067900
|
|
LIST3(KODEQ,NEWQ[I],JUMPQ[I],NAQ[I],BNQ[I]), 00068000
|
|
LIST4(I,NEWQ[I],JUMPQ[I],NAQ[I],BNQ[I]), 00068100
|
|
LIST5(I), 00068200
|
|
LIST6(KODEQ,NGQ[I],FOR DX1 ~ 1 STEP 1 UNTIL 6 DO [NSUBQ[DX1, 00068300
|
|
I],RELQ[DX1,I],CONTQ[DX1,I],OPERQ[DX1,I]]), 00068400
|
|
LIST7(NGQ[I]), 00068500
|
|
LIST8(NSUBQ[J,I],RELQ[J,I],CONTQ[J,I],OPERQ[J,I]), 00068600
|
|
LIST9(KODEQ,FOR DX1 ~ N1Q STEP 1 UNTIL N2Q DO NSAMQ[DX1]), 00068700
|
|
LIST10(KODEQ,FOR DX1 ~ N1Q STEP 1 UNTIL N2Q DO [INDEX1Q[DX1], 00068800
|
|
KKKQ[DX1]]), 00068900
|
|
LIST11(FOR DX1 ~ 1 STEP 1 UNTIL KVFQ DO FMTQ[DX1]), 00069000
|
|
LIST12(FOR DX1 ~ 1 STEP 1 UNTIL 14 DO X[DX1]), 00069100
|
|
LISTT13(FOR DX1 ~ 1 STEP 1 UNTIL NVARQ DO DATAQ[DX1]), 00069200
|
|
LISTT14(FOR DX1 ~ 1 STEP 1 UNTIL NVARQ DO NN[DX1]), 00069300
|
|
LIST13(FOR DX1 ~ 1 STEP 1 UNTIL NVARQ DO DATAQ[DX1],DATAQ[100]), 00069400
|
|
LIST14(KODEQ,NCOQ), 00069500
|
|
LIST15(KODEQ), 00069600
|
|
LIST16(I,NSAMQ[I],NGQ[I]), 00069700
|
|
LIST17(KODEQ,NCOQ,FOR DX1 ~ N1Q STEP 1 UNTIL N3Q DO INDEX2Q[DX1]), 00069800
|
|
LIST18(FOR DX1 ~ 1 STEP 1 UNTIL LRQ DO DATAQ[DX1],DATAQ[100]), 00069900
|
|
LIST19(MESSQ), 00070000
|
|
LIST20(NAMESQ[LTQ]), 00070100
|
|
LIST21(FOR DX1 ~ 1 STEP 1 UNTIL NVARQ DO [NAMESQ[DX1],SSVARQ[DX1, 00070200
|
|
I]]), 00070300
|
|
LIST22(N1Q,TREYYQ), 00070400
|
|
LIST23(N2Q,ERRYYQ,SSDERRQ,SSAERRQ,N5Q,SMAERRQ), 00070500
|
|
LIST24(N3Q,TOTYYQ,SSDTOTQ,SSATOTQ,N6Q), 00070600
|
|
LIST25(TESTQ,N1Q,ADJTESQ), 00070700
|
|
LIST26(N1Q,N5Q,FTESTQ), 00070800
|
|
LIST27(NAMESQ[I],D[I]), 00070900
|
|
LIST28(NAMESQ[I],B[I],SEBQ[I],T), 00071000
|
|
LIST29(NAMESQ[I],C[I],SECQ[I],T), 00071100
|
|
LIST30(I,SSVARQ[NVARQ,I],ADYQ[I],SEADYQ[I]); 00071200
|
|
BEGIN 00071300
|
|
LABEL L999,L2,L4,L1,L401,L400,L4115,L411,L10,L21,L14,L1430,L15,L512, 00071400
|
|
L17,L37,L26,L299,L31,L30,L28,L40,L43,L252,L463,L466,L468, 00071500
|
|
L470,L475,L417,L490,L49,L50,L625,L63; 00071600
|
|
SWITCH ASSIGN~L50,L49,L466,L490,L468,L417; 00071700
|
|
ITAPEQ ~ 2; 00071800
|
|
REWIND(TAPE2); 00071900
|
|
IT3Q ~ 3; 00072000
|
|
NTAPEQ ~ 5; 00072100
|
|
A123Q ~ (+"YES"); 00072200
|
|
A124Q ~ (+"FINISH"); 00072300
|
|
A125Q ~ (+"SAMSIZ"); 00072400
|
|
A126Q ~ (+"GRPDEF"); 00072500
|
|
A321Q ~ (+"TRNGEN"); 00072600
|
|
A421Q ~ (+"CVRSEL"); 00072700
|
|
A521Q ~ (+"LAB"); 00072800
|
|
P123Q ~ (+"PROBLM"); 00072900
|
|
L999: READ(CARD,FL100,LIST1)[FINIS]; 00073000
|
|
BADCARDFLAG~FALSE; 00073100
|
|
IF KODEQ!IA2Q THEN GO TO L1; 00073200
|
|
L2: IF NTAPEQ{5 THEN GO TO L4; 00073300
|
|
L4: GO TO FINIS; 00073400
|
|
L1: IF KODEQ=IP1Q THEN GO TO L400; 00073500
|
|
L401: WRITE(LINE,FL403); 00073600
|
|
GO TO L2; 00073700
|
|
L400: 00073800
|
|
WRITE(LINE[PAGE]); 00073900
|
|
DATELINE("BMD04V"); 00074000
|
|
WRITE(LINE,FL102); 00074100
|
|
BEGIN REAL DUPE; DUPE ~ 1; 00074200
|
|
WRITE(LINE,FL103,LIST2); 00074300
|
|
IF (NADDQ+98)|(NADDQ-35)}0 THEN 00074400
|
|
BADCARD(0); 00074500
|
|
IF (NCOVQ+NADDQ)|(NCOVQ+NADDQ-100)}0 THEN 00074600
|
|
BADCARD(1); 00074700
|
|
IF (MTAPEQ-ITAPEQ)|(MTAPEQ-IT3Q)=0 THEN 00074800
|
|
BADCARD(2); 00074900
|
|
NVARQ ~ INT(NCOVQ); 00075000
|
|
REWIND(TAPE3); 00075100
|
|
IERRORQ ~ INT(0); 00075200
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL 99 DO BEGIN 00075300
|
|
DATAQ[I] ~ 0 END; 00075400
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL 36 DO BEGIN 00075500
|
|
NAMESQ[I] ~ 0; 00075600
|
|
INDEX1Q[I] ~ 0; 00075700
|
|
INDEX2Q[I] ~ 0 END; 00075800
|
|
LHQ ~ INT(NVARQ+1+NADDQ); 00075900
|
|
NVAR1Q ~ LHQ-1; 00076000
|
|
LRQ ~ NVARQ; 00076100
|
|
IF LHQ}101 THEN BADCARD(1); 00076200
|
|
IF 2>LHQ THEN BADCARD(3); 00076300
|
|
VFCHCKQ(KVFQ); 00076400
|
|
AVNSKIP ~ 1; 00076500
|
|
IF (XPR ~ NTGQ)=0 THEN GO TO L10; 00076600
|
|
IF XPR<0 THEN 00076700
|
|
BADCARD(4); 00076800
|
|
AVNSKIP ~ 2; 00076900
|
|
IF NTGQ>99 THEN 00077000
|
|
BADCARD(4); 00077100
|
|
WRITE(LINE,FL104); 00077200
|
|
WRITE(LINE,FL105); 00077300
|
|
END; 00077400
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NTGQ DO BEGIN 00077500
|
|
READ(CARD,FL106,LIST3)[FINIS]; 00077600
|
|
IF KODEQ!IA5Q THEN 00077700
|
|
BADCARD(5); 00077800
|
|
WRITE(LINE,FL107,LIST4); 00077900
|
|
IF (JUMPQ[I]-18)|(JUMPQ[I]-19)|(JUMPQ[I]-40)=0 THEN 00078000
|
|
GO TO L4115; 00078100
|
|
IF (XPR ~ JUMPQ[I]-41)>0 THEN GO TO L4115; 00078200
|
|
IF XPR=0 THEN GO TO L411; 00078300
|
|
IF (JUMPQ[I]-25)|(39-JUMPQ[I])<0 THEN GO TO L411; 00078400
|
|
L4115: WRITE(LINE,FL150,LIST5); 00078500
|
|
LYNNQ ~ -99; 00078600
|
|
L411: END; 00078700
|
|
L10: IF (XPR ~ LYNNQ)=0 THEN GO TO L14; 00078800
|
|
IF XPR<0 THEN 00078900
|
|
BADCARD(6); 00079000
|
|
WRITE(LINE,FL110); 00079100
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL LYNNQ DO BEGIN 00079200
|
|
READ(CARD,FL111,LIST6)[FINIS]; 00079300
|
|
IF KODEQ!IA4Q THEN 00079400
|
|
BADCARD(7); 00079500
|
|
WRITE(LINE,FL112,LIST7); 00079600
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL 6 DO BEGIN 00079700
|
|
WRITE(LINE,FL113,LIST8); 00079800
|
|
IF OPERQ[J,I]=(+"*") THEN GO TO L21; 00079900
|
|
END; 00080000
|
|
L21: END; 00080100
|
|
GO TO L15; 00080200
|
|
L14: NCARDSQ ~ (NGRPSQ+21) DIV 22; 00080300
|
|
N2Q ~ 0; 00080400
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL NCARDSQ DO BEGIN 00080500
|
|
N1Q ~ N2Q+1; 00080600
|
|
N2Q ~ N2Q+22; 00080700
|
|
IF 99}N2Q THEN GO TO L1430; 00080800
|
|
N2Q ~ 99; 00080900
|
|
L1430: READ(CARD,FL108,LIST9)[FINIS]; 00081000
|
|
IF KODEQ!IA3Q THEN 00081100
|
|
BADCARD(8); 00081200
|
|
END; 00081300
|
|
L15: IF (XPR ~ INAMQ)=0 THEN GO TO L17; 00081400
|
|
IF XPR<0 THEN 00081500
|
|
BADCARD(9); 00081600
|
|
NCRDSQ ~ (INAMQ+6) DIV 7; 00081700
|
|
N2Q ~ 0; 00081800
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NCRDSQ DO BEGIN 00081900
|
|
N1Q ~ N2Q+1; 00082000
|
|
N2Q ~ N2Q+7; 00082100
|
|
IF 36}N2Q THEN GO TO L512; 00082200
|
|
N2Q ~ 36; 00082300
|
|
L512: READ(CARD,FL101,LIST10)[FINIS]; 00082400
|
|
IF KODEQ!IA7Q THEN 00082500
|
|
BADCARD(10); 00082600
|
|
END; 00082700
|
|
L17: KVFQ ~ KVFQ|12; 00082800
|
|
READ(CARD,FMT1,FOR I ~ 1 STEP 1 UNTIL NVARQ DO SCALE[I]); 00082900
|
|
IF KREPQ=IA1Q THEN GO TO L37; 00083000
|
|
K1Q ~ NCARDQ|NCASEQ; 00083100
|
|
READ(CARD[NO], CHKFOR, FORMOT)[FINIS]; 00083200
|
|
IF FORMOT ! "FORMAT" THEN 00083300
|
|
BEGIN 00083400
|
|
WRITE(LINE, NOFRM); 00083500
|
|
GO TO FINIS; 00083600
|
|
END; 00083700
|
|
OBJECTFMTGEN(FMT2); 00083800
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL K1Q DO BEGIN 00083900
|
|
READ(CARD,FL114,LIST12)[FINIS]; 00084000
|
|
WRITE(TAPE3,FL114,LIST12); 00084100
|
|
END; 00084200
|
|
REWIND(TAPE3); 00084300
|
|
L37: NTAPEQ ~ IT3Q; 00084400
|
|
IF LYNNQ>0 THEN GO TO L26; 00084500
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NGRPSQ DO BEGIN 00084600
|
|
NNQ ~ NSAMQ[I]; 00084700
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL NNQ DO BEGIN 00084800
|
|
READ(TAPE3,FMT2,LISTT14); 00084900
|
|
FOR Z ~ 1, Z + 1 STEP 1 UNTIL NVARQ DO 00085000
|
|
BEGIN 00085100
|
|
IF SCALE [Z] = 0 THEN DATAQ[Z] ~ NN[Z]; 00085200
|
|
IF SCALE [Z] < 0 THEN DATAQ[Z] ~ NN[Z]|10*ABS(SCALE[Z]) 00085300
|
|
ELSE DATAQ[Z] ~ NN[Z]/(10*SCALE[Z]); 00085400
|
|
END; 00085500
|
|
COMMENT SEE LINE 463 OF FORTRAN LISTING; 00085600
|
|
DATAQ[100] ~ I; 00085700
|
|
WRITE(TAPE2,OKTL,LIST13); 00085800
|
|
END; 00085900
|
|
END; 00086000
|
|
GO TO L28; 00086100
|
|
L26: FOR I ~ 1, I+1 STEP 1 UNTIL 99 DO BEGIN 00086200
|
|
NSAMQ[I] ~ 0 END; 00086300
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NCASEQ DO BEGIN 00086400
|
|
DATAQ[100] ~ 0; 00086500
|
|
READ(TAPE3,FMT2,LISTT14); 00086600
|
|
FOR Z ~ 1, Z + 1 STEP 1 UNTIL NVARQ DO 00086700
|
|
BEGIN 00086800
|
|
IF SCALE [Z] = 0 THEN DATAQ[Z] ~ NN[Z]; 00086900
|
|
IF SCALE [Z] < 0 THEN DATAQ[Z] ~ NN[Z]|10*ABS(SCALE[Z]) 00087000
|
|
ELSE DATAQ[Z] ~ NN[Z]/(10*SCALE[Z]); 00087100
|
|
END; 00087200
|
|
COMMENT SEE LINE 472 OF FORTRAN LISTING; 00087300
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL LYNNQ DO BEGIN 00087400
|
|
GRPSELQ(J); 00087500
|
|
COMMENT SEE LINE 475 OF FORTRAN LISTING; 00087600
|
|
IF J>0 THEN GO TO L299; 00087700
|
|
READ(CARD,FL151,LIST14)[FINIS]; 00087800
|
|
REWIND(TAPE2); 00087900
|
|
IF 33>NCOQ THEN GO TO L999; 00088000
|
|
READ(CARD,FL151,LIST15)[FINIS]; 00088100
|
|
GO TO L999; 00088200
|
|
L299: IF DATAQ[100]{0 THEN GO TO L31; 00088300
|
|
KKQ ~ NGQ[J]; 00088400
|
|
NSAMQ[KKQ] ~ NSAMQ[KKQ]+1; 00088500
|
|
WRITE(TAPE2,OKTL,LIST13); 00088600
|
|
GO TO L30; 00088700
|
|
L31: END; 00088800
|
|
L30: END; 00088900
|
|
L28: REWIND(TAPE2); 00089000
|
|
IF LYNNQ{0 THEN GO TO L43; 00089100
|
|
JJQ ~ 0; 00089200
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL 99 DO BEGIN 00089300
|
|
NGQ[I] ~ 0 END; 00089400
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL 99 DO BEGIN 00089500
|
|
IF NSAMQ[I]{0 THEN GO TO L40; 00089600
|
|
JJQ ~ JJQ+1; 00089700
|
|
NGQ[JJQ] ~ NSAMQ[I]; 00089800
|
|
NSAMQ[I] ~ JJQ; 00089900
|
|
L40: END; 00090000
|
|
JXQ ~ MAX(JJQ,NGRPSQ); 00090100
|
|
NGRPSQ ~ JJQ; 00090200
|
|
WRITE(LINE,FL115); 00090300
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL JXQ DO BEGIN 00090400
|
|
WRITE(LINE,FL116,LIST16); 00090500
|
|
END; 00090600
|
|
GO TO L252; 00090700
|
|
L43: FOR I ~ 1, I+1 STEP 1 UNTIL NGRPSQ DO BEGIN 00090800
|
|
NGQ[I] ~ NSAMQ[I] END; 00090900
|
|
L252: NVARQ ~ INT(NVARQ+NADDQ); 00091000
|
|
NCOVQ ~ NCOVQ+NADDQ-1; 00091100
|
|
FOR I~0 STEP 1 UNTIL 36 DO 00091200
|
|
FOR J~0 STEP 1 UNTIL 36 DO 00091300
|
|
TOTXXQ[I,J]~0; 00091400
|
|
FOR I~0 STEP 1 UNTIL 36 DO 00091500
|
|
FOR J~0 STEP 1 UNTIL 36 DO 00091600
|
|
TREXXQ[I,J]~0; 00091700
|
|
FOR I~0 STEP 1 UNTIL 36 DO 00091800
|
|
FOR J~0 STEP 1 UNTIL 36 DO 00091900
|
|
ERRXXQ[I,J]~0; 00092000
|
|
FOR I~0 STEP 1 UNTIL 36 DO 00092100
|
|
FOR J~0 STEP 1 UNTIL 99 DO 00092200
|
|
SSVARQ[I,J]~0; 00092300
|
|
FOR I~0 STEP 1 UNTIL 36 DO 00092400
|
|
BEGIN 00092500
|
|
TOTXYQ[I]~0; 00092600
|
|
TREXYQ[I]~0; 00092700
|
|
ERRXYQ[I]~0; 00092800
|
|
END; 00092900
|
|
AVLSKIP ~ 3; 00093000
|
|
AVMUD ~ 4; 00093100
|
|
N1Q ~ 1; 00093200
|
|
N3Q ~ 32; 00093300
|
|
L463: READ(CARD,FL151,LIST17)[FINIS]; 00093400
|
|
IF KODEQ!IA6Q THEN BADCARD(11); 00093500
|
|
IF NCOQ>35 THEN BADCARD(12); 00093600
|
|
IF NGRPSQ+NCOQ+1>NCASEQ THEN BADCARD(13); 00093700
|
|
GO TO ASSIGN[AVLSKIP]; 00093800
|
|
L466: IF 33>NCOQ THEN GO TO L470; 00093900
|
|
AVLSKIP ~ 5; 00094000
|
|
N1Q ~ 33; 00094100
|
|
N3Q ~ NCOQ; 00094200
|
|
GO TO L463; 00094300
|
|
L468: INDEX2Q[36] ~ INDEX2Q[35]; 00094400
|
|
INDEX2Q[35] ~ INDEX2Q[34]; 00094500
|
|
INDEX2Q[34] ~ INDEX2Q[33]; 00094600
|
|
INDEX2Q[33] ~ NCOQ; 00094700
|
|
NCOQ ~ N3Q; 00094800
|
|
L470: IF BADCARDFLAG THEN GO TO L999; 00094900
|
|
COMMENT THE FOLLOWING TWO CARDS ADDED 3-10-65 TO ALLOW USE OF 00095000
|
|
ONLY THE SPECIFIED COVARIATES; 00095100
|
|
NCOVQ~NCOQ; 00095200
|
|
NVARQ~NCOQ+1; 00095300
|
|
INDEX2Q[NVARQ] ~ NDVQ; 00095400
|
|
IF IOUTQ!IA1Q THEN GO TO L475; 00095500
|
|
AVMUD ~ 6; 00095600
|
|
MESSQ ~ 0; 00095700
|
|
WRITE(LINE,FL415); 00095800
|
|
L475: FOR IIQ ~ 1, IIQ+1 STEP 1 UNTIL NGRPSQ DO BEGIN 00095900
|
|
LGQ ~ NGQ[IIQ]; 00096000
|
|
FOR M ~ 1, M+1 STEP 1 UNTIL LGQ DO BEGIN 00096100
|
|
READ(TAPE2,OKTL,LIST18); 00096200
|
|
GO TO ASSIGN[AVMUD]; 00096300
|
|
L417: MESSQ ~ MESSQ+1; 00096400
|
|
WRITE(LINE,FL418,LIST19); 00096500
|
|
WRITE(LINE,FL250,LIST18); 00096600
|
|
L490: GO TO ASSIGN[AVNSKIP]; 00096700
|
|
L49: TG41Q(IIQ,M); 00096800
|
|
L50: K ~ DATAQ[100]; 00096900
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL NVARQ DO BEGIN 00097000
|
|
I ~ INDEX2Q[J]; 00097100
|
|
SSVARQ[J,K] ~ SSVARQ[J,K]+DATAQ[I]; 00097200
|
|
FOR N ~ 1, N+1 STEP 1 UNTIL NVARQ DO BEGIN 00097300
|
|
L ~ INDEX2Q[N]; 00097400
|
|
TOTXXQ[N,J] ~ TOTXXQ[N,J]+(DATAQ[I]|DATAQ[ 00097500
|
|
L]); 00097600
|
|
END; 00097700
|
|
END; 00097800
|
|
END; 00097900
|
|
END; 00098000
|
|
BEGIN 00098100
|
|
INTEGER DUMMY; 00098200
|
|
REWIND(TAPE2); 00098300
|
|
NTQ ~ 0; 00098400
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NGRPSQ DO BEGIN 00098500
|
|
NTQ ~ NTQ+NGQ[I]; 00098600
|
|
END; 00098700
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL NVARQ DO BEGIN 00098800
|
|
X[J] ~ 0; 00098900
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NGRPSQ DO BEGIN 00099000
|
|
X[J] ~ X[J]+SSVARQ[J,I] END; 00099100
|
|
END; 00099200
|
|
BIGQ ~ NTQ; 00099300
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NVARQ DO BEGIN 00099400
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL NVARQ DO BEGIN 00099500
|
|
TOTXXQ[J,I] ~ TOTXXQ[J,I]-(X[I]|X[J])/BIGQ; 00099600
|
|
FOR K ~ 1, K+1 STEP 1 UNTIL NGRPSQ DO BEGIN 00099700
|
|
T ~ NGQ[K]; 00099800
|
|
TREXXQ[J,I] ~ TREXXQ[J,I]+(SSVARQ[I,K]|SSVARQ[ 00099900
|
|
J,K])/T; 00100000
|
|
END; 00100100
|
|
TREXXQ[J,I] ~ TREXXQ[J,I]-(X[I]|X[J])/BIGQ; 00100200
|
|
ERRXXQ[J,I] ~ TOTXXQ[J,I]-TREXXQ[J,I] END; 00100300
|
|
END; 00100400
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NGRPSQ DO BEGIN 00100500
|
|
D[1] ~ NGQ[I]; 00100600
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL NVARQ DO BEGIN 00100700
|
|
SSVARQ[J,I] ~ SSVARQ[J,I]/D[1] END; 00100800
|
|
END; 00100900
|
|
END; 00101000
|
|
WRITE(LINE,FL117); 00101100
|
|
FOR LTQ ~ 1, LTQ+1 STEP 1 UNTIL NVARQ DO BEGIN 00101200
|
|
I ~ INDEX2Q[LTQ]; 00101300
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL INAMQ DO BEGIN 00101400
|
|
IF I=INDEX1Q[J] THEN GO TO L625; 00101500
|
|
END; 00101600
|
|
WRITE(PUNCH,FL888,LIST5); 00101700
|
|
READ(CARD,FL777,LIST20)[FINIS]; 00101800
|
|
GO TO L63; 00101900
|
|
L625: NAMESQ[LTQ] ~ KKKQ[J]; 00102000
|
|
L63: END; 00102100
|
|
BEGIN 00102200
|
|
INTEGER DUMMY; 00102300
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NGRPSQ DO BEGIN 00102400
|
|
WRITE(LINE,FL118,LIST5); 00102500
|
|
WRITE(LINE,FL119,LIST21); 00102600
|
|
END; 00102700
|
|
WRITE(LINE,FL120); 00102800
|
|
WRITE(LINE,FL121); 00102900
|
|
PATTY2Q(TOTXXQ,NVARQ,NAMESQ); 00103000
|
|
WRITE(LINE,FL120); 00103100
|
|
WRITE(LINE,FL122); 00103200
|
|
PATTY2Q(TREXXQ,NVARQ,NAMESQ); 00103300
|
|
WRITE(LINE,FL120); 00103400
|
|
WRITE(LINE,FL123); 00103500
|
|
PATTY2Q(ERRXXQ,NVARQ,NAMESQ); 00103600
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NVARQ DO BEGIN 00103700
|
|
TOTXYQ[I] ~ TOTXXQ[NVARQ,I]; 00103800
|
|
TREXYQ[I] ~ TREXXQ[NVARQ,I]; 00103900
|
|
ERRXYQ[I] ~ ERRXXQ[NVARQ,I] END; 00104000
|
|
TOTYYQ ~ TOTXYQ[NVARQ]; 00104100
|
|
TREYYQ ~ TREXYQ[NVARQ]; 00104200
|
|
ERRYYQ ~ ERRXYQ[NVARQ]; 00104300
|
|
MATINVQ(TOTXXQ,NCOVQ,LLLQ,KKKQ); 00104400
|
|
MATINVQ(TREXXQ,NCOVQ,LLLQ,KKKQ); 00104500
|
|
MATINVQ(ERRXXQ,NCOVQ,LLLQ,KKKQ); 00104600
|
|
WRITE(LINE,FL124); 00104700
|
|
WRITE(LINE,FL121); 00104800
|
|
PATTY2Q(TOTXXQ,NCOVQ,NAMESQ); 00104900
|
|
WRITE(LINE,FL124); 00105000
|
|
WRITE(LINE,FL122); 00105100
|
|
PATTY2Q(TREXXQ,NCOVQ,NAMESQ); 00105200
|
|
WRITE(LINE,FL124); 00105300
|
|
WRITE(LINE,FL123); 00105400
|
|
PATTY2Q(ERRXXQ,NCOVQ,NAMESQ); 00105500
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NCOVQ DO BEGIN 00105600
|
|
B[I] ~ 0; 00105700
|
|
C[I] ~ 0; 00105800
|
|
D[I] ~ 0; 00105900
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL NCOVQ DO BEGIN 00106000
|
|
B[I] ~ B[I]+ERRXXQ[J,I]|ERRXYQ[J]; 00106100
|
|
C[I] ~ C[I]+TOTXXQ[J,I]|TOTXYQ[J]; 00106200
|
|
D[I] ~ D[I]+TREXXQ[J,I]|TREXYQ[J] END; 00106300
|
|
END; 00106400
|
|
SSDTREQ ~ 0; 00106500
|
|
SSDTOTQ ~ 0; 00106600
|
|
SSDERRQ ~ 0; 00106700
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NCOVQ DO BEGIN 00106800
|
|
SSDERRQ ~ SSDERRQ+B[I]|ERRXYQ[I]; 00106900
|
|
SSDTREQ ~ SSDTREQ+D[I]|TREXYQ[I]; 00107000
|
|
SSDTOTQ ~ SSDTOTQ+C[I]|TOTXYQ[I] END; 00107100
|
|
END; 00107200
|
|
BEGIN REAL DUMDUM; DUMDUM ~ 0; 00107300
|
|
SSDTREQ ~ SSDTOTQ-SSDERRQ; 00107400
|
|
SSATREQ ~ TREYYQ-SSDTREQ; 00107500
|
|
SSATOTQ ~ TOTYYQ-SSDTOTQ; 00107600
|
|
SSAERRQ ~ ERRYYQ-SSDERRQ; 00107700
|
|
N1Q ~ NGRPSQ-1; 00107800
|
|
N2Q ~ BIGQ; 00107900
|
|
N2Q ~ N2Q-NGRPSQ; 00108000
|
|
N3Q ~ BIGQ-1; 00108100
|
|
N4Q ~ N1Q; 00108200
|
|
N5Q ~ N2Q-NCOVQ; 00108300
|
|
N6Q ~ N3Q-NCOVQ; 00108400
|
|
TESTQ ~ SSATOTQ-SSAERRQ; 00108500
|
|
DN4Q ~ N4Q; 00108600
|
|
DN5Q ~ N5Q; 00108700
|
|
DN6Q ~ N6Q; 00108800
|
|
DN1Q ~ N1Q; 00108900
|
|
SMATREQ ~ SSATREQ/DN4Q; 00109000
|
|
SMAERRQ ~ SSAERRQ/DN5Q; 00109100
|
|
ADJTESQ ~ TESTQ/DN1Q; 00109200
|
|
FTESTQ ~ ADJTESQ/SMAERRQ; 00109300
|
|
WRITE(LINE,FL125); 00109400
|
|
WRITE(LINE,FL126); 00109500
|
|
WRITE(LINE,FL127); 00109600
|
|
WRITE(LINE,FL128); 00109700
|
|
WRITE(LINE,FL129); 00109800
|
|
WRITE(LINE,FL127); 00109900
|
|
WRITE(LINE,FL130); 00110000
|
|
WRITE(LINE,FL127); 00110100
|
|
WRITE(LINE,FL131); 00110200
|
|
SMATOTQ ~ SSATOTQ/DN6Q; 00110300
|
|
WRITE(LINE,FL132,LIST22); 00110400
|
|
WRITE(LINE,FL127); 00110500
|
|
WRITE(LINE,FL130); 00110600
|
|
WRITE(LINE,FL127); 00110700
|
|
WRITE(LINE,FL133); 00110800
|
|
WRITE(LINE,FL134,LIST23); 00110900
|
|
WRITE(LINE,FL127); 00111000
|
|
WRITE(LINE,FL130); 00111100
|
|
WRITE(LINE,FL127); 00111200
|
|
WRITE(LINE,FL131); 00111300
|
|
WRITE(LINE,FL136); 00111400
|
|
WRITE(LINE,FL137,LIST24); 00111500
|
|
WRITE(LINE,FL127); 00111600
|
|
WRITE(LINE,FL130); 00111700
|
|
WRITE(LINE,FL127); 00111800
|
|
WRITE(LINE,FL138,LIST25); 00111900
|
|
WRITE(LINE,FL127); 00112000
|
|
WRITE(LINE,FL126); 00112100
|
|
WRITE(LINE,FL139); 00112200
|
|
WRITE(LINE,FL140,LIST26); 00112300
|
|
WRITE(LINE,FL135); 00112400
|
|
WRITE(LINE,FL142); 00112500
|
|
WRITE(LINE,FL152); 00112600
|
|
END; 00112700
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NCOVQ DO BEGIN 00112800
|
|
WRITE(LINE,FL144,LIST27); 00112900
|
|
END; 00113000
|
|
WRITE(LINE,FL141); 00113100
|
|
WRITE(LINE,FL145); 00113200
|
|
WRITE(LINE,FL143); 00113300
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NCOVQ DO BEGIN 00113400
|
|
SEBQ[I] ~ SMAERRQ|ERRXXQ[I,I]; 00113500
|
|
SEBQ[I] ~ SQRT(SEBQ[I]); 00113600
|
|
T ~ B[I]/SEBQ[I]; 00113700
|
|
WRITE(LINE,FL144,LIST28); 00113800
|
|
END; 00113900
|
|
WRITE(LINE,FL141); 00114000
|
|
WRITE(LINE,FL146); 00114100
|
|
WRITE(LINE,FL143); 00114200
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NCOVQ DO BEGIN 00114300
|
|
SECQ[I] ~ SMATOTQ|TOTXXQ[I,I]; 00114400
|
|
SECQ[I] ~ SQRT(SECQ[I]); 00114500
|
|
T ~ C[I]/SECQ[I]; 00114600
|
|
WRITE(LINE,FL144,LIST29); 00114700
|
|
END; 00114800
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NCOVQ DO BEGIN 00114900
|
|
X[I] ~ 0; 00115000
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL NGRPSQ DO BEGIN 00115100
|
|
T1Q ~ NGQ[J]; 00115200
|
|
X[I] ~ X[I]+SSVARQ[I,J]|(T1Q/BIGQ) END; 00115300
|
|
END; 00115400
|
|
FOR J ~ 1, J+1 STEP 1 UNTIL NGRPSQ DO BEGIN 00115500
|
|
T ~ 0; 00115600
|
|
T1Q ~ NGQ[J]; 00115700
|
|
T1Q ~ 1/T1Q; 00115800
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NCOVQ DO BEGIN 00115900
|
|
T ~ T+B[I]|(SSVARQ[I,J]-X[I]) END; 00116000
|
|
ADYQ[J] ~ SSVARQ[NVARQ,J]-T; 00116100
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NCOVQ DO BEGIN 00116200
|
|
FOR K ~ 1, K+1 STEP 1 UNTIL NCOVQ DO BEGIN 00116300
|
|
T1Q ~ T1Q+(SSVARQ[I,J]-X[I])|ERRXXQ[K,I]|( 00116400
|
|
SSVARQ[K,J]-X[K]) END; 00116500
|
|
END; 00116600
|
|
SEADYQ[J] ~ SQRT(SMAERRQ|T1Q) END; 00116700
|
|
WRITE(LINE,FL147); 00116800
|
|
WRITE(LINE,FL148); 00116900
|
|
FOR I ~ 1, I+1 STEP 1 UNTIL NGRPSQ DO BEGIN 00117000
|
|
WRITE(LINE,FL149,LIST30); 00117100
|
|
END; 00117200
|
|
GO TO L999; 00117300
|
|
END END; 00117400
|
|
00117500
|
|
COMMENT ************************** OUTER BLOCK ************; 00117600
|
|
XPR~QQ~0; 00117700
|
|
SENSL[1]~FALSE; 00117800
|
|
SENSL[2]~FALSE; 00117900
|
|
SENSL[3]~FALSE; 00118000
|
|
SENSL[4]~FALSE; 00118100
|
|
MAINPRO; FINIS: 00118200
|
|
DATELINE(0); 00118300
|
|
END OF OUTER BLK. 00118400
|
|
LAST CARD ON CRDIMG TAPE 99999999
|