home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The World of Computer Software
/
World_Of_Computer_Software-02-387-Vol-3of3.iso
/
c
/
civil-ab.zip
/
MNDOTHYD.ZIP
/
IRRCHANL.BAS
< prev
next >
Wrap
BASIC Source File
|
1984-12-04
|
17KB
|
515 lines
10 REM WRITTEN BY JOE LINN , MODIFIED 10/27/80 , TRANSFERED TO IBM PC 7/84
20 REM HYDRAULICS BY WALLY MARUSENKO ROOM 718 C.O.
30 DIM XX(21),YX(21),NX(21)
40 DIM KX(20),AX(20),RX(20,20),GX(3,3),HX(3,1),IX(3,1),CX(3,23),EX(2,6)
50 DIM BX(20,20),PX(9)
60 DIM A,A0,A1,A2,A3,A4,A7,A8,A9,B,B0,B1,B2,B3,B4,B7,B9,C,C3,C9
70 DIM D,D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,E,E0,E1,E2,ET,F,FO$,G,H,H0,H1,H2,H9
80 DIM I,I1,J,K,K1,L,L1,L2,M,M1,N,N1,N1$,N2$,O9,P0,P8,Q,Q0,Q1,Q7,Q8,Q9
90 DIM R,S,S1,S2,S3,S4,S5,S6,S7,S9,T,V,V0,V1,V2,V3,V4,V9,X1,X2,X3,X4
100 DIM X8,X9,Y2,Y7,Y8,Y9,Z,Z0
110 FORMAT1$="POINT NO## ###### ###### ###### ###### ###### ###### ###### ###### ###### ######"
120 FORMAT2$="X: #####- #####- #####- #####- #####- #####- #####- #####- #####- #####- #####-"
130 FORMAT3$="X: #####- #####- #####- #####- #####- #####- #####- #####- ####- #####-"
140 FORMAT4$="Y: ####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.#"
150 FORMAT5$="Y: ####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.# ####.#"
160 FORMAT6$="N: 0.0000 #.#### #.#### #.#### #.#### #.#### #.#### #.#### #.#### #.#### #.####"
170 FORMAT7$="N: #.#### #.#### #.#### #.#### #.#### #.#### #.#### #.#### #.#### #.####"
180 FORMAT8$="POINT NO. ###### ###### ###### ###### ###### ###### ###### ###### ###### ######"
190 FORMAT9$="######.## ###### ##### ##### ##### ##### #### #### #### ###.# ##.# ##.#"
200 FORMAT10$="######.## ####.## ###.## ###.## ###.## ###.## ######## ####### ####### #######"
210 FORMAT11$="'N' FOR MAIN CHANNEL =##.####"
220 FORMAT12$="SLOPE =##.######"
230 FORMAT13$="MINIMUM LEFT X VALUE =##### SLOPE =####:1"
240 FORMAT14$="MAXIMUM RIGHT X VALUE =##### SLOPE =####:1"
250 C1LEAR$=CHR$(12):FORMFEED$=CHR$(12)
260 WIDTH "lpt1:",120
270 PI=3.14159
275 OPEN "O",#3,"LPT1:"
280 DEF FNCOMM(ARG)=65535!-ARG
290 REM CLOSE #3:INPUT "DO YOU WANT PRINTOUT ON (SCREEN=0 PRINTER=1) ",Q9:IF Q9<>0 AND Q9<>1 THEN 170
295 REM NA$="scrn:":IF Q9=1 THEN NA$="lpt1:":OPEN "O",#3,NA$:ELSE OPEN "O",#3,NA$
300 FO$=" ======================================"
310 FO$=FO$ + "======================================"
320 PRINT C1LEAR$
330 ON ERROR GOTO 55000
340 PRINT #3," "
350 PRINT #3,FORMFEED$
360 PRINT #3," "
370 PRINT #3," "
380 O9=0
390 PRINT #3,FO$
400 PRINT #3,TAB(10);"# # # # # # IRREGULAR CHANNEL, STAGE-DISCHARGE # # # # # #"
410 PRINT #3,FO$
420 PRINT #3," "
430 PRINT #3," RUN DATE ";DATE$
440 PRINT #3," "
450 PRINT C1LEAR$
460 PRINT "IRREGULAR CHANNEL, STAGE DISCHARGE PROGRAM"
470 PRINT
500 PRINT
510 PRINT "IS X-SECTION ON DISK 0=YES 1=NO";
520 INPUT Q9
530 IF Q9=1 THEN 630
540 PRINT
550 N4$=" X-SECTION TO BE LOADED FROM DISK " : GOSUB 50010
560 OPEN "I",#1,N2$
570 FOR I=1 TO 21
580 INPUT #1,XX(I),YX(I),NX(I)
590 NEXT I
600 CLOSE #1
610 F=NX(1)
620 GOTO 740
630 PRINT "ENTER NO. OF PTS. ON X-SECTION";
640 INPUT F
650 FOR I=1 TO 21
660 XX(I)=0
670 YX(I)=0
680 NX(I)=0
690 NEXT I
700 FOR A=1 TO F
710 PRINT "ENTER NO.";A;"X,Y,'N'";
720 INPUT XX(A),YX(A),NX(A)
730 NEXT A
740 C9=0
750 S9=0
760 PRINT #3,USING FORMAT1$;1,2,3,4,5,6,7,8,9,10,11
761 PRINT USING FORMAT1$;1,2,3,4,5,6,7,8,9,10,11
770 PRINT #3,USING FORMAT2$;XX(1),XX(2),XX(3),XX(4),XX(5),XX(6),XX(7),XX(8),XX(9),XX(10),XX(11)
771 PRINT USING FORMAT2$;XX(1),XX(2),XX(3),XX(4),XX(5),XX(6),XX(7),XX(8),XX(9),XX(10),XX(11)
780 PRINT #3,USING FORMAT4$;YX(1),YX(2),YX(3),YX(4),YX(5),YX(6),YX(7),YX(8),YX(9),YX(10),YX(11)
781 PRINT USING FORMAT4$;YX(1),YX(2),YX(3),YX(4),YX(5),YX(6),YX(7),YX(8),YX(9),YX(10),YX(11)
790 PRINT #3,USING FORMAT6$;NX(2),NX(3),NX(4),NX(5),NX(6),NX(7),NX(8),NX(9),NX(10),NX(11)
791 PRINT USING FORMAT6$;NX(2),NX(3),NX(4),NX(5),NX(6),NX(7),NX(8),NX(9),NX(10),NX(11)
800 IF F<12 THEN 860
810 PRINT #3," "
811 PRINT " "
820 PRINT #3,USING FORMAT8$;12,13,14,15,16,17,18,19,20,21
821 PRINT USING FORMAT8$;12,13,14,15,16,17,18,19,20,21
830 PRINT #3,USING FORMAT3$;XX(12),XX(13),XX(14),XX(15),XX(16),XX(17),XX(18),XX(19),XX(20),XX(21)
831 PRINT USING FORMAT3$;XX(12),XX(13),XX(14),XX(15),XX(16),XX(17),XX(18),XX(19),XX(20),XX(21)
840 PRINT #3,USING FORMAT5$;YX(12),YX(13),YX(14),YX(15),YX(16),YX(17),YX(18),YX(19),YX(20),YX(21)
841 PRINT USING FORMAT5$;YX(12),YX(13),YX(14),YX(15),YX(16),YX(17),YX(18),YX(19),YX(20),YX(21)
850 PRINT #3,USING FORMAT7$;NX(12),NX(13),NX(14),NX(15),NX(16),NX(17),NX(18),NX(19),NX(20),NX(21)
851 PRINT USING FORMAT7$;NX(12),NX(13),NX(14),NX(15),NX(16),NX(17),NX(18),NX(19),NX(20),NX(21)
860 FO$=" --------------------------------------"
870 FO$=FO$ + "--------------------------------------"
880 PRINT #3," "
890 PRINT #3,FO$
900 PRINT #3," "
910 IF O9=3 THEN 3230
920 IF C9=0 THEN 950
930 C9=0
940 GOTO 2300
950 PRINT "IS DATA CORRECT? YES=0, NO=1";
960 INPUT Q9
970 IF Q9=0 THEN 1040
980 PRINT "ENTER NO. OF THE POINT IN ERROR";
990 INPUT L
1000 IF L>F THEN 980
1010 PRINT "ENTER NO.";L;"X, Y, 'N'";
1020 INPUT XX(L),YX(L),NX(L)
1030 GOTO 760
1040 D0=YX(1)
1050 PRINT C1LEAR$
1060 FOR A=1 TO F-1
1070 IF YX(A)>D0 THEN 1090
1080 D0=YX(A)
1090 NEXT A
1100 Q8=1
1110 PRINT #3," "
1120 PRINT "ENTER MAIN CHANNEL 'N'";
1130 INPUT N1
1140 PRINT #3,USING FORMAT11$;N1
1150 PRINT #3," "
1160 PRINT "ENTER INITIAL STAGE ELEVATION";
1170 INPUT D1
1180 IF D1>D0 THEN 1210
1190 PRINT "ELEV. MUST BE > X-SECTION LOW PT"
1200 GOTO 1160
1210 PRINT "ENTER FINAL STAGE ELEVATION";
1220 INPUT D2
1230 IF D2>D0 THEN 1260
1240 PRINT "ELEV. MUST BE > X-SECTION LOW PT"
1250 GOTO 1210
1260 PRINT "ENTER ELEVATION INCREMENT";
1270 INPUT D3
1280 V9=0
1290 IF D2>D1 THEN 1330
1300 T=D1
1310 D1=D2
1320 D2=T
1330 B1=(D2-D1)/D3+1
1340 IF B1<21 THEN 1370
1350 PRINT "NO. OF OUTPUT STAGES EXCEEDED"
1360 GOTO 1110
1370 FOR I=1 TO 20
1380 FOR J=1 TO 20
1390 BX(I,J)=0
1400 NEXT J
1410 NEXT I
1420 GOTO 1570
1430 A0=0
1440 P0=0
1450 IF Y8 >= D4 AND Y9 >= D4 THEN 1560
1460 P0=((X9-X8)^2+(Y9-Y8)^2)^.5
1470 IF Y8 >= D4 THEN 1510
1480 IF Y9 >= D4 THEN 1540
1490 A0=(2*D4-Y8-Y9)/2*(X9-X8)
1500 GOTO 1560
1510 A0=(D4-Y9)^2*(X9-X8)/2/(Y8-Y9)
1520 P0=P0/(Y8-Y9)*(D4-Y9)
1530 GOTO 1560
1540 A0=(D4-Y8)^2*(X9-X8)/2/(Y9-Y8)
1550 P0=P0*(D4-Y8)/(Y9-Y8)
1560 RETURN
1570 FO$=" =STAGE= =====AREA (SQ FT)===== =WETTED PER (FT)=="
1580 FO$=FO$ + " ===HYD RAD==="
1590 PRINT #3,FO$
1591 PRINT FO$
1600 FO$=" FEET LEFT MAIN RIGHT TOTAL LT MAIN RT TOT"
1610 FO$=FO$ + " LT MAIN RT"
1620 PRINT #3,FO$
1621 PRINT FO$
1630 D4=D1
1640 FOR I=1 TO 20
1650 FOR J=1 TO 20
1660 RX(I,J)=0
1670 NEXT J
1680 NEXT I
1690 FOR C=1 TO B1
1700 Z=1
1710 FOR I=1 TO 9
1720 PX(I)=0
1730 NEXT I
1740 IF D4 <= YX(1) AND D4 <= YX(F) THEN 1790
1750 IF V9=1 THEN 1790
1760 PRINT #3,"ELEVATION EXCEEDS WATERWAY CONFINEMENT. ";
1761 PRINT "ELEVATION EXCEEDS WATERWAY CONFINEMENT. ";
1770 PRINT #3,"SIDES HAVE BEEN EXTENDED VERTICALLY."
1771 PRINT "SIDES HAVE BEEN EXTENDED VERTICALLY."
1780 V9=1
1790 Q7=0
1800 B7=0
1810 A9=0
1820 B9=0
1830 FOR A=1 TO F-1
1840 IF Z<>2 OR ABS(NX(A+1)-N1)<.0001 THEN 1870
1850 Z=3
1860 GOTO 1890
1870 IF ABS(NX(A+1)-N1)>.0001 THEN 1890
1880 Z=2
1890 A8=0
1900 P8=0
1910 X8=XX(A)
1920 X9=XX(A+1)
1930 Y8=YX(A)
1940 Y9=YX(A+1)
1950 GOSUB 1430
1960 A8=A8+A0
1970 PX(Z)=PX(Z)+A0
1980 IF A8=0 THEN 2120
1990 P8=P8+P0
2000 PX(Z+3)=PX(Z+3)+P0
2010 R=A8/P8
2020 IF A=F-1 THEN 2060
2030 IF NX(A+1)<>NX(A+2) THEN 2060
2040 A=A+1
2050 GOTO 1910
2060 BX(C,A)=A8
2070 FOR B=A TO 1 STEP -1
2080 IF RX(C,B)<>0 THEN 2120
2090 RX(C,B)=R
2100 IF NX(B)<>NX(B+1) THEN 2120
2110 NEXT B
2120 NEXT A
2130 IF PX(4)=0 THEN 2150
2140 PX(7)=PX(1)/PX(4)
2150 IF PX(5)=0 THEN 2170
2160 PX(8)=PX(2)/PX(5)
2170 IF PX(6)=0 THEN 2190
2180 PX(9)=PX(3)/PX(6)
2190 Q9=PX(4)+PX(5)+PX(6)
2200 A9=PX(1)+PX(2)+PX(3)
2210 PRINT #3,USING FORMAT9$;D4,PX(1),PX(2),PX(3),A9,PX(4),PX(5),PX(6),Q9,PX(7),PX(8),PX(9)
2211 PRINT USING FORMAT9$;D4,PX(1),PX(2),PX(3),A9,PX(4),PX(5),PX(6),Q9,PX(7),PX(8),PX(9)
2220 D4=D4+D3
2230 NEXT C
2240 PRINT #3," "
2250 IF S9=1 THEN 2300
2260 S9=1
2270 PRINT "ENTER SLOPE";
2280 INPUT S
2290 S1=S^.5
2300 PRINT #3,USING FORMAT12$;S
2301 PRINT USING FORMAT12$;S
2310 PRINT #3," "
2311 PRINT " "
2320 PRINT #3,"=STAGE= ========VELOCITY (FT/SEC)======= ======DISCHARGE (CFS)======="
2321 PRINT "=STAGE= ========VELOCITY (FT/SEC)======= ======DISCHARGE (CFS)======="
2330 FO$=" FEET LEFT MAIN RIGHT AVE MEAN "
2340 FO$=FO$ + "LEFT MAIN RIGHT TOTAL"
2345 PRINT #3,FO$
2346 PRINT FO$
2350 D4=D1
2360 FOR C=1 TO B1
2370 FOR I=1 TO 9
2380 PX(I)=0
2390 NEXT I
2400 Z=1
2410 Q7=0
2420 A9=0
2430 FOR A=1 TO F-1
2440 IF BX(C,A)=0 THEN 2550
2450 A9=A9+BX(C,A)
2460 IF Z<>2 OR ABS(NX(A+1)-N1)<.0001 THEN 2490
2470 Z=3
2480 GOTO 2510
2490 IF ABS(NX(A+1)-N1)>.0001 THEN 2510
2500 Z=2
2510 V=1.49*RX(C,A)^(2/3)*S^.5/NX(A+1)
2520 Q1=V*BX(C,A)
2530 PX(Z+4)=PX(Z+4)+Q1
2540 PX(Z)=PX(Z)+Q1*V
2550 NEXT A
2560 PX(4)=PX(1)+PX(2)+PX(3)
2570 PX(8)=PX(5)+PX(6)+PX(7)
2580 PX(4)=PX(4)/PX(8)
2590 IF PX(5)=0 THEN 2610
2600 PX(1)=PX(1)/PX(5)
2610 IF PX(6)=0 THEN 2630
2620 PX(2)=PX(2)/PX(6)
2630 IF PX(7)=0 THEN 2650
2640 PX(3)=PX(3)/PX(7)
2650 PRINT #3,USING FORMAT10$;D4,PX(1),PX(2),PX(3),PX(4),PX(8)/A9,PX(5),PX(6),PX(7),PX(8)
2651 PRINT USING FORMAT10$;D4,PX(1),PX(2),PX(3),PX(4),PX(8)/A9,PX(5),PX(6),PX(7),PX(8)
2660 D4=D4+D3
2670 NEXT C
2680 FO$="----------------------------------------"
2690 FO$=FO$ + FO$
2700 PRINT #3," "
2710 PRINT #3," "
2711 PRINT " "
2720 PRINT #3,FO$
2721 PRINT FO$
2730 PRINT #3," "
2731 PRINT " "
2740 PRINT #3," "
2750 PRINT "CHANGE 'N' 0=% 1=NO 2=POINT";
2760 INPUT Q9
2770 IF Q9=1 THEN 3110
2780 IF Q9=0 THEN 2850
2790 PRINT "POINT # OR 0 (NO MORE CHANGES)";
2800 INPUT Q9
2810 IF Q9=0 THEN 760
2820 PRINT "POINT #";Q9;" N";
2830 INPUT NX(Q9)
2840 GOTO 2790
2850 C=1
2860 Z=1
2870 PRINT "% CHANGE IN LEFT 'N' (+, -, 0)";
2880 INPUT Q9
2890 GOTO 2960
2900 PRINT "% CHANGE IN MAIN 'N' (+, -, 0)";
2910 INPUT Q9
2920 GOTO 2960
2930 N1=N1*(Q9+100)/100
2940 PRINT "% CHANGE IN RIGHT 'N' (+ ,-, 0)";
2950 INPUT Q9
2960 FOR A=C TO F-1
2970 C=A
2980 IF Z<>2 OR ABS(NX(A+1)-N1)<.0001 THEN 3010
2990 Z=3
3000 GOTO 2930
3010 IF Z=2 THEN 3050
3020 IF ABS(NX(A+1)-N1)>.0001 THEN 3050
3030 Z=2
3040 GOTO 2900
3050 NX(A+1)=NX(A+1)*(Q9+100)/100
3060 NEXT A
3070 IF Z<>2 THEN 3090
3080 N1=N1*(Q9+100)/100
3090 C9=1
3100 GOTO 760
3110 PRINT "NEW SLOPE? YES=0 NO=1";
3120 INPUT Q9
3130 IF Q9=0 THEN 2270
3140 PRINT "NEW CALC. INTERVAL? YES=0 NO=1";
3150 INPUT Q9
3160 IF Q9=0 THEN 1160
3170 IF O9<>2 THEN 3230
3180 PRINT "LOAD X-SECT OFF DISK? 0=YES 1=NO";
3190 INPUT Q9
3200 IF Q9=1 THEN 3230
3210 O9=3
3220 GOTO 540
3230 PRINT "NARROWER OVERBANK 0=YES 1=NO";
3240 INPUT Q9
3250 IF O9<>3 THEN 3270
3260 O9=2
3270 IF Q9=1 THEN 4420
3280 IF O9<>0 THEN 3350
3290 PRINT "STORE ORIG X-SECTION 0=YES 1=NO";
3300 INPUT Q9
3310 O9=1
3320 IF Q9=1 THEN 3350
3330 O9=2
3340 GOSUB 4470
3350 PRINT "ENTER MIN. LEFT X VALUE (OR 0)";
3360 INPUT X1
3370 PRINT "ENTER LEFT OVERBANK SLOPE X:1";
3380 INPUT X3
3390 PRINT "ENTER MAX. RIGHT X VALUE (OR 0)";
3400 INPUT X2
3410 PRINT "ENTER RIGHT OVERBANK SLOPE X:1";
3420 INPUT X4
3430 PRINT #3," "
3440 PRINT #3,USING FORMAT13$;X1,X3
3450 PRINT #3,USING FORMAT14$;X2,X4
3460 PRINT #3," "
3470 IF X2<>0 AND X2<>XX(F) THEN 3490
3480 X2=XX(F)+100
3490 FOR I=1 TO 3
3500 FOR J=1 TO 23
3510 CX(I,J)=0
3520 NEXT J
3530 NEXT I
3540 FOR A=1 TO F-1
3550 IF XX(A)>X1 OR XX(A+1) <= X1 THEN 3600
3560 CX(1,A+1)=X1
3570 CX(2,A+1)=YX(A)+(YX(A+1)-YX(A))*(X1-XX(A))/(XX(A+1)-XX(A))
3580 CX(2,A)=YX(1)
3590 CX(1,A)=X1-(YX(1)-CX(2,A+1))*X3
3600 IF XX(A)<X1 OR XX(A)>X2 THEN 3630
3610 CX(1,A+1)=XX(A)
3620 CX(2,A+1)=YX(A)
3630 IF XX(A+1)<X2 THEN 3690
3640 CX(1,A+2)=X2
3650 CX(2,A+2)=YX(A)+(YX(A+1)-YX(A))*(X2-XX(A))/(XX(A+1)-XX(A))
3660 CX(2,A+3)=YX(F)
3670 CX(1,A+3)=X2+(YX(F)-CX(2,A+2))*X4
3680 GOTO 3720
3690 NEXT A
3700 CX(1,F+2)=XX(F)
3710 CX(2,F+2)=YX(F)
3720 F=0
3730 FOR A=1 TO 23
3740 IF CX(1,A)=0 AND CX(2,A)=0 THEN 3890
3750 IF F<>21 THEN 3860
3760 PRINT "RESULTANT X-SECTION CONTAINS MORE THAN 21 POINTS. TRY AGAIN."
3770 PRINT
3780 PRINT #3,"RESULTANT X-SECTION CONTAINS MORE THAN 21 POINTS. TRY AGAIN."
3790 PRINT #3," "
3800 F=0
3810 FOR A=1 TO 21
3820 IF XX(A)=0 AND YX(A)=0 THEN 3850
3830 F=F+1
3840 NEXT A
3850 GOTO 3230
3860 F=F+1
3870 CX(1,F)=CX(1,A)
3880 CX(2,F)=CX(2,A)
3890 NEXT A
3900 FOR A=2 TO F
3910 FOR B=2 TO 21
3920 IF CX(1,A)<>XX(B) THEN 3950
3930 CX(3,A)=NX(B)
3940 GOTO 3990
3950 IF CX(1,A)>XX(B-1) AND CX(1,A)<XX(B) THEN 3930
3960 IF CX(1,A)>XX(B) AND B=21 THEN 3930
3970 IF CX(1,A)>XX(B) AND XX(B+1)<XX(B) THEN 3930
3980 NEXT B
3990 NEXT A
4000 FOR A=F+1 TO 23
4010 CX(1,A)=0
4020 CX(2,A)=0
4030 CX(3,A)=0
4040 NEXT A
4050 FOR A=21 TO 2 STEP -1
4060 IF XX(A) >= CX(1,2) OR XX(A) <= CX(1,1) THEN 4180
4070 IF NX(A)=CX(3,2) THEN 4180
4080 FOR B=F TO 2 STEP -1
4090 CX(1,B+1)=CX(1,B)
4100 CX(2,B+1)=CX(2,B)
4110 CX(3,B+1)=CX(3,B)
4120 NEXT B
4130 F=F+1
4140 IF F>21 THEN 3760
4150 CX(1,2)=XX(A)
4160 CX(2,2)=(CX(2,1)-CX(2,3))*(XX(A)-CX(1,3))/(CX(1,1)-CX(1,3))+CX(2,3)
4170 CX(3,2)=NX(A)
4180 NEXT A
4190 FOR A=2 TO 21
4200 IF XX(A) >= CX(1,F) OR XX(A) <= CX(1,F-1) THEN 4300
4210 IF NX(A)=CX(3,F) THEN 4300
4220 CX(1,F+1)=CX(1,F)
4230 CX(2,F+1)=CX(2,F)
4240 CX(3,F+1)=CX(3,F)
4250 F=F+1
4260 IF F>21 THEN 3760
4270 CX(1,F-1)=XX(A)
4280 CX(2,F-1)=(CX(2,F-2)-CX(2,F))*(XX(A)-CX(1,F))/(CX(1,F-2)-CX(1,F))+CX(2,F)
4290 CX(3,F-1)=NX(A)
4300 NEXT A
4310 FOR A=1 TO F
4320 NX(A)=CX(3,A)
4330 XX(A)=CX(1,A)
4340 YX(A)=CX(2,A)
4350 NEXT A
4360 FOR A=F+1 TO 21
4370 NX(A)=0
4380 XX(A)=0
4390 YX(A)=0
4400 NEXT A
4410 GOTO 740
4420 GOSUB 4440
4430 GOTO 4560
4440 PRINT "STORE X-SECTION 0=YES 1=NO";
4450 INPUT Q9
4460 IF Q9=1 THEN 4560
4470 NX(1)=F
4480 PRINT
4490 N4$=" X-SECTION TO BE STORED ON DISK " : GOSUB 50010
4500 OPEN "O",#2,N2$
4510 FOR I=1 TO 21
4520 WRITE #2,XX(I),YX(I),NX(I)
4530 NEXT I
4540 CLOSE #2
4550 RETURN
4560 PRINT
4640 CLOSE #3:CHAIN "menu"
4650 GOTO 55280 ' END OF IRR1 '
50000 REM ****************** ROUTINE FOR ENTERING DATA FILE NAME ****************************************************************** '
50010 PRINT C1LEAR$:PRINT:PRINT N4$
50020 PRINT:COLOR 24,7:PRINT" MAKE SURE DATA DISK IS IN DRIVE 2 ":COLOR 7,0
50030 PRINT:INPUT "WHAT IS THE NAME OF THE DATA FILE ",N1$:N2$="B:" + N1$ + ".DAT":RETURN '
55000 REM ************** ERROR TRAPING ROUTINE ****************************************************************************** '
55010 ET=ERR
55020 PRINT:PRINT:PRINT
55030 IF ET=52 OR ET=53 OR ET=67 THEN 55210:REM bad file name
55040 IF ET=61 THEN 55110:REM disk full
55050 IF ET>=70 AND ET <=72 THEN 55150:REM disk error (write prot.,not ready,media error)
55060 IF ET=25 THEN PRINT"PRINTER IS NOT READY":GOTO 55080
55070 ON ERROR GOTO 0:PRINT ET:GOTO 55260
55080 PRINT "Turn on printer. Make sure 'ON LINE ' light is on.":PRINT:PRINT:PRINT "PRESS ANY KEY TO CONTINUE"
55090 AA$=INKEY$:IF AA$="" THEN 55090
55100 GOTO 55260
55110 PRINT"DISK FULL REPLACE DATA DISK AND TRY AGAIN"
55120 PRINT:PRINT:PRINT "PRESS ANY KEY TO CONTINUE"
55130 AA$=INKEY$:IF AA$="" THEN 55130
55140 GOTO 55260
55150 PRINT"**************************** YOU HAVE A DISK ERROR *************************"
55160 PRINT"MAKE SURE THAT YOUR DATA DISK IS IN DRIVE 1 AND SEE IF DISK DOOR IS CLOSED"
55170 PRINT"IF DISK IS IN DRIVE 1 AND DOOR IS CLOSED YOUR DISK IS WRITE PROTECTED OR FAULTY"
55180 PRINT:PRINT:PRINT "REPLACE DISK AND PRESS ANY KEY TO CONTINUE"
55190 AA$=INKEY$:IF AA$="" THEN 55190
55200 GOTO 55260
55210 PRINT "FILE NOT FOUND OR NAME NOT VALID - MUST BE LETTERS A-Z AND DIGITS O-9"
55220 PRINT "FILE NAME CANNOT BE MORE THAN EIGHT DIGITS LONG"
55230 PRINT:PRINT:PRINT "PRESS ANY KEY TO CONTINUE"
55240 AA$=INKEY$:IF AA$="" THEN 55240
55250 GOSUB 50010
55260 RESUME
55270 REM **********************************************************************
55280 END