5 REM VERSION 3.1, Major revision MAY, 1987 6 REM REVISED WITH 1988 ADJUSTMENTS AS NOTED, DEC. 1988 8 REM SEVERAL REVISIONS MADE 4/21/89 INSPECTION, UNALLOCATED 9 REM This run is as setup for Staff Report AGES 9115 10 REM MEAT PACKER COST ANALYSER 20 'KEN NELSON--LARRY DUEWER, USDA, ERS, CED, LDPB 21 CLEAR 500 22 F2$="NOT DEFINED" 24 FX$="NOT DEFINED" 25 KEY OFF 50 BUFFERS = 54 60 DEFINT I-L 70 DIM X#(5,10) 100 REM DEFAULT VALUES FOR FILES SHIFT ETC. ############ 110 FX$="ACM300S2.BOX" 120 F2$="PAC300.DAT" 130 SH%=2 140 HX#=300 141 SIMTIT$="SLAUGHTER AND BOX -- DEFAULT VALUES NOT SET THIS RUN" 500 'CONSTANTS #################################### indexes 84 up to 87 510 REM COST ADJUSTMENTS FOR EACH ACCOUNT MADE BELOW (1.0 IS NO ADJUSTMENT) 511 AD#(0)=.83 ' INVESTMENT - LAND 512 AD#(1)=1.081 ' WAS 1.052 INVESTMENT-FACILITIES Boeckh com&fac bld.index Sur Cur Busn 513 AD#(2)=1.1 ' WAS 1.05 INVESTMENT-EQUIPMENT Ind. Comod. Mach.& Equip. Sur Cur Busn 514 AD#(3)=1 ' INVENTORY DO NOT CHANGE THIS IT IS CALCULATED 515 AD#(4)=1.038 'WAS 1.031 WAGES & SALARIES DOL BLS meat packing 2011 516 AD#(5)=1 ' LIVESTOCK & TRIMMINGS PURCH.(change in data files) 517 AD#(6)=1.119 'WAS 1.0515 SUPPLIES & CONTAINERS Supplies+Containers/2 PPI 518 AD#(7)=.989 'WAS .988 UTILITIES Oth Ut + Ind of El +Tot fuel &pow/3 PPI 519 AD#(8)=1 ' MISCELLANEOUS 520 AD#(9)=1 ' FINANCES 530 ' COST ADJUSTMENTS MADE ABOVE '##################### 540 EC=0 ' CHANGE IF WANT ENERGY CREDIT 560 EQ#=0 ' PROPORTION OF EQUITY ASSUMED 570 LT#=.0932 'LONG TERM INTEREST RATE was .14 580 ST# = .0932 'SHORT TERM INT RATE was .13 590 RT#=.02 'REAL ESTATE TAX RATE 600 PT#=.005 'PERS PROP TAX 610 IN#(0)=.002 ' CASUALTY INSURANCE RATE ON LAND 620 IN#(1)=.015 ' INSURANCE ON FACILITIES 630 IN#(2)=.015 ' INSURANCE ON EQUIPMENT 640 RP#(0)=.05 'REPAIR & MAINT LAND 650 RP#(1)=.1 'REPAIR & MAINT FACILITIES 660 RP#(2)=.1 'REPAIR & MAINT EQUIPMENT 670 HR#(1)=36:HR#(2)=36:HR#(3)=40:HR#(4)=48:HR#(5)=50 'PAID HOURS 672 HO#(1)=32:HO#(2)=36:HO#(3)=40:HO#(4)=48:HO#(5)=50 'HOURS WORKED 680 DA#(1)=4: DA#(2)=4:DA#(3)=5: DA#(4)=6:DA#(5)=5 ' DAYS OP PER WEEK 690 OT#(1)=0 ' OVER TIME HOURS 700 OT#(2)=0 710 OT#(3)=0 720 OT#(4)=8 730 OT#(5)=10 740 GO#(1)=0 :IF SH% = 2 THEN GO#(1) = 10 'GRADER OVTIME 1/2 FOR 2 SHF 750 GO#(2)=0 :IF SH% = 2 THEN GO#(2) = 10.5 760 GO#(3)=0 :IF SH% = 2 THEN GO#(3) = 12.5 770 GO#(4)=8 :IF SH% = 2 THEN GO#(4) = 20.5 780 GO#(5)=0 :IF SH% = 2 THEN GO#(5) = 20 781 REM CALCULATE HEAD PROCESSED ########### 783 FOR I = 1 TO 5 784 HD#(I)=(INT(HX# * HO#(I) * 50 * .9375)) * SH% '.9375 FROM 15MIN BRK EACH 4 HRS 786 NEXT I 790 GOTO 60000 'GO TO MAIN MENU 800 OPEN "R",1, FX$, 64 'READ DATA ################################## 810 FIELD 1,2 AS F$(1),2 AS F$(2),2 AS F$(3),8 AS F$(4),8 AS F$(5), 8 AS F$(6),8 AS F$(7), 8 AS F$(8), 18 AS DUM$ 828 OPEN "I",2,F2$ 830 REM READ ST%, AC%, SU%, DE$, NU#, LI#, CO#, SH#, PA$ 834 INPUT#2,ST$,AC%,SU%,DE$,NU#,LI#,CO#,SH#,PA$ 835 CO#=CO#*AD#(AC%/10) 836 ST%=VAL(RIGHT$(ST$,(LEN(ST$)-11))) 'STRIPS OFF LINE NUMBER AND WORD DATA 840 IF ST% = 999 THEN GOTO 850ELSE GOTO 860 850 CLOSE : GOTO 55150 'GO TO AGGREGATION SUBROUTINE 860 IF( INSTR(SIMULATE$,"BOX")>0 AND PA$="CARCASS") THEN GOTO 830 870 IF INSTR(SIMULATE$,"KIL")>0 THEN GOTO 880 ELSE GOTO 910 880 IF INSTR(DE$,"BOX") > 0 THEN PRINT "NOT USED FOR KILL ONLY":GOTO 830' CH PA TO DE$ 890 IF ST%>= 500 AND ST%<=800 THEN PRINT "NOT USED FOR KILL ONLY": GOTO 830 900 IF ST% = 1100 THEN PRINT "NOT USED FOR KILL ONLY": GOTO 830 910 K=K+1:PRINT K,ST%,AC%,DE$ 920 IF SH% = 2 THEN NU# = NU# * SH# 930 VA# = NU# * CO# 940 TE% = (AC%/10)+1 950 ON TE% GOSUB 1010,1010,1010,3000,4010,5010,6010,7010,8010,9010 960 GOTO 830 1000 'INVESTMENT READS ###################################################### 1010 FIELD 1,2 AS F$(1), 2 AS F$(2), 2 AS F$(3), 8 AS F$(4), 8 AS F$(5), 8 AS F$(6), 8 AS F$(7), 8 AS F$(8), 18 AS DUM$ 1020 GOSUB 11010'ERASE X#: DIM X#(5,10) 1030 IF AC%>0 THEN TV# = VA# * 1.25 ELSE TV#=VA# ' ADD 25% INSTALLATION 1040 X#(1,0) = TV# 'TOTAL VALUE INCL INSTALLATION 1050 X#(1,2) = TV#/LI#: IF AC% = 0 THEN X#(1,2) = O ' DEPREC. ON FACIL. & EQUI. 1060 X#(1,3) = (1-EQ#)*LT#*TV# 'LONG TERM INTEREST 1070 X#(1,4) = TV# * RT# 'REAL ESTATE TAX 1080 X#(1,5) = TV# * IN#(AC%/10) ' INSURANCE 1090 X#(1,6) = TV# * RP#(AC%/10) 'REP & MAINT 1100 IF AC% < 1 THEN X#(1,7)=0 ELSE X#(1,7) = (.08*TV#)/LI# 'INVESTMENT CREDIT 1110 IF EC%>0 THEN X#(1,8) = EC * TV#/LI# 1120 X#(1,9) = 0 1130 FOR I = 2 TO 6: X#(1,1) = X#(1,1) + X#(1,I): NEXT 1140 FOR I = 0 TO 9: FOR J = 2 TO 5 1150 X#(J,I) = X#(1,I): 1160 NEXT: NEXT 1170 GOSUB 10010 1180 RETURN 3000 'INVENTORY READS ************************************* 3010 X#(1,0)=VA# : X#(1,2)= VA#-(LI#*VA#): X#(1,3)=VA#*ST# 3020 X#(1,4)=VA# * PT# : X#(1,5)=VA#*IN#(3) : X#(1,6)=0 : X#(1,7)=0: X#(1,8)=0 : X#(1,9)=0 3030 X#(1,1)= X#(1,2) +X#(1,3) + X#(1,4) +X#(1,5) 3040 FOR I= 0 TO 9: FOR J = 2 TO 5 3050 X#(J,I)=X#(1,I) : NEXT J: NEXT I 3060 GOSUB 10010 3070 RETURN 4000 'WAGE AND SALARY READ ################################################# 4010 GOSUB 11010'ERASE X#: DIM X#(5,10) 4020 IF INSTR(PA$,"DAY")>0 THEN GOTO 4030ELSE GOTO 4090 4030 WA#= CO#/250 'COST PER DAY 4040 FOR I = 1 TO 5 4050 X#(I,SU%)=(((WA# +LI# *.8) * DA#(I)) * 50) * NU# 4060 X#(I,SU%+4) = X#(I,SU%)*.31 4070 NEXT I 4080 GOTO 4270 4090 IF INSTR(PA$,"YEAR") THEN 4100ELSE GOTO 4150 4100 FOR I = 1 TO 5 4110 X#(I,SU%)= CO# *NU# 4120 IF SU%=2 THEN X#(I,SU%+1)=X#(I,SU%) * .31 ELSE X#(I,SU%+4)=X#(I,SU%) * .31 4130 NEXT I 4140 GOTO 4270 4150 WA# = CO#/2000 4160 IF SU% = 2 THEN GOTO 4220 4170 FOR I = 1 TO 5 4180 X#(I,SU%) = ((WA#+LI#*.1)*HR#(I)*50)*NU# 4190 X#(I,SU%+2) =((WA#+LI#*.1)* OT#(I) *50) *NU#*.5 4200 X#(I,SU%+4) = (X#(I,SU%) + X#(I,SU%+2))*.31 'MOVED PAREN 9/5/84 4210 NEXT 4220 IF SU% > 2 THEN GOTO 4270 4230 FOR I = 1 TO 5 4240 X#(I,SU%) = CO#*NU# 4250 X#(I,SU%+1) = X#(I,SU%) * .31 4260 NEXT 4270 FOR I = 1 TO 5: X#(I,0) = NU#:NEXT I 4280 FOR I = 1 TO 5: FOR J = 2 TO 9 4290 X#(I,1) = X#(I,1) + X#(I,J) 4300 NEXT : NEXT 4310 GOSUB 10010 4320 RETURN 5000 'RAW MATERIALS ######################################################## 5010 GOSUB 11010'ERASE X#: DIM X#(5,10) 5020 FOR I = 1 TO 5 5030 X#(I,SU%)= CO#*NU#*HD#(I) 5040 X#(I,1) = X#(I,SU%) : NEXT 5050 GOSUB 10010 5060 RETURN 6000 'SUPPLIES AND CONT ################################################### 6010 GOSUB 11010'ERASE X#: DIM X#(5,10) 6020 FOR I = 1 TO 5 6030 IF PA$="YEAR" THEN MU#=1 ELSE IF PA$="HEAD" THEN MU#=HD#(I) 6040 X#(I,SU%) = CO# * NU# * MU# 6050 X#(I,1) = X#(I,SU%): NEXT 6060 GOSUB 10010 6070 RETURN 7000 'UTILITIES ########################################################## 7010 GOSUB 11010'ERASE X#: DIM X#(5,10) 7020 ' PRINT PRINT PRINT PRINT IF INSTR(PA$,"YEAR") THEN GOTO 1282 ELSE GOTO 1220 7030 FOR I = 1 TO 5 7040 IF INSTR(PA$,"YEAR")THEN MU#=1 ELSE MU#=HD#(I) 7050 X#(I,SU%) = CO# * NU# * MU# 7060 X#(I,1) = X#(I,SU%): NEXT 7070 GOSUB 10010 7080 RETURN 7090 '&&&&&&&&&&&&&&&&& 8000 'MISC ################################################################ 8010 GOSUB 11010'ERASE X#: DIM X#(5,10) 8020 CO# = CO#/AD#(AC%/10) ' INSPECTION SALARIES IN DATA SO REMOVE ADJUSTMENT 8030 FOR I = 1 TO 5 'INSPECTION IS OVERTIME ONLY TIMES SALARY IN DATA 8040 X#(I,SU%) = (((CO#/2000)*OT#(I)*NU#*50)) 'CO#*OT#(I) REVSD 4/20/89 8050 X#(I,1) = X#(I,SU%): NEXT 8060 IF SU% < > 3 THEN GOTO 8100 8062 CO#=CO#/AD#(AC%/10) ' GRADE SALARIES IN DATA SO REMOVE ADJUSTMENT 8070 FOR I = 1 TO 5 8075 ' GO# IS GRADER OVERTIME .2777 IS RATIO OF STRAIGHT TO OVERTIME IN 88 8080 X#(I,SU%)=(((CO#/2000)*HR#(I)) + (.2777 * (CO#/2000) * GO#(I))) * NU#*50 8090 X#(I,1) = X#(I,SU%): NEXT 8100 IF SU% < > 4 THEN GOTO 8140 8110 FOR I = 1 TO 5 8120 X#(I,SU%) = CO# 8130 X#(I,1) = X#(I,SU%): NEXT 8140 IF SU% <> 5 THEN GOTO 8180 8150 FOR I = 1 TO 5 ' ACCOUNTS RECEIVABLE BASED DATA 8160 X#(I,SU%)=NU#*CO#*HD#(I) 8170 X#(I,1) = X#(I,SU%): NEXT I 8180 IF SU% <> 6 THEN GOTO 8280 8190 FOR I = 1 TO 5 ' MISC 8200 X#(I,SU%) = NU#*CO#*HD#(I) 8210 X#(I,1) = X#(I,SU%): NEXT I 8280 GOSUB 10010 8290 RETURN 9000 'REVENUES ############################################################ 9010 GOSUB 11010'ERASE X#:DIM X#(5,10) 9020 FOR I = 1 TO 5 9030 X# (I,SU%) = NU# * CO# * HD#(I) 9040 X#(I,1) = X#(I,SU%) : NEXT 9050 GOSUB 10010 9060 RETURN 10000 'SUBR TO WRITE X'S TO DISK '######################################### 10010 RN% = ST% + AC%: FOR J = 0 TO 9 10020 GET 1,RN%+J 10030 RSET F$(1) = MKI$(ST%): RSET F$(2) = MKI$(AC%): RSET F$(3) = MKI$(J) 10040 FOR I = 1 TO 5 10050 Y# = CVD(F$(I+3)) + X#(I,J) 10060 RSET F$(I+3) = MKD$(Y#) 10070 NEXT : PUT 1,RN%+J 10080 PRINT RN%+J 10090 NEXT 10100 RETURN 11000 'ZERO OUT X MATRIX ######### 11010 FOR I= 0 TO 5: FOR J= 0 TO 10 11020 X#(I,J)=0 11030 NEXT:NEXT: 11040 RETURN 20000 'DATA######################################## 50000 'TABLES###################################### 50010 TK%=TK%+1:IF TK%>1 THEN GOTO 50020 ELSE ERASE X#:DIM ST$(22),SU$(10,10) 50020 FT$="############": FH$="########.###" 50030 CLS 50040 CLS:PRINT TAB(30);"PRINT TABLES MENU" 50050 PRINT: 50060 PRINT TAB(15);"SELECT FROM BELOW TO CREATE OUTPUT TABLES" 50070 PRINT:PRINT 50075 PRINT TAB(19);"FOR HARD COPY USE " 50080 PRINT TAB(20);"DO YOU WISH TO..." 50090 PRINT:PRINT: 50100 PRINT TAB(20);"<0> RETURN TO MAIN MENU" 50110 PRINT TAB(25);"<1> PRINT TOTAL COSTS BY STAGE BY ACCOUNT" 50120 PRINT TAB(25);"<2> PRINT COSTS PER HEAD BY STAGE BY ACCOUNT" 50130 PRINT TAB(25);"<3> PRINT TOTAL COSTS FOR ALL STAGES BY ACCOUNT" 50140 PRINT TAB(25);"<4> PRINT COSTS PER HEAD FOR ALL STAGES BY ACCOUNT" 50150 PRINT TAB(25);"<5> PRINT COSTS PER HEAD BY STAGE BY ACC'T BY SUBA'CT" 50152 PRINT TAB(25);"<6> PRINT INVESTMENT & LABOR SUMMARY (TOTAL)" 50154 PRINT TAB(25);"<7> PRINT INVESTMENT & LABOR SUMMARY BY STAGE" 50160 PRINT:PRINT:PRINT 50170 PRINT TAB(20);:INPUT"ENTER YOUR CHOICE 0-7";W 50180 IF W=0 THEN CLOSE:GOTO 60000 'GOTO MAIN MENU 50190 IF W=1 THEN KIND$=" ": FLAG$=" ":SA$=" ": GOTO 50250 50200 IF W=2 THEN KIND$=" ":SA$=" ": FLAG$ = "PER HEAD": GOTO 50250 50210 IF W=3 THEN KIND$ = "TOTAL": FLAG$ = " ":SA$ = " ": GOTO 50250 50220 IF W=4 THEN KIND$ = "TOTAL": FLAG$ = "PER HEAD":SA$ = " ": GOTO 50250 50230 IF W=5 THEN SA$ = "SUBS":FLAG$ = "PER HEAD":KIND$ = " ":GOTO 50250 50232 IF W=6 THEN GOTO 50250 50234 IF W=7 THEN GOTO 50250 50240 IF W<1 OR W>2 THEN PRINT"PLEASE PICK NUMBER BETWEEN 1-7 ONLY!":GOTO 50160 50250 'CONTINUE 50260 OPEN "R",1,FX$,64 50270 FIELD 1,2 AS F$(1),2 AS F$(2),2 AS F$(3),8 AS F$(4),8 AS F$(5),8 AS F$(6),8 AS F$(7),8 AS F$(8),18 AS DUM$ 50330 RESTORE 50370 50340 FOR ST%=1 TO 21 50350 READ ST$(ST%) 50360 NEXT ST% 50369 'ST= 100 200 300 400 500 600 50370 DATA PARKING,PROCUREMENT,CORRALS,KILL FLOOR,BREAKING,FABRICATION 50379 'ST= 700 800 900 1000 1100 50380 DATA FINANCIAL, HAMBURGER,CHILL COOLER,HOLDING COOLER,BOXED COOLER 50389 'ST= 1200 1300 1400 1500 1600 1700 50390 DATA FREEZER,BY-PRODUCTS,TRANSPORTATION,WASTE TREATMENT,SALES,SANITATION 50399 'ST= 1800 1900 2000 2100 50400 DATA MAINT. & SECURITY,OFFICE & ADMINISTRATION,REVENUES,TOTAL ALL STAGES 50410 '********** READ MAIN ACCOUNT NAMES ************************************* 50420 FOR AC%=0 TO 9 50430 READ AC$(AC%) 50440 NEXT AC% 50450 DATA INVESTMENT-LAND,INVESTMENT-FACILITIES,INVESTMENT-EQUIPMENT 50460 DATA INVENTORY,WAGES & SALARIES,LIVESTOCK & TRIMMINGS PURCH. 50470 DATA SUPPLIES & CONTAINERS,UTILITIES,MISCELLANEOUS,FINANCES 50480 '*********** READ SUB ACCOUNT NAMES ***************************** 50490 FOR AC% = 0 TO 9 50500 FOR SU%= 0 TO 9 50510 READ SU$(AC%,SU%) 50520 NEXT SU% 50530 NEXT AC% 50540 DATA TOTAL VALUE,COST, ,INTEREST-LONG TERM,TAX-REAL ESTATE,INSURANCE-LIABILITY 50550 DATA REPAIR & MAINT, ,ENERGY CREDIT, ACRS 50560 DATA TOTAL VALUE,COST,DEPRECIATION,INTEREST LONGTERM,TAX-REAL ESTATE,INSURANCE-CASUALTY,REPAIR & MAINT,INV. CREDIT, ENERGY CREDIT,ACRS 50570 DATA TOTAL VALUE,COST,DEPRECIATION,INTEREST-LONGTERM,TAX-PERS. PROPERTY,INSURANCE-CASUALTY,REPAIR & MAINT,INV. CREDIT,ENERGY CREDIT, 50580 DATA ***,TOTAL COST,SHRINK,INTEREST SHORTTERM,TAX PERS. PROPERTY,INSURANCE-CASUALTY,SERVICE, , , 50590 DATA NUMBER,COST,SALARY-DIRECT,SALARY FRINGE,DIRECT-ST TIME,SUVERVISOR-ST TIME 50600 DATA DIRECT OVERTIME,SUPERVISOR OVERTIME,DIRECT FRINGE,SUPERVISOR FRINGE 50610 DATA NUMBER,COST,STEERS,HEIFERS,COWS,BULLS, , , , 50620 DATA *** ,COST,LIVEST. FEED,OPERATING SUPPLIES,CARDBOARD (BOXES),PLASTIC(BAGS), , , , 50630 DATA *** ,COST,WATER,ELECTRICITY,NATURAL GAS, DIESEL,TELEPHONE,SEWAGE, , 50640 DATA *** ,COST, INSPECTION,GRADING,LICENSES,ACC/RECV,UNALLOCATED, , , 50650 DATA *** ,TOTAL REVENUE,REV-CARCASSES,REV-BOX PRIMALS,REV-BOX SUBPR,REV-HAMBURGER,REV-BYPRODUCTS,REV-BOX BYPRODUCTS, , 50652 IF (W=6 OR W=7) THEN GOTO 52000 50660 FOR ST%=100 TO 2100 STEP 100 50670 IF KIND$="TOTAL" THEN ST%=2100 50680 IF (ST% <> 100 AND ST% <> 2100) THEN GOTO 50700 50690 PRINT"TABLE ";W;"-- PRINTED FROM FILE = ";FX$;" ON ";DATE$ 50691 PRINT " ";HX#;"HEAD PER HOUR,";SH%;"SHIFT(S)";" ,ANALYZING ";SIMTIT$:PRINT 50700 IF W=5 THEN PRINT CHR$(12) 50710 PRINT "| ACCOUNT/(Subac't) |=======STAGE = ";ST$(ST%/100);STRING$((43-LEN(ST$(ST%/100))),"=") 50720 PRINT:PRINT TAB(21);:FOR I = 1 TO 5:PRINT USING"########,";HD#(I);:PRINT" ";:NEXT I 50723 PRINT TAB(21);:FOR I = 1 TO 5: PRINT "HEAD/year ";:NEXT I:PRINT 50730 FOR AC%=0 TO 90 STEP 10 50740 GET 1,ST%+AC%+1 50750 IF CVD(F$(7))=0 THEN GOTO 50950 50760 IF W=5 THEN PRINT: 50770 PRINT USING"\ \";AC$(AC%/10);:IF W = 5 THEN PRINT STRING$(62,"-") 50780 IF SA$ <> "SUBS" THEN GOTO 50880'START SUBACCTS TABLE 50790 FOR SU%= 2 TO 9:GET 1,ST%+AC%+SU% 50800 IF CVD(F$(7))= 0 THEN GOTO 50870 50810 PRINT USING"\ \";SU$(AC%/10,SU%); 50820 FOR OP%= 4 TO 8 50830 IF FLAG$= "PER HEAD" THEN GOTO 50850 50840 PRINT USING FT$;CVD(F$(OP%));:GOTO 50860 50850 PRINT USING FH$;CVD(F$(OP%))/HD#(OP%-3); 50860 NEXT OP%:PRINT 50870 NEXT SU% 50880 GET 1, ST%+AC%+1 50890 IF W=5 THEN PRINT:PRINT"[ACCOUNT TOTAL]"; 50900 FOR I = 4 TO 8 50910 IF FLAG$="PER HEAD"THEN GOTO 50930 50920 PRINT USING FT$;CVD(F$(I));:GOTO 50940 50930 PRINT USING FH$;CVD(F$(I))/HD#(I-3); 50940 NEXT I : PRINT 50950 NEXT AC%:PRINT 50960 NEXT ST% 50970 ' PRINT REVENUE AND COSTS 50980 GET 1,2200 50990 FOR OP% = 4 TO 8 51000 TC#(OP%) = CVD(F$(OP%)): NEXT OP% 51010 GET 1,2100 + 90 +1 51020 FOR OP% = 4 TO 8 51030 TR#(OP%)= CVD(F$(OP%)) 51040 PR#(OP%) = TR#(OP%)-TC#(OP%) 51050 NEXT OP% 51060 GET 1, 2151 51070 FOR OP%= 4 TO 8: RM#(OP%)=CVD(F$(OP%)) : NEXT OP% 'RAW MATERIALS VALUE 51080 PRINT:PRINT 51090 PRINT STRING$(79,"*") 51100 PRINT " GRAND TOTALS for ";SIMTIT$;" ";HX$;" HEAD PER HOUR and";SH%;"SHIFT(S)" 51104 PRINT" Printed on ";DATE$ 51110 PRINT STRING$(79,"*") 51120 PRINT:PRINT TAB(13);:FOR I = 1 TO 5:PRINT USING"#########,";HD#(I);:PRINT"HD";:NEXT I:PRINT:PRINT 51130 T1$="==== TOTAL FIXED AND VARIABLE COSTS (EXCLUDING LIVESTOCK) ====" 51140 PRINT SPACE$((80-LEN(T1$))/2);T1$ 51150 PRINT "TOTAL ANNUAL";:FOR OP%=4 TO 8: PRINT USING FT$; TC#(OP%)-RM#(OP%);:NEXT OP% 51160 PRINT:PRINT " PER HEAD ";:FOR OP%= 4 TO 8: PRINT USING FH$;(TC#(OP%)-RM#(OP%))/HD#(OP%-3) ;: NEXT OP%:PRINT 51170 T2$="==== COST OF LIVESTOCK ====" 51180 PRINT:PRINT SPACE$((79-LEN(T2$))/2);T2$ 51190 PRINT "TOTAL ANNUAL";:FOR OP%=4 TO 8:PRINT USING FT$;RM#(OP%);:NEXT OP% 51200 PRINT:PRINT " PER HEAD " ;:FOR OP%=4 TO 8:PRINT USING FH$;RM#(OP%)/HD#(OP%-3);:NEXT OP% 51210 PRINT 51220 T3$="==== GROSS REVENUE ====" 51230 PRINT:PRINT SPACE$((79-LEN(T3$))/2);T3$ 51240 PRINT "TOTAL ANNUAL";:FOR OP% = 4 TO 8: PRINT USING FT$; TR#(OP%);:NEXT OP% 51250 PRINT:PRINT " PER HEAD ";:FOR OP% = 4 TO 8: PRINT USING FH$; TR#(OP%)/HD#(OP%-3);:NEXT OP% 51260 PRINT 51270 T4$="==== REVENUE LESS COST ===" 51280 PRINT :PRINT SPACE$((79-LEN(T4$))/2);T4$ 51290 PRINT "TOTAL ANNUAL";:FOR OP%= 4 TO 8:PRINT USING FT$; PR#(OP%);:NEXT OP% 51300 PRINT:PRINT " PER HEAD ";:FOR OP%= 4 TO 8: PRINT USING FH$; PR#(OP%)/HD#(OP%-3);:NEXT OP% 51310 PRINT:PRINT:CLOSE:INPUT " HIT ENTER TO RETURN TO TABLE MENU..";XX#: GOTO 50040 52000 REM INV. AND EMP TABLES ########################### 52005 AC$(4)="NO. OF EMPLOYEES" 52006 CLS 52007 PRINT "TABLE ";W;" PRINTED FROM FILE <";FX$;"> ON ";DATE$ 52010 PRINT STRING$(79,"_"):PRINT 52027 IV$="INVESTMENT AND EMPLOYEE SUMMARY" 52030 PRINT SPACE$((79 - LEN(IV$))/2);IV$ 52040 PRINT STRING$(79,"_"):PRINT 52060 FOR ST% = 100 TO 2100 STEP 100 52070 IF W = 6 THEN ST% = 2100 52080 PRINT 52090 PRINT "====== ITEM ==== =========== STAGE =";ST$(ST%/100);STRING$(40-LEN(ST$(ST%/100)),"=") 52110 PRINT TAB(20);" -- TOTAL -- ";" ------------- PER HEAD PROCESSED -----------" 52120 PRINT TAB(33);:FOR I = 1 TO 5:PRINT USING"#########";HD#(I);:NEXT I 52130 PRINT:PRINT 52140 FOR AC% = 0 TO 40 STEP 10 52150 IF AC% = 30 THEN GOTO 52210 52155 GET 1, ST%+AC% 52157 MU%=1 52160 IF AC% = 40 THEN PRINT TAB(32);" -- EMPLOYEES PER 1000 HEAD --": MU%=1000 52170 PRINT USING"\ \";AC$(AC%/10); 52180 PRINT USING"########,###";CVD(F$(4)); 52190 FOR I = 1 TO 5:PRINT USING"#####.###";MU% * CVD(F$(I+3))/HD#(I);:NEXT I 52200 PRINT 52210 NEXT AC%:NEXT ST% 52220 PRINT:PRINT:INPUT "HIT ENTER TO RETURN TO TABLES MENU";W 52230 CLOSE:GOTO 50040 55000 'CALCULATE TOTALS############################ 55010 PRINT TAB(30);"TOTALS MENU" 55020 PRINT: 55030 PRINT TAB(15);"THIS PROGRAM ACCUMULATES DATA FROM ALL STAGES, BY MAJOR" 55040 PRINT TAB(15);"ACCOUNTS, INTO A TOTAL FOR ALL STAGES BY MAJOR ACCOUNT." 55050 PRINT:PRINT:PRINT 55060 PRINT TAB(20);"DO YOU WISH TO...." 55070 PRINT:PRINT:PRINT 55080 PRINT TAB(30); "<1> RUN TOTALS PROGRAM" 55090 PRINT TAB(30); "<2> RETURN TO MAIN MENU" 55100 PRINT:PRINT:PRINT 55110 PRINT TAB(20);NPUT"ENTER YOUR CHOICE 1-2";W 55120 IF W=1 THEN GOTO 55150 55130 IF W=2 THEN CLOSE: GOTO 200 55140 IF W<1 OR W>2 THEN PRINT "NUMBER 1 OR 2 ONLY, PLEASE!": GOTO 55110 55150 OPEN "R",1,FX$,64 55160 FIELD 1,2 AS F$(1),2 AS F$(2),2 AS F$(3),8 AS F$(4),8 AS F$(5),8 AS F$(6),8 AS F$(7),8 AS F$(8), 18 AS DUM$ 55170 FOR SU% = 0 TO 9 55180 FOR AC% = 0 TO 90 STEP 10 55190 FOR ST% = 100 TO 2000 STEP 100 55200 GET 1, ST%+AC%+SU% 55210 PRINT ST%;AC%;SU% 55220 FOR I = 4 TO 8 55230 Z#(I) = Z#(I) + CVD(F$(I)) : NEXT I 55240 NEXT ST% 55250 RSET F$(1) = MKI$(2100): RSET F$(2) = MKI$(AC%): RSET F$(3) = MKI$(SU%) 55260 FOR K = 4 TO 8 55270 RSET F$(K) = MKD$(Z#(K)) :PRINT USING"#######.#"; (Z#(K));:NEXT K:PRINT: 55280 PUT 1, 2100 + AC%+SU% 55290 FOR L = 4 TO 8: Z#(L) = 0: NEXT L:PRINT"Z ZEROED OUT" 55300 NEXT AC% 55310 NEXT SU% 55320 '*****GRAND TOTALS ******************* 55330 FOR I = 1 TO 10: TZ#(I)=0 : NEXT I 55340 FOR AC%=0 TO 80 STEP 10 55350 PRINT "GRAND TOTALS" 55360 GET 1, 2100 +AC% +1 55370 FOR OP%= 4 TO 8 55380 TZ#(OP%)=TZ#(OP%) + CVD(F$(OP%)) 55390 IF AC% < = 20 THEN FZ#(OP%)=FZ#(OP%) + CVD(F$(OP%)) 55400 IF AC% > 20 THEN VZ#(OP%) = VZ#(OP%)+CVD(F$(OP%)) 55410 NEXT OP%:NEXT AC% 55420 RSET F$(1)=MKI$(2200):RSET F$(2)=MKI$(2200):RSET F$(3)=MKI$(2200) 55430 FOR OP%=4 TO 8 55440 RSET F$(OP%)=MKD$(TZ#(OP%)) 55450 NEXT OP% 'MOVED FROM 20420 * 55460 PUT 1, 2200 55470 RSET F$(1)=MKI$(2201): RSET F$(2) = MKI$(2201): RSET F$(3) = MKI$(2201) 55480 FOR OP% = 4 TO 8 55490 RSET F$(OP%)=MKD$(VZ#(OP%)) 55500 NEXT OP% 55510 PUT 1, 2201 55520 RSET F$(1)=MKI$(2202):RSET F$(2)=MKI$(2202):RSET F$(3)=MKI$(2202) 55530 FOR OP% = 4 TO 8 55540 RSET F$(OP%)=MKD$(FZ#(OP%)) 55550 NEXT OP% 55560 PUT 1, 2202 55570 CLOSE :GOTO 60000 'GOTO MAIN MENU 55580 GOTO 55010 57000 'ZERO FILL################################### 57010 'PROGRAM FILLS B:FILE1.DAT WITH ZEROES 57020 CLS 57030 PRINT" ACCUMULATOR FILE INITIALIZATION MENU " 57040 PRINT:PRINT:PRINT:PRINT: 57050 PRINT" THIS ROUTINE ZEROES OUT ";FX$;" --ANY EXISTING" 57060 PRINT" DATA IN ";FX$;" WILL BE LOST, SO BE SURE 57070 PRINT" YOU WISH TO DO THIS BEFORE CONTINUING!" 57071 PRINT" IF ";FX$;" DOES NOT EXIST, THIS WILL CREATE IT." 57080 PRINT:PRINT: 57090 PRINT TAB(30);"DO YOU WISH TO ..." 57100 PRINT:PRINT 57110 PRINT TAB(30);"<1> CONTINUE AND FILL ";FX$;" WITH ZEROES " 57120 PRINT TAB(30);"<2> RETURN TO THE MAIN MENU " 57130 PRINT:PRINT:PRINT 57140 INPUT"ENTER YOUR CHOICE 1-2";W 57150 IF W=1 THEN GOTO 57190 57160 IF W=2 THEN GOTO 60000 'GOTO MAIN MENU 57170 IF W<1 OR W>2 THEN PRINT "1 OR 2 ONLY PLEASE!";:GOTO 57140 57180 CLOSE 57190 OPEN "R",1,FX$,64 57200 A%=0 57210 B#=0 57220 FIELD 1,2 AS F$(1), 2 AS F$(2), 2 AS F$(3), 8 AS F$(4), 8 AS F$(5), 8 AS F$(6), 8 AS F$(7), 8 AS F$(8), 18 AS DUM$ 57230 FOR I = 1 TO 3: RSET F$(I) = MKI$(A%):NEXT 57240 FOR I = 4 TO 8: RSET F$(I) = MKD$(B#):NEXT 57250 FOR I=1 TO 2300 57260 PUT 1,I 57270 GET 1,I 57280 PRINT I 57290 NEXT 57300 CLOSE 57310 GOTO 60000 ' GOTO MAIN MENU 57320 CLS 59000 'EXAMINE RECORDS############################# 59002 CLS 59010 PRINT TAB(30);"LOOKFILE MENU" 59020 PRINT: 59030 PRINT TAB(20);"THIS ROUTINE LETS YOU REVIEW RECORDS IN ";FX$ 59032 PRINT TAB(20);"UNLESS YOU KNOW EXACTLY WHY YOU ARE HERE YOU" 59034 PRINT TAB(20);"PROBABLY DON'T WANT TO BE. CHOOSE <2>." 59040 PRINT:PRINT:PRINT 59050 PRINT TAB(20);"DO YOU WISH TO..." 59060 PRINT:PRINT:PRINT 59070 PRINT TAB(30);"<1> EXAMINE RECORDS" ' REV 4/20/89 59080 PRINT TAB(30);"<2> RETURN TO MAIN MENU" 59090 PRINT:PRINT:PRINT 59100 PRINT TAB(20);:INPUT"ENTER YOUR CHOICE 1-2";W 59110 IF W=1 THEN GOTO 59140 59120 IF W=2 THEN CLOSE: GOTO 60000 'GOTO MAIN MENU 59130 IF W<1 OR W>2 THEN PRINT "NUMBER 1 OR 2 ONLY, PLEASE!": GOTO 59100 59140 OPEN "R",1,FX$,64 59150 INPUT "WHAT RECORD # TO VIEW, 0=END"; RN% 59160 IF RN%=0 THEN CLOSE: GOTO 59010 59170 FIELD 1,2 AS F$(1), 2 AS F$(2), 2 AS F$(3), 8 AS F$(4), 8 AS F$(5), 8 AS F$(6), 8 AS F$(7), 8 AS F$(8), 18 AS DUM$ 59180 GET 1,RN% 59190 FOR I = 1 TO 3:PRINT CVI(F$(I));:NEXT:PRINT 59200 FOR I = 4 TO 8:PRINT CVD(F$(I)),:NEXT:PRINT 59210 GOTO 59150 60000 CLS:REM ** MAIN MENU SUBROUTINE ########################### 60020 PRINT"PACKER COST ANALYSER" 60030 PRINT"VERSION 3.0, MAY , 1987" 60040 PRINT"KEN NELSON / LARRY DUEWER" 60050 PRINT"USDA,ERS,CED,LDPB,LR" 60060 PRINT 60070 PRINT" MAIN MENU" 60080 PRINT 60082 PRINT TAB(25);"CURRENT INPUT DATA FILESPEC IS ";F2$ 60083 PRINT TAB(25);"CURRENT ACCUMULATOR FILESPEC IS ";FX$:PRINT 60090 PRINT" DO YOU WISH TO ..." 60100 PRINT 60110 PRINT TAB(25);"<1> SET-CHANGE CAPACITY, KILL OR BOX, FILES ETC." 60111 PRINT TAB(25);" (DO 1 IF JUST BEGINNING OR CHANGING A RUN) 60119 PRINT TAB(25);"<2> INITIALIZE ACCUMULATOR FILE (";FX$;")" 60120 PRINT TAB(25);" (MUST DO 2 BEFORE POSTING DATA)" 60121 PRINT TAB(25);"<3> POST NEW DATA FROM DATA INPUT FILE" 60134 PRINT TAB(25);"<4> PRINT DETAIL OR SUMMARY TABLES" 60135 PRINT TAB(25);" (MUST DO 2 AND 3 ONCE BEFORE 4 AT WILL) 60150 PRINT TAB(25);"<5> EXAMINE INDIVIDUAL ACCUMULATOR FILE RECORDS" 60151 PRINT TAB(25);" (5 IS DIAGNOSITIC AID, SELDOM USED) 60160 PRINT TAB(25);"<6> QUIT AND RETURN TO DOS" 60170 PRINT 60180 PRINT TAB(25);:INPUT"ENTER YOUR CHOICE 1-6";W 60190 IF W<1 OR W>6 THEN PRINT"NUMBER BETWEEN 1 AND 6 PLEASE":GOTO 60180 60199 ON W GOTO 61000,57010,800,50010,59000,60210 60200 REM ## ON W GOTO 61000,800,50010,57010,59000,60210 60210 CLOSE:CLS:SYSTEM 61000 ' SUBROUTINE TO SET FILE SPECS ############ 61010 CLS:PRINT " ANSWERS TO THE FOLLOWING QUESTIONS WILL DETERMINE THE FILE NAMES" 61020 PRINT" AND OTHER OPERATING PARAMETERS OF THE PROGRAM":PRINT 61025 PRINT STRING$(79,"_"):PRINT 61030 MA$="I" ' ## INPUT"ARE YOU USING RADIO SHACK OR IBM ";MA$ 61032 ENTRY$="BAD" 61040 INPUT"DO YOU WISH TO ANALYSE KILL ONLY OR KILL + BOX ";EX$ 61050 IF LEFT$(EX$,1) = "K" OR LEFT$(EX$,1) = "k" THEN EX$="KIL" : SIMULATE$="KIL":ENTRY$="OK" 61060 IF LEFT$(EX$,1) = "B" OR LEFT$(EX$,1) = "b" THEN EX$="BOX" : SIMULATE$="BOX":ENTRY$="OK" 61061 SIMTIT$="SLAUGHTER AND PROCESS" : IF SIMULATE$ = "KIL" THEN SIMTIT$ = "SLAUGHTER ONLY" 61062 IF ENTRY$="OK" THEN GOTO 61070 ELSE PRINT: PRINT "K OR B ONLY PLEASE":GOTO 61040 61070 PRINT"HOW MANY HEAD PER HOUR TO PROCESS? -- ENTER 3 DIGITS" 61080 INPUT"CHOICES ARE: 010,047,075,120,210,300";HX$ 61081 IF HX$="010" OR HX$="047" OR HX$="075" OR HX$="120" OR HX$="210" OR HX$="300" THEN GOTO 61090 ELSE PRINT"NOT AN ALLOWABLE RATE PER HOUR - TRY AGAIN.":GOTO 61070 61090 HX#=VAL(HX$) 61100 INPUT"HOW MANY SHIFTS TO ANALYSE <1> OR <2>";SH% 61102 IF SH%=1! OR SH%=2! THEN GOTO 61110 ELSE PRINT:PRINT "ENTER EITHER 1 OR 2 PLEASE.":PRINT:GOTO 61100 61110 INPUT"WHAT DRIVE FOR INPUT DATA FILE E.G. OR ";D1$ 61112 IF D1$=""THEN GOTO 61120 ELSE D1$=LEFT$(D1$,1)+":" 61120 INPUT"WHAT DRIVE FOR ACCUMULATOR FILE E.G. OR ";D2$ 61122 IF D2$="" THEN GOTO 61170 ELSE D2$=LEFT$(D2$,1)+":" 61130 IF LEFT$(MA$,1)="R" THEN GOTO 61140 ELSE GOTO 61170 61140 F2$="PAC"+HX$+"/"+"DAT"+D1$ 61150 FX$="AC"+HX$+"S"+RIGHT$(STR$(SH%),1)+"/"+EX$+D2$ 61160 GOTO 61190 61170 F2$=D1$+"PAC"+HX$+"."+"DAT" 61180 FX$=D2$+"ACM"+HX$+"S"+RIGHT$(STR$(SH%),1)+"."+EX$ 61190 PRINT:PRINT STRING$(70,"*") 61200 PRINT "YOUR INPUT DATA FILESPEC IS <";F2$;">" 61210 PRINT "YOUR ACCUMULATOR FILESPEC IS <";FX$;">" 61212 PRINT "These imply ";HX$;" head per hour,";SH%;"shift(s)" 61213 PRINT "and an analysis of ";SIMTIT$ 61215 PRINT STRING$(70,"*"):PRINT 61220 INPUT"IF CORRECT TYPE <1> IF YOU WISH TO CHANGE TYPE <2>";W 61230 IF W = 1 THEN GOTO 500 ELSE GOTO 61000