C C FORTRAN MAINLINE FOR BM C CALL BM END SUBROUTINE ERRPRT(ICODE) C C SUBROUTINE TO WRITE AN ERROR MESSAGE C WRITE (5,99)ICODE 99 FORMAT (' FCS ERROR CODE ',I3,' ON BITMAP FILE') END C SUBROUTINE "RPR" ACCEPTS HISTOGRAM PARAMETER ON THE TERMINAL C CALLED BY "FREBLK" C C THE USER FIRST SPECIFIES THE START, INTERVAL AND END VALUES, EACH C UP TO 5-DIGIT LONG. EACH NUMBER IS TERMINATED BY CR C C THE USER THEN SPECIFIES WHETHER DISK UNIT 0 OR UNIT 1 IS TO BE SEARCHED C BY TYPING "0" OR "1" C C C HISTOGRAM PARAMETERS:- C C KSTR =START VALUE C INTL =INTERVAL VALUE C KEND =END VALUE C KNUMI =# OF INTERVAL(CALCULATED BY "RPR" C C DISK PARAMETER:- C C KK=0 OR 1 FOR DISK UNIT 0 OR 1 RESPECTIVELY C C ALBERT LEUNG 30-SEP-76 C C SUBROUTINE RPR(KSTR,INTL,KEND,KNUMI,DISK,DISKL) LOGICAL*1 DISK(10) INTEGER DISKL 100 WRITE (5,10) 10 FORMAT ('$STARTING HOLE SIZE? ') READ(5,55)KSTR 55 FORMAT(I5) IF(KSTR .LT. 0 .OR. KSTR .GE. 32000)GOTO 9 27 WRITE (5,200) 200 FORMAT ('$INTERVAL SIZE? ') READ(5,55)INTL IF(INTL .GT. 0 .AND. INTL .LT. 32000)GOTO 20 WRITE(5,61) 61 FORMAT(' INTERVAL VALUE SHOULD BE .GT. ZERO AND LESS THAN 32000') GOTO 27 20 KSUM=KSTR+INTL IF(KSUM .GT. 0 .AND. KSUM .LE. 32000) GOTO 3 WRITE(5,101) 101 FORMAT(' ','REDUCE AND RETYPE START AND INTERVAL VALUES') GOTO 100 3 WRITE (5,30) 30 FORMAT ('$FINAL HOLE SIZE? ') READ(5,55)KEND IF(KEND .GT. 0 .AND. KEND .LE. 32000 1 .AND. KEND .GT. KSTR .AND. KEND .GT. INTL) GOTO 29 WRITE(5,216) 216 FORMAT(' ','END VALUE SHOULD BE +VE,'/ 1 ' ','LESS THAN 32000 AND SHOULD BE GREATER THAN'/ 2 ' ','THE START AND INITIAL VALUES') GOTO 3 C C FIND NEAREST INTEGER AS THE NUMBER OF INTERVAL 29 KNUMI=INT((FLOAT(KEND) - FLOAT(KSTR)) / FLOAT(INTL)) C C MIN # OF INTERVAL =1 C MAX # " " =50 (CAN BE CHANGED. SEE COMMENTS ON "FREBLK" LISTING) C IF(KNUMI .LE. 0) KNUMI=1 8888 IF(KNUMI .LT. 50) GO TO 35 WRITE (5,2424) 2424 FORMAT (' TOO MANY INTERVALS') GO TO 100 35 WRITE (5,40) 40 FORMAT ('$DISK? ') READ (5,50)DISKL,DISK 50 FORMAT (Q,10A1) INTL=INTL-1 RETURN 9 WRITE(5,60) 60 FORMAT(' ','START VALUE SHOULE BE +VE AND LESS THAN 32000') GOTO 100 END C C SUBROUTINE "WNB" PRINTS THE HISTOGRAM DATA ON TERMINAL C CALLED BY "FREBLK" C C KCVS IS AN ARRAY CONTAINING THE CLASS LIMIT VALUES C KNINT " " " " " FREQUENCY VALUES C INTL IS THE INTERVAL VALUE C INT IS # OF INTERVAL C C ALBERT LEUNG 30-SEP-76 C C SUBROUTINE WNB(KCVS,INTL,KNINT,INT,MAXHOL) DIMENSION KCVS(INT),KNINT(INT) WRITE(5,99) 99 FORMAT (' HOLE SIZE COUNT') DO 222 I=1,INT LAST=KCVS(I)+INTL WRITE(5,66) KCVS(I),LAST,KNINT(I) 66 FORMAT (' ',I5,' TO ',I5,' ',I5) 222 CONTINUE WRITE (5,100) MAXHOL 100 FORMAT (' THE LARGEST HOLE SIZE IS ',I5) RETURN END