10 ' This progran is to print station data from KER's floppy. 20 ' 30 ' ******************************************* 40 ' * KERSD * 50 ' ******************************************* 60 ' 70 CLS : DEFINT I-N : OPTION BASE 1 : CONSOLE 0,25,0,1 80 DIM OBDEP$(50),STDEP$(59),ODAT$(26,50),SDAT$(10,50) 90 DIM HEAD1$(20) 110 *DAT1 120 DATA " COD "," BOD ","NH3-N","Chla ","Alkal","Pheao", " T-N "," TOC "," HC "," SS "," PCB "," As ", " Pb "," Hg "," T-N "," Cd " 150 ' RESTORE *DAT1 160 FOR I=1 TO 16 170 READ HEAD1$(I) 175 NEXT I 180 *STARTS 181 CLS:LOCATE 3,3 182 LOCATE 15,8: PRINT"Please insert FD into the device " 183 LOCATE 20,10: PRINT"PLease key in device No. of FD " 184 LOCATE 25,12: INPUT "Example : D " ; DRIVE$ 185 CLS:LOCATE 0,1: FILES DRIVE$+":*.?TD" : FILES DRIVE$+":*.SD" 186 PRINT :INPUT"Please key in File-Name (XXXX.XXX)";FLNAME$ 188 FLNAME$=DRIVE$+":"+FLNAME$ 200 OPEN FLNAME$ FOR INPUT AS #1 210 *ST05 215 GOSUB *INIT 220 PRINT 230 INPUT "Which station do you display on the screen (xxxx) ";NSTN 235 *INPUTMASTER 240 *ST10 250 INPUT #1,A$ 260 IF EOF(1) THEN PRINT : PRINT "Couldn't find the satation" : GOTO *ST05 265 IF MID$(A$,1,1) <> "1" THEN GOTO *ST10 270 INPUT #1,B$ 280 IF EOF(1) THEN PRINT : PRINT "Couldn't find record type 2": GOTO *ST05 300 IF VAL(MID$(A$,11,4)) <> NSTN THEN GOTO *ST10 310 ' 320 LIN1$="Ref:"+MID$(A$,3,12)+" Ship Code:"+MID$(A$,15,2)+" Color:" 330 LIN1$=LIN1$+MID$(B$,3,2)+" Wind:"+MID$(B$,12,5)+" Weather:" 340 LIN1$=LIN1$+MID$(B$,28,2)+" Instrument" 350 ' 360 LIN2$="Lat.: "+MID$(A$,17,2)+" "+MID$(A$,19,2)+"."+MID$(A$,21,2) 370 LIN2$=LIN2$+" Date:19"+MID$(A$,31,2)+" "+MID$(A$,33,2)+" " 380 LIN2$=LIN2$+MID$(A$,35,2)+" Trans:"+MID$(B$,5,2)+" Bar :" 390 LIN2$=LIN2$+MID$(B$,17,2)+"."+MID$(B$,19,1)+" Cloud :" 400 LIN2$=LIN2$+MID$(B$,30,2)+" " 410 IF MID$(A$,47,1) = "C" THEN LIN2$=LIN2$+"CTD" 420 IF MID$(A$,47,1) = "S" THEN LIN2$=LIN2$+"STD" 425 IF MID$(A$,47,1) = "0" THEN LIN2$=LIN2$+"Nanzen 430 ' 440 LIN3$="Lon.:"+MID$(A$,23,3)+" "+MID$(A$,26,2)+"."+MID$(A$,28,2) 450 LIN3$=LIN3$+" Time:"+MID$(A$,37,2)+" GMT Wave :" 460 LIN3$=LIN3$+MID$(B$,7,5) 465 IF MID$(B$,20,4)="+000" THEN LIN3$=LIN3$+"Temp:"+" " ELSE LIN3$=LIN3$+"Temp:"+MID$(B$,20,3)+"."+MID$(B$,23,1) 475 IF MID$(B$,24,4)="+000" THEN LIN3$=LIN3$+", " ELSE LIN3$=LIN3$+","+MID$(B$,24,3)+"."+MID$(B$,27,1) 477 LIN3$=LIN3$+" Vis:"+MID$(B$,32,1) 480 IEOF=0 : ODEPN=0 : ITEM=0 : ODEP$="99999" : SDEPN=0 : SDEP$="99999" 485 IAD=0 490 *ST20 500 INPUT #1,D$ 510 IF EOF(1) THEN IEOF=9 : GOTO *ST100 520 IF MID$(D$,1,1) = "3" THEN GOTO *ST30 530 IF MID$(D$,1,1) = "4" THEN GOTO *ST40 540 IF MID$(D$,1,1) = "6" THEN GOTO *ST60 550 GOTO *ST20 555 *INPUTOBS 560 *ST30 570 IF MID$(D$,3,5) <> ODEP$ THEN ODEPN=ODEPN+1 : ODEP$=MID$(D$,3,5) : OBDEP$(ODEPN)=ODEP$ 580 X$=MID$(D$,8,5) 590 IF X$ <> "99999" THEN ODAT$(1,ODEPN)=MID$(X$,1,3)+"."+MID$(X$,4,2) ELSE ODAT$(1,ODEPN)=" " 600 X$=MID$(D$,14,5) 610 IF X$ <> "99999" THEN ODAT$(2,ODEPN)=MID$(X$,1,2)+"."+MID$(X$,3,3) ELSE ODAT$(2,ODEPN)=" " 620 X$=MID$(D$,20,4) 630 IF X$ <> "9999" THEN ODAT$(3,ODEPN)=MID$(X$,1,2)+"."+MID$(X$,3,2) ELSE ODAT$(3,ODEPN)=" " 640 X$=MID$(D$,25,3) 650 IF X$ <> "999" THEN ODAT$(4,ODEPN)=MID$(X$,1,1)+"."+MID$(X$,2,2) ELSE ODAT$(4,ODEPN)=" " 660 X$=MID$(D$,29,3) 670 IF X$ <> "999" THEN ODAT$(5,ODEPN)=MID$(X$,1,1)+"."+MID$(X$,2,2) ELSE ODAT$(5,ODEPN)=" " 680 X$=MID$(D$,33,3) 690 IF X$ <> "999" THEN ODAT$(6,ODEPN)=MID$(X$,1,1)+"."+MID$(X$,2,3) ELSE ODAT$(6,ODEPN)=" " 700 X$=MID$(D$,37,3) 710 IF X$ <> "999" THEN ODAT$(7,ODEPN)=MID$(X$,1,2)+"."+MID$(X$,3,1) ELSE ODAT$(7,ODEPN)=" " 720 X$=MID$(D$,41,3) 730 IF X$ <> "999" THEN ODAT$(8,ODEPN)=X$ ELSE ODAT$(8,ODEPN)=" " 740 X$=MID$(D$,45,3) 750 IF X$ <> "999" THEN ODAT$(9,ODEPN)=MID$(X$,1,1)+"."+MID$(X$,2,2) ELSE ODAT$(9,ODEPN)=" " 760 ' 770 IF MID$(D$,2,1) = "1" THEN GOTO *ST100 ELSE GOTO *ST20 780 ' 785 *INPUTADD 790 *ST40 800 IF MID$(D$,3,5) <> ODEP$ THEN ODEPN=ODEPN+1 : ODEP$=MID$(D$,3,5) : OBDEP$(ODEPN)=ODEP$ 810 FOR I=1 TO 5 820 X$=MID$(D$,I*9+1,5) 830 IF X$ = "99999" THEN GOTO *ST55 840 N=VAL(MID$(D$,I*9-1,2)) : E=VAL(MID$(D$,I*9+6,1)) 842 IF IAD=0 THEN IAD=1 : NAD(IAD)=N : GOTO *ST50 844 FOR J=1 TO IAD 846 IF NAD(J)=N THEN GOTO *ST50 848 NEXT J 850 IAD=IAD+1 852 NAD(IAD)=N 854 *ST50 858 ODAT$(N,ODEPN)=MID$(X$,1,5-E)+"." +MID$(X$,6-E,E) 859 *ST55 860 NEXT I 870 IF MID$(D$,2,1) = "1" THEN GOTO *ST100 ELSE GOTO *ST20 880 ' 885 *INPUTSTAND 890 *ST60 900 IF MID$(D$,3,5) <> SDEP$ THEN SDEPN=SDEPN+1 : SDEP$=MID$(D$,3,5) : STDEP$(SDEPN)=SDEP$ 910 X$=MID$(D$,8,5) 920 IF X$ <> "99999" THEN SDAT$(1,SDEPN)=MID$(X$,1,3)+"."+MID$(X$,4,2) ELSE SDAT$(1,SDEPN)=" " 930 X$=MID$(D$,14,5) 940 IF X$ <> "99999" THEN SDAT$(2,SDEPN)=MID$(X$,1,2)+"."+MID$(X$,3,3) ELSE SDAT$(2,SDEPN)=" " 950 X$=MID$(D$,20,4) 960 IF X$ <> "9999" THEN SDAT$(3,SDEPN)=MID$(X$,1,2)+"."+MID$(X$,3,2) ELSE SDAT$(3,SDEPN)=" " 970 X$=MID$(D$,25,4) 980 IF X$ <> "9999" THEN SDAT$(4,SDEPN)=MID$(X$,1,2)+"."+MID$(X$,3,2) ELSE SDAT$(4,SDEPN)=" " 990 X$=MID$(D$,30,5) 1000 IF X$ <> "99999" THEN SDAT$(5,SDEPN)=MID$(X$,1,4)+"."+MID$(X$,5,1) ELSE SDAT$(5,SDEPN)=" " 1010 X$=MID$(D$,36,5) 1020 IF X$ <> "99999" THEN SDAT$(6,SDEPN)=MID$(X$,1,4)+"."+MID$(X$,5,1) ELSE SDAT$(6,SDEPN)=" " 1030 X$=MID$(D$,42,4) 1040 IF X$ <> "9999" THEN SDAT$(7,SDEPN)=MID$(X$,1,1)+"."+MID$(X$,2,3) ELSE SDAT$(7,SDEPN)=" " 1050 X$=MID$(D$,47,4) 1060 IF X$ <> "9999" THEN SDAT$(8,SDEPN)=MID$(X$,1,3)+"."+MID$(X$,4,1) ELSE SDAT$(8,SDEPN)=" " 1070 IF MID$(D$,2,1) = "1" THEN GOTO *ST100 ELSE GOTO *ST20 1080 ' 1085 *PRINTOBSDATA 1090 *ST100 1100 N=0 1110 *ST110 1120 IF N < 0 THEN N=0 1130 GOSUB *PRINTHEAD 1140 GOSUB *PRINTOBS 1150 *ST120 1160 ID=3 : GOSUB *PRINTKEY 1170 IF IKEY=1 THEN N=N+15 : GOTO *ST110 1180 IF IKEY=2 THEN N=N-15 : GOTO *ST110 1190 IF IKEY=3 THEN GOTO *ST140 1200 IF IKEY=4 THEN GOTO *ST200 1210 IF IKEY=5 THEN CLS : GOTO *ST05 1215 IF IKEY=9 THEN GOTO *ENDPROG 1220 GOTO *ST120 1230 ' 1235 *PRINTSTANDDATA 1240 *ST140 1250 N=0 1260 *ST150 1270 IF N < 0 THEN N=0 1280 GOSUB *PRINTHEAD 1290 GOSUB *PRINTSTN 1300 *ST160 1310 ID=6 : GOSUB *PRINTKEY 1320 IF IKEY=1 THEN N=N+15 : GOTO *ST150 1330 IF IKEY=2 THEN N=N-15 : GOTO *ST150 1340 IF IKEY=3 THEN GOTO *ST100 1350 IF IKEY=4 THEN GOTO *ST200 1360 IF IKEY=5 THEN CLS : GOTO *ST05 1370 IF IKEY=9 THEN GOTO *ENDPROG 1380 GOTO *ST160 1390 ' 1395 *PRINTADDDATA 1400 *ST200 1410 N=0 1420 *ST210 1430 IF N < 0 THEN N=0 1440 GOSUB *PRINTHEAD 1450 GOSUB *PRINTADD 1460 *ST220 1470 ID=4 : GOSUB *PRINTKEY 1480 IF IKEY=1 THEN N=N+15 : GOTO *ST210 1490 IF IKEY=2 THEN N=N-15 : GOTO *ST210 1500 IF IKEY=3 THEN GOTO *ST140 1510 IF IKEY=4 THEN GOTO *ST100 1520 IF IKEY=5 THEN CLS : GOTO *ST05 1530 IF IKEY=9 THEN GOTO *ENDPROG 1540 GOTO *ST220 1550 ' 1560 *ENDPROG 1565 CLS : PRINT "Program End" 1570 CLOSE 1580 END 1590 ' ***************************************************************: 1600 ' * PRINT HEADER * 1610 ' *************************************************************** 1620 ' 1630 *PRINTHEAD 1640 CLS 1645 PRINT 1650 PRINT LIN1$ : PRINT LIN2$ : PRINT LIN3$ 1660 RETURN 1670 ' ***************************************************************: 1680 ' * PRINT OBSERVATION DATA * 1690 ' *************************************************************** 1700 ' 1710 *PRINTOBS 1712 NFLAG=0 : BFLAG=0 1714 IF N=0 OR ODEPN < 16 THEN BFLAG=9 1720 LOCATE 30,5 : PRINT "Observation Data" 1730 PRINT "Depth Temp Psal DO P T-P NO2-N NO3-N Si pH" 1740 FOR I=1 TO 15 1750 K=N+I : IF K > ODEPN THEN NFLAG=9 : GOTO *OBRTN 1755 Y$=OBDEP$(K) : GOSUB *ZEROSUP 1760 X$=Y$+" " 1770 FOR J=1 TO 9 1775 Y$=ODAT$(J,K) : GOSUB *ZEROSUP 1780 X$=X$+Y$+" " 1790 NEXT J 1800 PRINT X$ 1810 NEXT I 1820 *OBRTN 1830 RETURN 1840 ' *************************************************************** 1850 ' * PRINT STANDARD DATA * 1860 ' *************************************************************** 1870 ' 1880 *PRINTSTN 1882 NFLAG=0 : BFLAG=0 1884 IF N=0 OR SDEPN < 16 THEN BFLAG=9 1890 LOCATE 30,5 : PRINT "Standard Depth Data " 1900 PRINT "Depth Temp Psal DO SIGMA-t D-T SVA D-DY S.VEL" 1910 FOR I=1 TO 15 1920 K=N+I : IF K > SDEPN THEN NFLAG=9 : GOTO *STRTN 1925 Y$=STDEP$(K) : GOSUB *ZEROSUP 1930 X$=Y$+" " 1940 FOR J=1 TO 8 1945 Y$=SDAT$(J,K) : GOSUB *ZEROSUP 1950 X$=X$+Y$+" " 1960 NEXT J 1970 PRINT X$ 1980 NEXT I 1990 *STRTN 2000 RETURN 2010 ' ***************************************************************: 2020 ' * PRINT KEY * 2030 ' *************************************************************** 2040 ' 2050 *PRINTKEY 2075 LOCATE 1,24 2080 IF NFLAG <> 9 THEN PRINT " 1:Next Page "; 2085 IF BFLAG <> 9 THEN PRINT "2:Before Page "; 2090 IF ID=3 OR ID=4 THEN PRINT "3:Standard Data "; ELSE PRINT "3:Obs. Data "; 2095 IF ID=3 OR ID=6 THEN IF IAD <> 0 THEN PRINT "4:additional Data "; 2100 IF ID<>3 AND ID<>6 THEN PRINT "4:Obs. Data "; 2110 PRINT "5:Next Stn. 9:END" 2112 LOCATE 1,22 2114 INPUT "Please select number to go to next step ";IKEY 2120 RETURN 2130 ' ***************************************************************: 2140 ' * PRINT Additional Data * 2150 ' *************************************************************** 2160 ' 2170 *PRINTADD 2180 NFLAG=0 : BFLAG=0 2190 IF N=0 OR ODEPN < 16 THEN BFLAG=9 2200 LOCATE 10,5 : PRINT "Additional Data (Chemical Data) " 2202 IF IAD > 10 THEN IAD=10 2204 X$="Depth " 2206 FOR I=1 TO IAD 2208 J=NAD(I)-10 2210 X$=X$+HEAD1$(J)+" " 2212 NEXT I 2214 PRINT X$ 2230 FOR I=1 TO 15 2240 K=N+I : IF K > ODEPN THEN NFLAG=9 : GOTO *ADRTN 2250 Y$=OBDEP$(K) : GOSUB *ZEROSUP 2255 X$=Y$+" " 2260 FOR J=1 TO IAD 2265 L=NAD(J) 2267 Y$=ODAT$(L,K) : GOSUB *ZEROSUP 2270 X$=X$+Y$+" " 2280 NEXT J 2290 PRINT X$ 2300 NEXT I 2400 *ADRTN 2410 RETURN 2420 ' ***************************************************************: 2430 ' * Zero supress * 2440 ' *************************************************************** 2450 ' 2460 *ZEROSUP 2465 ZFLAG=0 2467 IF MID$(Y$,1,1) = "+" THEN W$=MID$(Y$,1,1) : GOTO *ZE10 2470 IF MID$(Y$,1,1) = "0" AND MID$(Y$,2,1) <> "." THEN W$=" " ELSE W$=MID$(Y$,1,1) : ZFLAG=9 2475 *ZE10 2480 NC=LEN(Y$) 2490 FOR NA=2 TO NC-1 2495 IF MID$(Y$,NA,1)<>"0" THEN ZFLAG=9 2500 IF MID$(Y$,NA,1)="0" AND MID$(Y$,NA+1,1)<>"." AND ZFLAG<>9 THEN W$=W$+" " ELSE W$=W$+MID$(Y$,NA,1) 2510 NEXT NA 2520 Y$=W$+MID$(Y$,NC,1) 2530 RETURN 2540 ' ***************************************************************: 2550 ' * Initialize * 2560 ' *************************************************************** 2570 ' 2580 *INIT 2590 FOR I=1 TO 50 2600 OBDEP$(I)=" " 2610 STDEP$(I)=" " 2620 FOR J=1 TO 26 2630 ODAT$(J,I)=" " 2640 NEXT J 2650 FOR J=1 TO 10 2660 SDAT$(J,I)=" " 2670 NEXT J 2680 NEXT I 2690 RETURN