$OPTIONS S=55,B,E C C STATISTICAL ANALYSIS PROGRAM C C INTEGER OUT DIMENSION VALUE(1000),DIST(64),NAME(2) C C FIND OUT IF ORDERED DATA SET IS WANTED C CALL PLOT WRITE (1,895) 895 FORMAT (//,12X,'*** STATISTICAL ANALYSIS PROGRAM ***',//) C WRITE (1,896) 896 FORMAT ('Press "0" if no ordered data set is wanted.', * /,'Else any other digit. ',Z) READ (0,*) Z1 C WRITE (1,897) 897 FORMAT (//,'What is the data input file name? ',Z) C READ (0,898) NAME 898 FORMAT (2A6) C WRITE (1,8990) 8990 FORMAT (/,'Output to what file? "#1" for screen ',Z) READ (0,898) ONAME OUT = 1 IF (COMP(ONAME,'#',1).EQ.0) GO TO 8991 OUT = 12 CALL OPEN(12,ONAME) 8991 CONTINUE C C HERE WE READ THE DATA FROM THE FILE C CALL OPEN(5,NAME) READ(5,*,800,800)(VALUE(I),I=1,3000) 800 N=I-1 IF (I .LT. 10) GO TO 1001 C C C LIMIT=N/2+1 DO 10 I=2,N SMALL=VALUE(I-1) K=I-1 DO 20 J=I,N IF ( SMALL - VALUE(J) ) 20,20,30 30 K=J SMALL=VALUE(J) 20 CONTINUE IF (K-I+1) 10,10,40 40 VALUE(K)=VALUE(I-1) VALUE(I-1)=SMALL 10 CONTINUE IF (N-N/2*2) 50,50,60 50 AMEDIA=(VALUE(LIMIT-1)+VALUE(LIMIT))/2 GO TO 70 60 AMEDIA=VALUE(LIMIT) 70 CONTINUE C C DETERMINE AVERAGE OR MEAN VALUE C SUM=0 DO 100 I=1,N 100 SUM=SUM+VALUE(I) C AVE=SUM/N C C DETERMINE STANDARD DEVIATION C SSQDIF=0. DO 110 I=1,N DIF=VALUE(I)-AVE 110 SSQDIF=SSQDIF+DIF*DIF SIGMA=SQRT(SSQDIF/N) C C DETERMINE PERCENTAGE OF MEASUREMENTS WITHIN ONE, TWO, C AND THREE STANDARD DEVIATIONS. C STD1=0. STD2=0. STD3=0. C DO 120 I=1,N IF ( ABS ( VALUE(I)-AVE )-SIGMA ) 130,130,140 130 STD1 = STD1 + 1.0 140 IF ( ABS ( VALUE(I)-AVE )-2.*SIGMA ) 150,150,160 150 STD2=STD2+1.0 160 IF ( ABS ( VALUE(I)-AVE )-3.*SIGMA ) 170,170,120 170 STD3=STD3+1 120 CONTINUE C PER1SD=STD1*100/N PER2SD=STD2*100/N PER3SD=STD3*100/N C CALL PLOT C C NOW WRITE THE HEADER WITH NUMBER OF ITEMS AND FILE NAME C WRITE (OUT,895) WRITE (OUT,602)NAME,N C 602 FORMAT(/,5X,'Evaluation of file: ',2A6, *//,5X,'Number of data items =',I5,//) C C BRANCH IF DATA SET ISN'T WANTED C IF (Z1-0) 700,701,700 C C WRITE OUT THE RE-ORDERED DATA C 700 WRITE (OUT,2)(VALUE(I),I=1,N) C 2 FORMAT('ORDERED DATA SET',//,(4F14.3)) C C C C 701 WRITE (OUT,3)VALUE(1),VALUE(N),AMEDIA,AVE C 3 FORMAT(//,'LOWEST VALUE =',F12.3,/,'HIGEST VALUE =', *F12.3,/,'MEDIAN VALUE =',F12.3,/,'MEAN VALUE =', *F12.3) C C WRITE (OUT,899)SIGMA C 899 FORMAT (///,7X,'STANDARD DEVIATION =',F12.2) C C WRITE (OUT,900)PER1SD,PER2SD,PER3SD C 900 FORMAT(//,'PERCENTAGE OF MEASUREMENTS WITHIN',//, *'ONE SIGMA= ',F10.3,/, *'TWO SIGMA= ',F10.3,/, *'THREE SIGMA= ',F10.3,/) C C C COMPUTE DISTRIBUTION OF MEASURED VALUES. C NUMB=30 SMALL1 = AMEDIA-(SIGMA*2.5) SMALL2 = AMEDIA+(SIGMA*2.5) SMALL = IFIX(SMALL1+.5) STEP = (SMALL2-SMALL1)/NUMB IF (STEP .GT. 1) GO TO 179 STEP = 1 179 STEP = IFIX(STEP+.5) C C C DO 180 I=1,NUMB 180 DIST(I)=0 DO 190 I=1,N K=(VALUE(I)-SMALL)/STEP+1.0 190 DIST(K)=DIST(K)+1.0 C C C PRINT DISTRIBUTION C WRITE (OUT,4) 4 FORMAT(///,' DISTRIBUTION',//,9X,'NUMBER OF MEASUREMENTS * BETWEEN'/) C C A = SMALL DO 200 I=1,NUMB B = A + STEP WRITE (OUT,5)A,B,DIST(I) 200 A = B C C 5 FORMAT( 11X,F12.0,' AND',F12.0,' =',F6.1) WRITE (OUT,201) 201 FORMAT(///) C C C FIND THE MAXIMUM VALUE FOR SCALING C A=DIST(1) DO 205 I=2,NUMB IF ( A - DIST(I) )204,205,205 204 A = DIST(I) 205 CONTINUE C C C CALCULATE THE SCALE FACTOR C SCALE = 1 IF ( A - 16 ) 207,207,206 206 SCALE = A/16 C C WRITE OUT SCALE AND MAX VALUE C 207 WRITE (1,208)SCALE,A 208 FORMAT (5X,'SCALE FACTOR IS: ',F10.2,/, *5X,'MAX SCALE IS: ',F10.2,//, *'SCREEN PLOT IN FIVE SECONDS...PRESS SPACE TO HOLD PLOT') CALL DELAY(500) C C HERE IS A PLOT OF THE THING C CALL PLOT DO 917 I=1,NUMB CALL PLOT(16,I+10,'+',1) M=0 DO 916 J=16,1,-1 M=M+1 IF ( DIST(I)/SCALE .LT. M )GO TO 916 CALL PLOT(J,I+10,#A300,1) 916 CONTINUE 917 CONTINUE STOP C C COME HERE FOR BAD DATA FILE C 1001 STOP 'OPERATION ABORTED----INVALID DATA FILE' END