1 ! PROGRAM HIST, VERSION 1A (31-AUG-73) ! 2 ! PROGRAM HIST PRINTS OUT A HISTOGRAM FOR THE VARIABLE SELECTED. ! IT IS ONE OF THE SEVERAL PROGRAMS AND FILES WHICH COMPOSE COSAP, ! LAWRENCE UNIVERSITY'S CONVERSATIONALLY ORIENTED STATISTICAL 3 ! ANALYSIS PACKAGE. COSAP IS DISTRIBUTED FOR EDUCATIONAL USE, ON ! THE CONDITION THAT IT NOT BE SOLD, RENTED OR LEASED FOR PROFIT. ! 4 ! IF YOU DESIRE FURTHER INFORMATION ABOUT COSAP, PLEASE CONTACT THE ! LAWRENCE UNIVERSITY COMPUTER CENTER, APPLETON, WISCONSIN, 54911. ! 10 DIM N%(30) ! FUNCTION TO CREATE FILE EXT. BASED ON JOB# 25 DEF FNZ$ : IF N%(0)=30% THEN 40 ELSE CHANGE SYS(CHR$(6)+CHR$(9)+CHR$(0)) TO N% : Z8$=".J"+RIGHT(NUM$(N%(1)/2%),2%) 40 FNZ$=Z8$! EXTENSION IS".J"+JOB # 55 FNEND 70 !****HIST 85 OPEN "DAT1"+FNZ$ AS FILE 1 90 OPEN L1$(1%) FOR INPUT AS FILE 5% 100 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% 105 DIM #5%, N$(50%)=8%,M1$(50%)=64%,O%(50%),P%(50%),D$(50%)=8%, T(50%),D(10000%) 115 DEF FNR(Q) 130 INPUT Z$ 145 Q=INSTR(1,Z$,"SOS") 160 IF Q>0 THEN 205 175 Q=VAL(Z$) 190 GOTO 220 205 Q=808 220 FNR=Q 235 FNEND 240 PRINT:PRINT"THIS PROGRAM PRINTS OUT A HISTOGRAM." 250 PRINT:PRINT"WHAT IS THE NAME OF THE VARIABLE";:V=FNC%(""): IF V<>N6(0) THEN 280 265 PRINT:PRINT"YOU MUST RESPOND WITH THE NAME OF A VARIABLE IN YOUR " "DATABANK.":PRINT"COSAP WILL THEN DRAW A HISTOGRAM OF IT.":GOTO 250 280 PRINT:PRINT"TYPE A PRINT CHARACTER FOR THE HISTOGRAM *"; 325 INPUT P$:P$=LEFT(P$,1) 340 B6=X(1,V):S6=B6 355 FOR I=2 TO N(0):IF X(I,V)>=S6 THEN 385 370 S6=X(I,V) 385 IF X(I,V)<=B6 THEN 400 ELSE B6=X(I,V) 400 NEXT I 415 PRINT:PRINT"SPECIFY THE NUMBER OF INTERVALS. MAXIMUM IS 10 *"; 430 INPUT I9:IF 10>=I9 THEN 460 445 PRINT:PRINT"THAT IS TOO MANY. TRY AGAIN":GOTO 415 460 S2=(B6-S6)/I9:S3(1)=S6+S2 475 FOR I=2 TO I9-1:S3(I)=S3(I-1)+S2:NEXT I 490 S3(I9)=B6:FOR J=1 TO I9:F9(J)=0 :NEXT J 505 FOR I=1 TO N(0):J%=(X(I,V)-S6)/S2+1:IF I9>=J% THEN 535 520 J%=I9 535 F9(J%)=F9(J%)+1:NEXT I 550 B6=0:FOR J=1 TO I9:IF F9(J)<=B6 THEN 565 ELSE B6=F9(J) 565 NEXT J:J%=1:IF 50>=B6 THEN 595 ELSE J%=(B6+49)/50 580 PRINT:PRINT"EACH "P$" EQUALS "J%" POINTS." 595 PRINT:PRINT"FREQUENCY"; 610 PRINTUSING"#####",F9(L);FOR L=1 TO I9 625 PRINT 640 Q$="--------+----+----+----+----+----+----+----+----+----+----+---" 645 PRINT Q$ 655 B6%=B6/J% : B6=B6%:FOR I=1 TO B6 :P1=B6-(I-1):FOR J=1 TO I9 670 I$(J)=" ":IF F9(J)/J%"SOS" THEN 895 880 PRINT"YOU MAY USE ANOTHER VARIABLE" 895 CLOSE 1,5% :K$=SYS(CHR$(7)) 910 N$=LEFT(K$,8):S0=VAL(RIGHT(K$,9)) 925 CHAIN N$ S0 30000 DEF FNC%(X$) ! FUNCTION TO TRANSLATE VARIABLE NAMES 30010 PRINT X$; UNLESS X$="" : INPUT V$ : IF V$="" THEN PRINT : PRINT "VARIABLE NAME NEEDED "; : GOTO 30010 30020 GOTO 30040 IF V$=N$(I%) FOR I%=1% TO O%(0%) 30025 IF LEFT(V$,3%)="SOS" THEN FNC%=808 : GOTO 30050 30030 PRINT "*NO SUCH VARIABLE* TRY AGAIN." : GOTO 30010 30040 FNC%=I% 30050 FNEND 32767 END