10 rem Multi Ingredient Formulation File Maintenance 191 MaxIDs% = 200 3100 PRINT "Edit Materials ": GOSUB 8210 3120 IF C$ = "`" THEN GOTO 9999 3140 IF C$ = "#" THEN GOSUB 3895: GOTO 3100 3170 PRINT "Material Report ": GOSUB 8210 3190 IF C$ = "`" THEN GOTO 9999 3210 IF C$ = "#" THEN GOSUB 3710 3240 PRINT "Edit Recipes ": GOSUB 8210 3260 IF C$ = "`" THEN GOTO 9999 3280 IF C$ = "#" THEN GOSUB 4310: GOTO 3240 3310 PRINT "Recipe Report ": GOSUB 8210 3330 IF C$ = "`" THEN GOTO 9999 3350 IF C$ = "#" THEN GOSUB 6010: GOTO 3310 3380 PRINT "Recipe List ": GOSUB 8210 3400 IF C$ = "`" THEN GOTO 9999 3420 IF C$ = "#" THEN GOSUB 6310 3450 GOTO 3100 3710 OPEN "MATERIAL" FOR RANDOM AS #2 LEN = 37 3712 FIELD #2, 5 AS MatID$, 16 AS MatName$, 8 AS In$, 8 AS MatUsage$ 3722 PRINT "Clear Usage? Y/N": GOSUB 8210: PRINT "Printing.... " 3718 IF C$ <> "Y" AND C$ <> "y" THEN C$ = "N" 3725 LPRINT 3730 LPRINT "Materials Report "; DATE$; " "; TIME$ 3731 LPRINT "====================================================" 3739 Rec2% = 1 3740 WHILE (0 = EOF(2)) 3741 GET #2 3745 IF MatID$ < "A " THEN GOTO 3780 3750 LPRINT MatID$; TAB(10); MatName$; TAB(35); In$; TAB(45); MatUsage$ 3755 IF C$ = "N" THEN GOTO 3780 3760 RSET MatUsage$ = " 0.0" 3770 IF (0 = EOF(2)) THEN PUT #2, Rec2% 3780 Rec2% = Rec2% + 1 3790 WEND 3800 CLOSE #2: RETURN 3895 PRINT "Material? ": Width% = 5: F$ = "A": GOSUB 7010 3899 IF C$ = "`" OR C$ = " " OR C$ = "#" THEN RETURN 3900 MaterialID$ = C$: GOSUB 8110 3919 IF F$ = "N" THEN GOSUB 3990: GOTO 3895 3920 OPEN "MATERIAL" FOR RANDOM AS #2 LEN = 37 3923 FIELD #2, 5 AS MatID$, 16 AS MatName$, 8 AS In$, 8 AS MatUsage$ 3926 PRINT "Edit the Record " 3929 GOSUB 8210 3932 IF C$ = " " THEN CLOSE #2: GOTO 3972 3935 IF C$ = "`" THEN CLOSE #2: RETURN 3938 IF (0 = EOF(2)) THEN GET #2, Rec2% 3941 IF MatID$ < " " THEN Rec2% = 1: GET #2, Rec2% 3944 GOSUB 9000: PRINT "Change ID "; MatID$ 3947 Width% = 5: F$ = "A": GOSUB 7010 3950 IF C$ = " " OR C$ = "#" THEN GOTO 3962 3953 IF C$ = "`" THEN CLOSE #2: RETURN 3956 MaterialID$ = C$ 3959 LSET MatID$ = MaterialID$$ 3962 GOSUB 4080: Rec2% = Rec2% + 1: GOTO 3926 3972 GOSUB 9000: PRINT "Delete "; MaterialID$: GOSUB 8210 3974 IF C$ = "`" THEN RETURN 3975 IF C$ = " " THEN GOTO 3920 3977 OPEN "MATERIAL" FOR RANDOM AS #3 LEN = 37 3978 FIELD #3, 5 AS RecordID$, 32 AS Rest$ 3980 TargetID$ = MaterialID$: D$ = "A" 3985 GOSUB 4229: CLOSE #3: RETURN 3990 GOSUB 9000: PRINT "Add "; MaterialID$ 4005 GOSUB 8210 4010 IF C$ <> "#" THEN RETURN 4015 OPEN "MATERIAL" FOR RANDOM AS #3 LEN = 37 4020 FIELD #3, 5 AS TID$, 16 AS Rest$ 4022 T.ID$ = MaterialID$ 4024 Blank$ = " ": GOSUB 8510: CLOSE #3 4030 OPEN "MATERIAL" FOR RANDOM AS #2 LEN = 37 4032 FIELD #2, 5 AS MatID$, 16 AS MatName$, 8 AS In$, 8 AS MatUsage$ 4055 Rec2% = Rec% 4060 LSET MatID$ = MaterialID$: LSET MatName$ = " " 4062 LSET In$ = " ": LSET MatUsage$ = " " 4065 GOSUB 4080: CLOSE #2: RETURN 4080 GOSUB 9000: PRINT "Name: "; MatName$ 4085 Width% = 16: F$ = "A": GOSUB 7010 4090 IF C$ = " " OR C$ = "#" THEN GOTO 4125 4095 IF C$ = "`" THEN RETURN 4120 LSET MatName$ = C$ 4125 GOSUB 9000: PRINT "Invntry:"; In$ 4130 F$ = "N": GOSUB 7010 4135 IF C$ = " " OR C$ = "#" THEN GOTO 4170 4140 IF C$ = "`" THEN RETURN 4165 RSET In$ = C$ 4170 GOSUB 9000: PRINT "Usage: "; MatUsage$ 4175 F$ = "N": GOSUB 7010 4180 IF C$ = " " OR C$ = "#" THEN GOTO 4215 4185 IF C$ = "`" THEN RETURN 4210 RSET MatUsage$ = C$ 4215 IF VAL(MatUsage$) < VAL(In$) THEN GOTO 4220 4217 M$ = "Usage Too Big": GOSUB 8010: GOTO 4125 4220 PUT #2, Rec2%: RETURN 4229 PRINT "Deleting.... " 4230 Rec% = 1: Write% = 1: GET #3 4231 WHILE 0 = EOF(3) 4232 IF RecordID$ <> TargetID$ THEN GOTO 4240 4233 IF D$ = "A" THEN GOTO 4250 4235 IF MaterialID$ = LEFT$(Rest$,5) THEN GOTO 4250 4240 PUT #3, Write% 4245 Write% = Write% + 1 4250 Rec% = Rec% + 1 4253 GET #3, Rec% 4255 WEND 4260 LSET RecordID$ = " " 4265 LSET Rest$ = " " 4270 WHILE Write% < Rec% 4275 PUT #3, Write% 4280 Write% = Write% + 1 4285 WEND 4290 RETURN 4310 PRINT "Recipe? " 4320 F$ = "X": GOSUB 7010 4324 IF C$ = "`" OR C$ = " " OR C$ = "#" THEN RETURN 4326 PRINT "Searching.... ": RID$ = C$: F$ = "N" 4335 OPEN "RECIPES" FOR RANDOM AS #1 LEN = 30 4336 FIELD #1, 8 AS RecID$, 5 AS MatID$, 1 AS Scale$, 8 AS Amnt$, 8 AS Tlrnc$ 4340 WHILE NOT EOF(1) AND F$ <> "Y" 4360 GET #1 4370 IF RID$ = RecID$ THEN F$ = "Y": Rec% = LOC(1) - 1 4380 WEND 4390 CLOSE #1 4400 IF F$ = "N" THEN GOSUB 4810: RETURN 4420 PRINT "Edit this recipe": GOSUB 8210 4440 IF C$ = " " THEN GOTO 4810 4445 IF C$ = "`" THEN RETURN 4450 OldID$ = RID$ 4460 PRINT "Change ID ": F$ = "X": GOSUB 7010 4480 IF C$ = " " OR C$ = "#" THEN GOTO 4520 4490 IF C$ = "`" THEN GOTO 4420 4500 RID$ = C$ 4520 OPEN "RECIPES" FOR RANDOM AS #1 LEN = 30 4530 FIELD #1, 8 AS RecID$, 5 AS MatID$, 1 AS Scale$, 8 AS Amnt$, 8 AS Tlrnc$ 4540 IF (0 = EOF(1)) THEN GET #1, Rec% 4550 IF RecID$ <> OldID$ THEN CLOSE #1: RETURN 4560 LSET RecID$ = RID$ 4570 GOSUB 5005: Rec% = Rec% + 1: GOTO 4540 4600 PRINT "Delete Recipe ": GOSUB 8210 4620 IF C$ = "`" THEN RETURN 4630 IF C$ = " " THEN GOTO 4420 4640 PRINT "All records? Y/N": GOSUB 8210 4650 IF C$ = "y" OR C$ = "Y" THEN D$ = "A": GOTO 4740 4660 PRINT "Which Material? ": D$ = "1": Width% = 5: F$ = "A": GOSUB 7010 4670 IF C$ = " " OR C$ = "#" OR C$ = "`" THEN GOTO 4640 4680 MaterialID$ = C$: GOSUB 8110: IF F$ = "N" THEN GOTO 4660 4740 OPEN "RECIPES" FOR RANDOM AS #3 LEN = 30 4750 FIELD #3, 8 AS RecordID$, 22 AS Rest$ 4760 TargetID$ = RID$ 4770 GOSUB 4229: CLOSE #3: RETURN 4810 PRINT "Add Record ": GOSUB 8210 4820 IF C$ = "`" THEN RETURN 4830 IF C$ = " " THEN GOTO 4600 4840 OPEN "RECIPES" FOR RANDOM AS #3 LEN = 30 4850 FIELD #3, 8 AS TID$, 22 AS Rest$ 4900 Blank$ = " ":T.ID$ = RID$: GOSUB 8510 : CLOSE #3 4920 OPEN "RECIPES" FOR RANDOM AS #1 LEN = 30 4930 FIELD #1, 8 AS RecID$, 5 AS MatID$, 1 AS Scale$, 8 AS Amnt$, 8 AS Tlrnc$ 4940 GET #1, Rec% 4950 LSET RecID$ = RID$: LSET MatID$ = " ": LSET Scale$ = " " 4960 LSET Amnt$ = " ": LSET Tlrnc$ = " " 4980 GOSUB 5005: CLOSE #1: GOTO 4810 5005 IF MatID$ = " " THEN PRINT "Material ID? ": GOTO 5010 5008 PRINT "Material: "; MatID$;" " 5010 Width% = 5: F$ = "A": GOSUB 7010 5027 IF C$ = " " OR C$ = "#" THEN GOTO 5050 5028 IF C$ = "`" THEN RETURN 5030 MaterialID$ = C$ 5035 GOSUB 8110: IF F$ = "N" THEN GOTO 5005 5040 LSET MatID$ = MaterialID$ 5050 PRINT "Scale: "; Scale$;" ": GOSUB 8210 5060 IF C$ = " " OR C$ = "#" THEN GOTO 5090 5065 IF C$ = "`" THEN RETURN 5067 IF C$ = "A" OR C$ = "B" THEN GOTO 5080 5069 IF C$ = "a" THEN C$ = "A" : GOTO 5080 5070 IF C$ = "b" THEN C$ = "B": GOTO 5080 5075 M$ = "Invalid Scale # ":GOSUB 8010: GOTO 5050 5080 LSET Scale$ = C$ 5090 GOSUB 9000: PRINT "Amount: "; Amnt$ 5095 F$ = "N": GOSUB 7010 5100 IF C$ = " " OR C$ = "#" THEN GOTO 5150 5105 IF C$ = "`" THEN RETURN 5140 RSET Amnt$ = C$ 5150 GOSUB 9000: PRINT "Tolrnce:"; Tlrnc$ 5160 F$ = "N": GOSUB 7010 5170 IF C$ = " " OR C$ = "#" THEN GOTO 5250 5180 IF C$ = "`" THEN RETURN 5235 RSET Tlrnc$ = C$ 5250 IF VAL(Tlrnc$) < VAL(Amnt$) THEN GOTO 5260 5255 M$ = "Tolernce Too Big": GOSUB 8010: GOTO 5090 5260 PUT #1, Rec%: RETURN 6010 PRINT "Recipe? " 6020 F$ = "X": GOSUB 7010: PRINT "Searching.... " 6030 IF C$ = "`" THEN RETURN 6040 RID$ = C$: Rec% = 0 6050 OPEN "RECIPES" FOR RANDOM AS #1 LEN = 30 6060 FIELD #1, 8 AS RecID$, 5 AS MatID$, 1 AS Scale$, 8 AS Amnt$, 8 AS Tlrnc$ 6070 WHILE EOF(1) = 0 6080 GET #1 6090 IF RecID$ <> RID$ THEN GOTO 6250 6100 MaterialID$ = MatID$: ScaleID$ = Scale$:Amount$ = Amnt$:Tol$ = Tlrnc$ 6140 IF Rec% > 0 THEN GOTO 6240 6145 LPRINT: LPRINT "Recipe Report "; RID$ 6160 LPRINT DATE$; " "; TIME$ 6170 LPRINT "=============================" 6180 Rec% = 1 6240 LPRINT MaterialID$; TAB(8); ScaleID$; TAB(11); Amount$; TAB(21); Tol$ 6250 WEND 6255 IF Rec% = 0 THEN M$ = "Not Found! ": GOSUB 8010 6270 CLOSE #1: RETURN 6310 OldID$ = " " 6320 LPRINT: LPRINT "Recipe List "; DATE$; " "; TIME$ 6340 LPRINT "===================================" 6350 OPEN "RECIPES" FOR RANDOM AS #1 LEN = 30 6360 FIELD #1, 8 AS RecID$, 5 AS MatID$, 1 AS Scale$, 8 AS Amnt$, 8 AS Tlrnc$ 6370 WHILE (0 = EOF(1)) 6380 GET #1 6390 IF RecID$ = OldID$ OR RecID$ = " " THEN GOTO 6410 6400 LPRINT RecID$: OldID$ = RecID$ 6410 WEND 6420 CLOSE #1: RETURN 7010 C$ = "": M$ = "" 7015 WHILE C$ = "" 7020 C$ = INKEY$ 7025 WEND 7030 IF C$ = CHR$(8) THEN C$ = "#": RETURN 7040 IF C$ = "`" OR C$ = " " THEN RETURN 7100 WHILE C$ <> CHR$(8) 7105 IF C$ = CHR$(6) THEN M$ = LEFT$(M$, LEN(M$) -1): GOTO 7170 7110 IF C$ < " " OR C$ > "z" THEN GOTO 7180 7120 IF C$ > "`" THEN C$ = CHR$(ASC(C$) - 32) 7160 M$ = M$ + C$ 7170 PRINT M$;" " 7180 C$ = INKEY$ 7200 WEND 7220 C$ = M$ 7225 IF F$ = "N" THEN C$ = STR$(VAL(C$)) 7230 IF F$ = "N" OR F$ = "X" THEN Width% = 8 7240 IF LEN(C$) > Width% THEN C$ = LEFT$(C$, Width%): RETURN 7250 IF LEN(C$) = Width% THEN RETURN 7260 IF F$ = "N" OR F$ = "R" THEN C$ = " " + C$: GOTO 7250 7270 C$ = C$ + " " 7280 GOTO 7250 8010 PRINT M$: L% = 1 8012 WHILE L% < 15 AND INKEY$ = "" 8015 L% = L% + 1 8020 WEND 8030 RETURN 8110 PRINT "Searching.... " 8111 OPEN "MATERIAL" FOR RANDOM AS #2 LEN = 37 8112 FIELD #2, 5 AS MATRLID$, 16 AS MatName$, 8 AS In$, 8 AS MatUsage$ 8120 F$ = "N" 8130 WHILE 0 = EOF(2) AND F$ = "N" 8140 GET #2 8150 IF MATRLID$ = MaterialID$ THEN F$ = "Y": Rec2% = LOC(2) 8160 WEND 8165 IF F$ = "Y" THEN Rec2% = Rec2% - 1 8170 IF F$ = "N" THEN M$ = "Unknown Material": GOSUB 8010 8180 CLOSE #2: RETURN 8210 C$ = "" 8220 WHILE C$ = "" 8230 C$ = INKEY$ 8240 WEND 8250 IF C$ = CHR$(8) THEN C$ = "#" 8280 RETURN 8510 Rec% = -1: F$ = "N": WriteTo% = 1 8545 WHILE NOT EOF(3) 8550 GET #3 8555 IF F$ = "Y" THEN GOTO 8570 8560 IF TID$ = Blank$ OR TID$ > T.ID$ THEN F$ = "Y":Rec% = LOC(3) 8570 WEND 8571 IF Rec% = -1 THEN Rec% = LOC(3) 8572 IF Rec% > 0 THEN Rec% = Rec% - 1 8573 IF Rec% = 0 THEN Rec% = 1 8575 IF Rec% > MaxIDs% THEN M$ = "File is Full": GOSUB 8010: RETURN 8580 WriteTo% = LOC(3) 8582 IF WriteTo% > 0 THEN WriteTo% = WriteTo% - 1 8585 WHILE WriteTo% > Rec% 8590 GET #3, WriteTo% - 1 8595 IF TID$ <> Blank$ THEN PUT #3, WriteTo% 8600 WriteTo% = WriteTo% - 1 8605 WEND 8607 RETURN 9000 PRINT " ": RETURN 9999 END