10 ! PROGRAM COSAP, VERSION 1A (31-AUG-73) 11 ! 12 ! PROGRAM COSAP IS THE MAINLINE FOR THE ENTIRE COSAP PACKAGE. 14 ! IT IS ONE OF THE SEVERAL PROGRAMS AND FILES WHICH COMPOSE COSAP, 16 ! LAWRENCE UNIVERSITY'S CONVERSATIONALLY ORIENTED STATISTICAL 18 ! ANALYSIS PACKAGE. COSAP IS DISTRIBUTED FOR EDUCATIONAL USE, ON 20 ! THE CONDITION THAT IT NOT BE SOLD, RENTED OR LEASED FOR PROFIT. 21 ! 22 ! IF YOU DESIRE FURTHER INFORMATION ABOUT COSAP, PLEASE CONTACT THE 23 ! LAWRENCE UNIVERSITY COMPUTER CENTER, APPLETON, WISCONSIN, 54911 24 ! 25 DIM N%(30) ! FUNCTION TO CREATE FILE EXT. BASED ON JOB# 40 DEF FNZ$ : IF N%(0)=30% THEN 55 ELSE CHANGE SYS(CHR$(6)+CHR$(9)+CHR$(0)) TO N% : Z8$=".J"+RIGHT(NUM$(N%(1)/2%),2%) 55 FNZ$=Z8$ ! EXTENSION IS ".J" + JOB # 70 FNEND 100 ! THIS IS THE MAINLINE FOR COSAP 120 PRINT : PRINT "THIS IS COSAP, VERSION 1A, AT ";TIME$(0%);" ON "; DATE$(0%) 130 PRINT : PRINT "WHEN ALL CALCULATIONS ARE COMPLETED, RESPOND " "'FINISH' TO THE QUESTION," 145 PRINT "'WHICH UTILITY OR ANALYSIS?'. THIS IS VERY IMPORTANT!!!!" 175 OPEN "DAT1"+FNZ$ FOR OUTPUT AS FILE 1% 190 DIM#1,X(200,50),H$(30)=2,C(50,50),M4(0),M5(0),M9(0), N(0),J9(0),I4(0),I7(0),N6(0),X2(50),L1$(8)=32% 195 DIM #2%,N$(50%)=8%,M1$(50%)=64%,O%(50%),P%(50%),D$(50%)=8%, T9(50%),D1(10000%) 205 ! GENERATE PROGRAM CONSTANTS. 220 M5(0)=200 : M4(0)=50 : N6(0)=808 : J9(0)=1 : READ H$(I%) FOR I%=1% TO 27% 235 DATA ED, TR, EL, CO, " ", " ", HI, " ", RA 236 ! SUN, TRAN, ESTA, CORR, TABC, SCDI, HIST, PLOT, RANK 237 DATA CH, T-, RE, ST, MU, PO, " ", CA, FA 238 ! CHIS, TEST, REGS, STEP, MRCAP,POLY, ANOV, CANO, FACO 239 DATA DI, EX, PR, " "," "," "," "," ", FI 240 ! DISC, EXPO, PROB, RESERVED FOR EXPANSION , FINISH 250 ! CHECK IF A DESCRIPTION IS DESIRED 265 PRINT : PRINT "DO YOU WANT A DESCRIPTION OF THE UTILITIES AND " "ANALYSES"; 280 INPUT N$:N$=LEFT(N$,2):IF N$="YE"THEN 295 ELSEIFN$<>"SO"THEN 685 295 PRINT 300 ON ERROR GOTO 325 : OPEN "COSAP.DOC" FOR INPUT AS FILE 3% 310 INPUT LINE #3%,A$ : PRINT A$; : GOTO 310 325 IF ERR=11% OR ERR=5% THEN RESUME 625 ELSE ON ERROR GOTO 0 625 GOTO 685 640 OPEN"DAT1"+FNZ$ ASFILE 1:J9(0)=2:GOTO 685 655 ! ASK THE NAME OF THE ANALYSIS 670 OPEN "DAT1"+FNZ$ AS FILE 1 685 PRINT : PRINT "WHICH UTILITY OR ANALYSIS ('FINISH' IF NO MORE)"; : INPUT A$ : IF A$="" OR A$=" " OR A$=" " THEN 685 700 A$=LEFT(A$,2%) : IF A$=H$(27%) THEN 1255 ELSE IF A$=H$(16%) THEN 1030 730 FORI=1TO21:IFA$<>H$(I)THEN 745 ELSEI7(0)=I:GOTO 790 745 NEXTI:IFA$="SO"THEN 295 ELSE PRINT:PRINT 760 PRINT "NO SUCH ROUTINE AVAILABLE" : GO TO 685 775 ! ASK ABOUT DATA 790 IF J9(0)<>1 THEN 870 800 IF A$="ED" THEN S$="COSAP 0640" : K$=SYS(CHR$(8%)+S$) : CLOSE 1% : CHAIN "SUN" 805 S$="COSAP 0865" : K$=SYS(CHR$(8%)+S$) : CLOSE 1% : CHAIN "SUN" 865 OPEN "DAT1"+FNZ$ AS FILE 1 870 S$=" COSAP 0640" : K$=SYS(CHR$(8%)+S$) 875 OPEN L1$(1%) FOR INPUT AS FILE 2% : M9(0%)=O%(0%) : N(0%)=O%(1%) : FOR J%=1% TO O%(0%) : X(I%,J%)=D1(P%(J%)+I%-1%) FOR I%=1% TO O%(J%) : NEXT J% 880 CLOSE 2% 925 ! CALL THE PROPER SUBROUTINE TO PERFORM THE ANALYSIS 940 IF I7(0)<8 THEN 985 ELSE IF I7(0)<15 THEN 970 955 I7(0)=I7(0)-14:GOTO 1015 970 I7(0)=I7(0)-7:GOTO 1000 985 ON I7(0) GOTO 1090 , 1100 , 1110 , 1120 , 1130 , 1140 , 1150 1000 ON I7(0) GOTO 1160 , 1180 , 1190 , 1200 , 1210 , 1220 , 1230 1015 ON I7(0) GOTO 1020 , 1030 , 1040 , 1050 , 1060 , 1070 , 1080 1020 GOSUB 20000 : CLOSE 1% : CHAIN "POLY" 1030 CLOSE 1% : CHAIN "ANOV" 1040 GOSUB 20000 : CLOSE 1% : CHAIN "CANO" 1050 GOSUB 20000 : CLOSE 1% : CHAIN "FACO" 1060 CLOSE 1% : CHAIN "DISC" 1070 CLOSE 1% : CHAIN "EXPO" 1080 CLOSE 1% : CHAIN "PROB" 1090 CLOSE 1% : CHAIN "SUN" 1100 CLOSE1:CHAIN"TRAN" 1110 GOSUB 20000 : CLOSE 1% : CHAIN "ESTA" 1120 GOSUB 20000 : CLOSE 1% : CHAIN "CORR" 1130 CLOSE1:CHAIN"TABC" 1140 CLOSE1:CHAIN"SCDI" 1150 CLOSE1:CHAIN"HIST" 1160 I4(0)=1:CLOSE1:S$="COSAP 1150":K$=SYS(CHR$(8)+S$): CHAIN"PLOT" 1170 OPEN"DAT1"+FNZ$ AS FILE 1:I4(0)=0:GOTO 640 1180 CLOSE 1 : CHAIN"RANK" 1190 CLOSE 1 : CHAIN "CHIS" 1200 CLOSE 1% : CHAIN "TEST" 1210 GOSUB 20000 : CLOSE 1% : CHAIN "REGS" 1220 GOSUB 20000 : CLOSE 1% : CHAIN "STEP" 1230 CLOSE 1% : CHAIN "MRCAP" 1255 CLOSE 1% : CHAIN "COSAP2" 20000 DIM T(50),T5(50),D(50) 20010 OPEN L1$(1%) FOR INPUT AS FILE 2% 20015 FOR I%=2% TO O%(0%) : IF O%(I%)=O%(I%-1%) THEN 20045 ! SEE IF THE NUMBER OF OBSERVATIONS ARE THE SAME 20030 PRINT : PRINT "UNEQUAL LENGTH VARIABLES -- CANNOT PERFORM" "ANALYSIS" : CLOSE 1%,2% : CHAIN "COSAP" 640 20045 NEXT I% : M9(0%)=O%(0%) : N(0%)=O%(1%) ! TRANSLATE THE DATA INTO OUR LINGO 20060 FOR J%=1% TO O%(0%) : X(I%,J%)=D1(P%(J%)+I%-1%) FOR I%=1% TO N(0%) : NEXT J% 20075 ! THIS ROUTINE COMPUTES TOTALS,MEANS AND CROSS PRODUCTS OF 20090 ! DEVIATIONS. 20105 ! INITIALIZE 20120 FOR I=1 TO M9(0):T(I)=X(1,I):T5(I)=0:FOR J= 1TO M9(0) 20135 C(I,J)=0:NEXTJ:NEXTI 20150 REM PERFORM PRELIMINARY CALCULATIONS 20165 FOR I=2 TO N(0):FOR J=1 TO M9(0):T(J)=T(J)+X(I,J):D(J)=X(I,J) -X(1,J):T5(J)=T5(J)+D(J):NEXT J:FOR J=1 TO M9(0):FOR K=J TO M9(0) 20180 C(J,K)=C(J,K)+D(J)*D(K):NEXTK:NEXTJ:NEXTI 20195 REM COMPUTE MEANS AND SUMS OF CROSS PRODUCTS OF DEVIATIONS 20210 FOR J=1 TO M9(0):X2(J)=T(J)/N(0):D(J)=T5(J)/N(0):FOR K=J TO M9(0) 20225 C(J,K)=C(J,K)-D(J)*T5(K) :C(K,J)=C(J,K):NEXT K:NEXT J 20240 FOR I%=1% TO M9(0) : IF C(I%,I%)>0 THEN 20255 ELSE C(I%,I%)=0 : PRINT : PRINT "ATTENTION--VARIABLE "N$(I%)" IS A CONSTANT." 20255 NEXT I% : CLOSE 2% : RETURN 32767 PRINT : PRINT"******* END OF COSAP RUN. ALL FILES USED ARE" " CLOSED *******" : END