10000 REM ***************** rep routine 19/01/00 ***************** 10010 REM MKII/MKIII/MKIV Display Instrument Average Files 10020 REM 10030 REM (SCI-TEC Instruments, January 2000) 10040 REM 10050 REM ******************************************************** 11000 ON ERROR GOTO 40000 11010 DATA rep 11100 ' 11101 ' *** Files to use *** 11102 ' 11110 I=FRE(0):I=FRE(" ") 11120 A$(0)="":F%(0)=0:ERASE A$,F%:DIM A$(10),F%(10) 11130 IF MDD$="n2" THEN 11500 11200 NFILE%=6 11210 A$(1)="SLOAVG":F%(1)=17 11220 A$(2)="HGOAVG":F%(2)=1 'exist 2 more (temp & # obs) 11230 A$(3)="APOAVG":F%(3)=3 11240 A$(4)="DTOAVG":F%(4)=2 11250 A$(5)="MIOAVG":F%(5)=3 ' exist 4 more 11260 A$(6)="RSOAVG":F%(6)=8 11270 GOTO 12000 11500 NFILE%=5 11510 A$(1)="SLNAVG":F%(1)=17 11520 A$(2)="HGNAVG":F%(2)=1 'exist 2 more (temp & # obs) 11530 A$(3)="APNAVG":F%(3)=3 11540 A$(4)="DTNAVG":F%(4)=2 11550 A$(5)="RSNAVG":F%(5)=8 12000 ' 12001 ' *** Read the range of days to print *** 12002 ' 12010 GOSUB 9890 12020 LOCATE 5,5 :PRINT "Input the range of days you wish to view (dddyy) " 12030 LOCATE 7,15:PRINT "First day ("+STR$(VAL(JD$)-1)+") ---> "; 12040 LOCATE 9,15:PRINT "Last day ("+STR$(VAL(JD$)-1)+") ---> "; 12050 LOCATE 9,44:PRINT "Year ("+YF$+") ---> "; 12060 LOCATE 7,37:INPUT "",FDAY$ 12070 LOCATE 9,37:INPUT "",LDAY$ 12080 LOCATE 9,58:INPUT "",YEAR$:IF LEN(YEAR$)=1 OR LEN(YEAR$)>2 THEN YEAR$=RIGHT$("0"+YEAR$,2) 12090 LOCATE 13,15 12100 IF FDAY$="" THEN FDAY$=STR$(VAL(JD$)-1) 12110 IF LDAY$="" THEN LDAY$=STR$(VAL(JD$)-1) 12120 IF YEAR$="" THEN YEAR$=YF$ 12130 I=FRE(0):I=FRE("") 12140 I=FRE(0)-(96*(ABS(VAL(LDAY$)-VAL(FDAY$))+1))+40 12150 IF I>2048 THEN 12180 12160 PRINT "Possible overflow, Do you wish to try fewer days (y/n) ? " 12170 RESP$=INPUT$(1):IF RESP$="y" OR RESP$="Y" THEN 12000 ELSE 15000 12180 IF VAL(FDAY$)=0 OR VAL(LDAY$)=0 OR VAL(FDAY$)>VAL(LDAY$) OR VAL(FDAY$)>366 OR VAL(LDAY$)>366 THEN PRINT "Error in parameters ,try again ":GOTO 12000 12190 PRINT " Are they correct (y/n) ? ";STRING$(35,32) 12200 RESP$=INPUT$(1):LOCATE 13,46:PRINT RESP$ 12210 IF RESP$<>"N" AND RESP$<>"n" THEN V1(1)=0:V2(1)=0:ERASE V1,V2:DIM V1(17),V2(NFILE%,4,ABS(VAL(LDAY$)-VAL(FDAY$))+1) ELSE 12000 12220 LOCATE 15,15:PRINT "Do you wish the output routed to printer (y/n) ? ";CHR$(29);CHR$(29); 12230 RESP$=INPUT$(1):PRINT RESP$:GOSUB 9890 12240 IF RESP$="Y" OR RESP$="y" THEN PR$="lpt1:" ELSE PR$="scrn:":KEY OFF 12250 CLOSE 4:OPEN PR$+" " FOR OUTPUT AS 4 12260 IF PR$="scrn:" THEN 13000 12270 PRINT#4,CHR$(10):LOCATE 20,20 12280 PRINT "ADJUST PAPER AND PRESS WHEN READY" 12290 IF INPUT$(1)<>CHR$(13) THEN 12290 13000 ' 13001 ' *** Reading the files *** 13002 ' 13010 FLAG%=1:GOSUB 35000 13020 IF PR$="scrn:" THEN VIEW PRINT 8 TO 23 13030 DAYP%=VAL(FDAY$) 13040 FOR FILE%=1 TO NFILE%-1 13050 CLOSE 6:OPEN DD$+A$(FILE%)+"."+NO$ FOR INPUT AS #6 13060 WHILE NOT EOF(6) 13070 INPUT#6,ZZ 13080 IF ZZ<=VAL("9"+YEAR$) THEN DAYIN%=VAL(LEFT$(STR$(ZZ),2)):GOTO 13110 13090 IF ZZ<=VAL("99"+YEAR$) THEN DAYIN%=VAL(LEFT$(STR$(ZZ),3)):GOTO 13110 13100 DAYIN% =VAL(LEFT$(STR$(ZZ),4)) 13110 YEARIN$=RIGHT$(STR$(ZZ),2) 13120 IF YEARIN$<>YEAR$ AND NOT EOF(6) THEN LINE INPUT#6,ZZ$:GOTO 13210 13130 IF DAYIN%VAL(LDAY$) AND NOT EOF(6) THEN LINE INPUT#6,ZZ$:GOTO 13210 13140 DAY%=ABS(VAL(FDAY$)-DAYIN%)+1 13150 FOR I=1 TO F%(FILE%) 13160 IF NOT EOF(6) THEN INPUT#6,XX 13170 IF FILE%=1 THEN V1(I)=XX ELSE V2(FILE%,I,DAY%)=XX 13180 NEXT 13190 IF FILE%=1 THEN GOSUB 25000 13200 IF FILE%=5 THEN V2(5,1,DAY%)=V2(5,3,DAY%):IF NOT EOF(6) THEN INPUT#6,GARBECH$ 13210 WEND 13220 CLOSE 6 13230 NEXT FILE% 14000 ' 14001 ' *** Print hgmax, ad values, dead time, run/stop, micrometer step *** 14002 ' 14010 FLAG%=0 14020 IF PR$<>"lpt1:" THEN VIEW PRINT:LOCATE 23,20:PRINT "Press to continue ...":A$=INPUT$(1) 14030 GOSUB 35000 14040 IF PR$="scrn:" THEN VIEW PRINT 8 TO 23 14050 FOR I%=VAL(FDAY$) TO VAL(LDAY$) 14060 DAY%=I%-VAL(FDAY$)+1 14070 PRINT#4, STR$(I%)+YEAR$; 14080 FOR FILE%=2 TO NFILE%-1 14090 FOR FF=1 TO F%(FILE%) 14100 IF (FILE%=3 AND FF=3) OR (FILE%=5 AND FF>1) THEN 14130 14110 IF V2(FILE%,FF,DAY%)=0 THEN PRINT#4," ...";:GOTO 14130 14120 GOSUB 20000:PRINT#4, USING " "+F$; V2(FILE%,FF,DAY%); 14130 NEXT FF 14140 RA$="" : RA1$="" 14150 IF FILE%=4 THEN IF V2(FILE%,1,DAY%)>(T1+(T1*.1))*10^9 OR V2(FILE%,1,DAY%)<(T1-(T1*.1))*10^9 THEN RA$="*" ELSE RA$=" " 14160 IF RA$="*" THEN 14180 14170 IF FILE%=4 THEN IF V2(FILE%,2,DAY%)>(T1+(T1*.1))*10^9 OR V2(FILE%,2,DAY%)<(T1-(T1*.1))*10^9 THEN RA1$="*" ELSE RA1$=" " 14180 IF FILE%=4 THEN PRINT#4,RA$+RA1$; 14190 NEXT FILE% 14200 PRINT#4, 14210 NEXT I% 14220 PRINT#4,CR$+CR$+CR$+" * Day with Dead time out of range (";(T1-(T1*.1))*10^9;",";(T1+(T1*.1))*10^9;")" 14230 IF PR$<>"lpt1:" THEN VIEW PRINT:LOCATE 23,20:PRINT "Press to continue ...":A$=INPUT$(1) 14240 GOSUB 30000 15000 ' 15001 ' *** Clean up and exit *** 15002 ' 15010 PRINT CL$:CLOSE 4,6:OPEN "lpt1:" FOR OUTPUT AS 4 15020 ERASE V1,V2,A$,F% 15030 ON ERROR GOTO 3100:RETURN 20000 ' 20001 ' *** Create format for each record *** 20002 ' 20010 F$="" 20020 IF FILE%=1 OR FILE%=NFILE% THEN LO%=8 ELSE LO%=7 20030 IF FLAG%=1 THEN A$=STR$(V1(FF)) ELSE A$=STR$(V2(FILE%,FF,DAY%)) 20040 FOR I=1 TO LEN(A$) 20050 IF MID$(A$,I,1)="." THEN F$=F$+"." ELSE F$=F$+"#" 20060 NEXT 20070 IF LEN(F$)LO% THEN F$=LEFT$(F$,LO%) 20110 RETURN 25000 ' 25001 ' *** Printing SL data *** 25002 ' 25010 IF DAYIN%VAL(LDAY$) THEN 11460 25020 PRINT#4,STR$(DAYP%)+YEARIN$; " "; 25030 WHILE DAYP%0 THEN 25150 25120 IF FILE%=1 AND FF<4 THEN PRINT#4, " ..."; ELSE PRINT#4," ..."; 25130 GOTO 25170 25150 GOSUB 20000:PRINT#4,USING F$;V1(FF); 25160 IF FILE%=1 AND FF=2 THEN PRINT#4,USING " ###.#";(V1(1)+V1(2))/2; 25170 NEXT FF 25180 IF FILE%=1 THEN PRINT#4, 25190 DAYP%=DAYP%+1:RETURN 30000 ' 30001 ' *** Print RS data *** 30002 ' 30010 IF PR$="scrn:" THEN PRINT#4,CHR$(12) ELSE PRINT#4,:PRINT#4,:PRINT#4, 30020 PRINT#4,"Values for "+MDD$+" Location ."+LO$;SPC(10);"Brewer #"+NO$:PRINT#4, 30030 PRINT#4,"DATE RUN / STOP " 30040 PRINT#4," 0 1 2 3 4 5 6 7 " 30050 PRINT#4,"------ ------ ------ ------ ------ ------ ------ ------ ------" 30060 PRINT#4, 30070 FLAG%=1 30080 IF PR$="scrn:" THEN VIEW PRINT 8 TO 23 30090 DAYP%=VAL(FDAY$) 30100 FILE%=6 30110 CLOSE 6:OPEN DD$+A$(FILE%)+"."+NO$ FOR INPUT AS #6 30120 WHILE NOT EOF(6) 30130 INPUT#6,ZZ 30140 DAYBF%=DAYIN% 30150 IF ZZ<=VAL("9"+YEAR$) THEN DAYIN%=VAL(LEFT$(STR$(ZZ),2)):GOTO 30180 30160 IF ZZ<=VAL("99"+YEAR$) THEN DAYIN%=VAL(LEFT$(STR$(ZZ),3)):GOTO 30180 30170 DAYIN% =VAL(LEFT$(STR$(ZZ),4)) 30180 YEARIN$=RIGHT$(STR$(ZZ),2) 30190 IF YEARIN$<>YEAR$ THEN 30300 30200 IF (DAYIN%VAL(LDAY$)) AND NOT EOF(6) THEN LINE INPUT#6,ZZ$:GOTO 30300 30210 IF DAYBF%=DAYIN% THEN DAYP%=DAYP%-1 30220 RA$="":FOR I=1 TO F%(FILE%) 30230 IF NOT EOF(6) THEN INPUT#6,XX 30240 V1(I)=XX:IF I<>2 AND (XX<.997 OR XX>1.003) THEN RA$=" *" 30250 NEXT:GOSUB 25000:PRINT#4,RA$ 30300 WEND:CLOSE 6 30320 PRINT#4,CR$;CR$;" * Day with ratio out of range ( 1 +/- 0.003 )" 30330 IF PR$<>"lpt1:" THEN VIEW PRINT:LOCATE 23,20:PRINT "Press to continue ...":A$=INPUT$(1) 30340 RETURN 35000 ' 35001 ' *** Print titles *** 35002 ' 35010 IF FLAG%<>1 THEN 35200 35020 IF PR$="scrn:" THEN CLS 35030 PRINT#4,"Values for "+MDD$+" Location : "+LO$;SPC(10);"Brewer #"+NO$:PRINT#4, 35040 PRINT#4," STANDARD LAMP" 35050 PRINT#4," TEMP NUM." 35060 PRINT#4," DATE L H Avg Obs R1 R2 R3 R4 R5 R6 F1" 35070 PRINT#4,"------ ------------ --- ------ ------ ------ ------ ------ ------ -----" 35080 GOTO 35400 35200 IF PR$="scrn:" THEN PRINT#4,CHR$(12) ELSE PRINT#4,:PRINT#4,:PRINT#4, 35210 PRINT#4,"Values for "+MDD$+" Location ."+LO$;SPC(10);"Brewer #"+NO$:PRINT#4, 35220 PRINT#4," HG A / D DEAD TIME MIC. " 35230 PRINT#4,"DATE Int. H. T. + 5v High Low Step " 35240 PRINT#4,"------ ------- ------- ------- ------- ------- -------" 35250 PRINT#4, 35400 RETURN 40000 ' 40001 ' *** Error handler *** 40002 ' 40010 IF ERR=53 AND ERL=13050 THEN RESUME 13230 40020 LOCATE 20,20:PRINT "Error : ";ERR;" Line :";ERL:FOR ZZ=1 TO 500:NEXT ZZ 40030 IF ERR=62 THEN LOCATE 15,15:PRINT "Error in file "+A$(FILE%)+"."+NO$:RESUME 15000 40040 IF ERR=7 THEN LOCATE 15,15:PRINT "Out of memory. Try fewer days ":RESUME 15000 40050 IF ERR=10 AND ERL=12210 THEN ERASE V1,V2:RESUME 40055 IF ERR=10 AND ERL=11120 THEN ERASE A$,F%:RESUME 40060 IF ERR=5 AND ERL=13020 OR ERL=14020 OR ERL=14040 OR ERL=14330 THEN RESUME NEXT 40070 IF ERR=53 AND ERL=30110 THEN RESUME 30320 40080 RESUME 15000 65529 DATA proper last line