10 rem Multi-Ingredient Formulation Runtime Routine 191 MaxRecords% = 200 192 Defshr GWtA!, wt110 193 Defshr GWtB!, wt210 194 Defshr Input1!, p_100 195 Defshr Output1!, p_500 196 Defshr Output2!, p_501 200 Defshr Alarm%, t_685 1010 PRINT "Recipe? " 1020 GOSUB 7010 1025 IF C$ = "`" OR C$ = " " OR C$ = "#" THEN GOTO 9999 1040 PRINT "Searching.... ": RID$ = C$ 1060 OPEN "RECIPES" FOR RANDOM AS #1 LEN = 30 1070 FIELD #1, 8 AS RecID$, 5 AS MatID$, 1 AS Scale$, 8 AS Amnt$, 8 AS Tol$ 1080 Sum! = 0!: SumT! = 0 1090 F$ = "N" 1110 WHILE EOF(1) = 0 AND F$ = "N" 1120 GET #1 1130 IF RecID$ = RID$ THEN F$ = "Y" 1140 WEND 1150 IF F$ = "Y" THEN GOTO 1210 1160 CLOSE #1 1170 IF (Sum! = 0) THEN M$ = "Recipe Not Found": GOSUB 8010: GOTO 1010 1180 LPRINT "===========================================" 1190 LPRINT "Total: "; Sum!;" ";SumT! 1200 GOTO 1010 1210 MaterialID$ = MatID$ 1220 ScaleID$ = Scale$ 1230 Amount$ = Amnt$ 1240 T$ = Tol$ 1250 Tol! = VAL(T$) 1300 IF (Sum! > 0) THEN GOTO 1580 1310 LPRINT "Recipe: "; RID$; " "; DATE$; " "; TIME$ 1315 LPRINT "Material Actual Target" 1320 LPRINT "===========================================" 1330 PRINT "Weigh Empty in "; Scale$ 1340 GOSUB 8210 1350 IF C$ <> "#" THEN CLOSE #1: GOTO 1010 1360 IF ScaleID$ = "A" THEN GWt! = GWtA! ELSE GWt! = GWtB! 1370 InitialWt! = GWt! 1580 OldGWt! = GWt! 1590 Amount! = GWt! + VAL(Amount$) 1595 Output1! = 1: Output2! = 0: Input1! = 0 1600 GOSUB 1730 1610 IF C$ = "`" THEN CLOSE #1: GOTO 1010 1620 IF ScaleID$ = "A" THEN GWt! = GWtA! ELSE GWt! = GWtB! 1630 Total$ = STR$(GWt! - OldGWt!) 1640 IF LEN(Total$) < 8 THEN Total$ = " " + Total$: GOTO 1640 1650 LPRINT MaterialID$; TAB(13); Total$; TAB(26); Amnt$ 1660 Sum! = GWt! - InitialWt! 1670 SumT! = SumT! + VAL(Amnt$) 1680 GOSUB 2010 1690 GOTO 1090 1730 IF ScaleID$ = "B" THEN GOTO 1825 1735 GOSUB 9000 1740 WHILE INKEY$ <> CHR$(8) 1750 Rem! = Amount! - GWtA! 1760 IF (Output2! = 1) THEN PRINT " " 1770 PRINT ScaleID$; " "; MaterialID$; " "; Rem!;" " 1790 IF Rem! < Tol! THEN Output1! = 0: Output2! = 1: Alarm% = 1 1810 WEND 1820 RETURN 1825 GOSUB 9000 1830 WHILE INKEY$ <> CHR$(8) 1840 Rem! = Amount! - GWtB! 1850 IF (Output2! = 1) THEN PRINT " " 1860 PRINT ScaleID$; " "; MaterialID$; " "; Rem!;" " 1880 IF Rem! < Tol! THEN Output1! = 0: Output2! = 1: Alarm% = 1 1890 WEND 1900 RETURN 2010 GOSUB 8110 2020 IF F$ = "N" THEN RETURN 2080 OPEN "MATERIAL" FOR RANDOM AS #2 LEN = 37 2090 FIELD #2, 5 AS MATRLID$, 16 AS MatName$, 8 AS Inv$, 8 AS MatUsage$ 2095 GET #2, Rec2% 2100 I! = VAL(Inv$) - (GWt! - OldGWt!) 2110 Usage! = VAL(MatUsage$) + (GWt! - OldGWt!) 2112 I$ = STR$(I!) 2114 IF LEN(I$) < 8 THEN I$ = " " + I$: GOTO 2114 2116 Usage$ = STR$(Usage!) 2118 IF LEN(Usage$) < 8 THEN Usage$ = " " + Usage$: GOTO 2118 2120 RSET Inv$ = I$ 2130 RSET MatUsage$ = Usage$ 2140 PUT #2, Rec2%: CLOSE #2: 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$ = " " OR C$ = CHR$(4) 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$ 7240 IF LEN(C$) > 8 THEN C$ = LEFT$(C$, 8): RETURN 7250 IF LEN(C$) = 8 THEN RETURN 7270 C$ = C$ + " " 7280 GOTO 7250 8010 PRINT M$: L% = 1 8012 WHILE L% < 10 AND INKEY$ = "" 8015 L% = L% + 1 8020 WEND 8030 RETURN 8110 PRINT "Updating Invntry" 8111 OPEN "MATERIAL" FOR RANDOM AS #2 LEN = 37 8112 FIELD #2, 5 AS MATRLID$, 16 AS MatName$, 8 AS Inv$, 8 AS MatUsage$ 8120 F$ = "N" 8125 IF LEN(MaterialID$) < 5 THEN MaterialID$ = MaterialID$ + " ": GOTO 8125 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 Rec2% > 0 THEN Rec2% = Rec2% - 1 8170 IF F$ = "N" THEN M$ = "Unknown Material": GOSUB 8010 8180 CLOSE #2: RETURN 8210 C$ = "~" 8220 WHILE C$ <> "`" AND C$ <> " " AND C$ <> "#" 8230 C$ = INKEY$ 8260 IF C$ = CHR$(8) THEN C$ = "#" 8270 WEND 8280 RETURN 9000 PRINT " ": RETURN 9999 END