home *** CD-ROM | disk | FTP | other *** search
- rem This is the Income Statement Printer
-
- %INCLUDE ALL.BAS
- dim n(2,12),k$(2,10),h(9),s(9),t(4,9)
- RESTORE
- A(9)=0
- 1009 PRINT clear$:PRINT
- PRINT "DO YOU WANT AN ORDINARY OR A COMPARATIVE ";
- INPUT "INCOME STATEMENT (O OR C) ? ";U$
- IF UCASE$(U$)="C" THEN CHAIN "GCINCOME"
- PRINT CLEAR$
- 1010 PRINT "IS THIS INCOME STATEMENT TO BE FOR THE MONTH TO DATE,"
- 1011 PRINT "QUARTER TO DATE, OR YEAR TO DATE (M, Q, OR Y)?"
- 1015 INPUT line Z$
- 1017 IF ucase$(Z$)="M" THEN X=4:GOTO 1025
- 1020 IF ucase$(Z$)="Q" THEN X=5:GOTO 1025
- 1021 IF ucase$(Z$)="Y" THEN X=6:GOTO 1025
- 1023 GOTO 1010
- 1025 REM
- 1050 PRINT clear$:PRINT
- 1075 IF ucase$(U$)="C" THEN Q$="COMPARATIVE INCOME STATEMENT"
- 1076 IF ucase$(U$)="C" THEN GOTO 1100
- 1080 Q$="INCOME STATEMENT"
- 1100 REM GET DATES ROUTINE
- 3000 REM READ NAME FILE SUBROUTINE
- 3005 a5=t%(12)
- 3080 Z=24:Z9=1
- 3090 FOR Z0=1 TO 4
- 3100 K$(0,Z0)=MID$(N$,Z9,Z)
- 3110 Z9=Z9+Z
- 3120 NEXT Z0
- 3125 REM ROUTINE TO ELIMINATE TRAILING BLANKS
- l8=1
- 3130 FOR I=1 TO 4
- l9=len(k$(0,i))
- 3140 for z=l9 to l8 step -1
- 3150 IF MID$(K$(0,I),Z,1)<>" " THEN 3170
- 3160 NEXT Z
- 3170 Z$=""
- 3180 FOR Z0=1 TO Z
- 3190 Z$=Z$+MID$(K$(0,I),Z0,1)
- 3200 NEXT Z0
- 3210 K$(0,I)="":K$(0,I)=Z$
- 3220 NEXT I
- 4000 REM GET TOTAL SALES AND COST OF GOODS SOLD AS P1/P3 AND P2/P4
- 4001 REM GET TOTAL OPERATING EXPENSES AS P7/P8
- 4002 P1=0:P2=0:P3=0:P4=0:P5=0:P6=0:P7=0:P8=0
- 4005 open "b:glh" recl 150 as 1
- 4010 FOR Z=1 TO 30
- 4015 read #1,z;n(2,1),n(2,2),h$,h(0),h(1),h(2),h(3),h(4),h(5),h(6),h(7)
- 4020 IF LEFT$(H$,2)="HS" THEN 4030
- 4025 NEXT Z
- 4030 close 1
- 4035 open "b:gl" recl 138 as 1
- 4040 A(9)=A(9)+1
- 4045 read #1,a(9);N(2,1),N(2,2),K$,N(2,4),\
- N(2,5),N(2,6),N(2,7),N(2,8),N(2,9),N(2,10)
- 4070 IF N(2,2)=0 THEN 4100
- 4075 IF N(2,2)>=H(0) AND N(2,2)<=H(1) THEN P1=P1+N(2,X):P3=P3+N(2,X+3)
- 4080 IF N(2,2)>=A(15) AND N(2,2)<=A(16) THEN P2=P2+N(2,X):P4=P4+N(2,X+3)
- 4085 IF N(2,2)>A(16) THEN P7=P7+N(2,X):P8=P8+N(2,X+3)
- 4090 GOTO 4040
- 4100 IF P1<>0 THEN P1=P1*(-1)
- 4105 IF P1=0 THEN P1=999999999999
- 4110 IF P2=0 THEN P2=999999999999
- 4115 IF P3<>0 THEN P3=P3*(-1)
- 4120 IF P3=0 THEN P3=999999999999
- 4130 IF P4=0 THEN P4=999999999999
- 4140 IF P5=0 THEN P5=999999999999
- 4150 IF P6=0 THEN P6=999999999999
- 4160 IF P7=0 THEN P7=999999999999
- 4170 IF P8=0 THEN P8=999999999999
- 4990 A(9)=1
- 4995 close 1
- 6000 REM PRINT INCOME STATEMENT
- 6005 PRINT clear$:PRINT
- 6010 PRINT "PRINTING INCOME STATEMENT"
- 6015 FOR Z=0 TO 9
- 6020 H(Z)=0:S(Z)=0:T(0,Z)=0:T(1,Z)=0:T(2,Z)=0:T(3,Z)=0:A(Z)=0
- 6025 NEXT Z
- 6030 T1=0:T2=0:T3=0:T4=0
- 6100 lprinter:P9=0
- open "b:gl" recl 138 as 1
- open "b:glh" recl 150 as 2
- open "b:gls" recl 150 as 3
- 6200 GOSUB 9600
- 6250 GOSUB 10000
- 6255 IF N(2,2)=0 THEN 6400
- 6300 GOSUB 11000
- 6350 GOSUB 15000
- 6355 IF LEFT$(S$,2)<>"SS" AND LEFT$(S$,2)<>"SX" THEN 6980
- 6400 REM DO PARTIAL TOTALS OR TOTALS AND TEST
-
-
- 6403 IF N(2,2)=0 THEN GOSUB 14500
- 6404 IF N(2,2)=0 THEN FOR Z=1 TO 51-P9:print:NEXT Z:GOSUB 9800
- 6405 IF N(2,2)=0 THEN 20000
- 6410 GOSUB 13000
- IF S(1)=H(1) THEN GOSUB 12000
- 6415 IF S(1)=A(16) THEN GOSUB 14000
- 6980 IF P9>56 THEN GOSUB 9700
- 6985 IF S(1)< H(1) THEN 6300
- 6995 GOTO 6250
- 9600 REM PRINT PAGE HEADING SUBROUTINE
- 9605 P0=1
- 9610 print:P9=P9+1
- 9615 print:P9=P9+1
- 9616 print TAB((t%(1)-LEN(Q$))/2);Q$:P9=P9+1
- 9617 print:P9=P9+1
- 9620 FOR Z=2 TO 4
- 9625 print TAB((t%(1)-LEN(K$(0,Z)))/2);K$(0,Z):P9=P9+1
- 9630 NEXT Z
- 9635 print:P9=P9+1
- 9640 print TAB(t%(10));"FOR PERIOD ENDING ";D$(X);TAB(t%(11));"PAGE #";P0
- 9642 P9=P9+1
- 9645 print:P9=P9+1
- 9670 RETURN
- 9700 REM REPORT CONTINUED SUBROUTINE
- print
- print "report continues on next page"
- print
- 9720 print chr$(12):P9=0
- 9725 P0=P0+1
- GOSUB 9600
- 9740 RETURN
- 9800 REM END OF REPORT ROUTINE
- print
- print "end of report"
- print
- 9840 print chr$(12)
- 9850 RETURN
- 10000 REM GET HEADING LINE AND PRINT
- 10005 H(9)=H(9)+1
- read #2,h(9);n(2,1),n(2,2),h$,h(0),h(1),h(2),h(3),h(4),h(5),h(6),h(7)
- 10015 IF LEFT$(H$,2)<>"HS" AND LEFT$(H$,2)<>"HX" THEN 10995
- 10020 print:print:print TAB(t%(4));RIGHT$(H$,30):P9=P9+3
- 10995 RETURN
- 11000 REM GET SUBHEADING LINE AND PRINT
- 11005 S(9)=S(9)+1
- read #3,s(9);n(2,1),n(2,2),s$,s(0),s(1),s(2),s(3),s(4),s(5),s(6),s(7)
- 11012 IF LEFT$(S$,2)<>"SS" AND LEFT$(S$,2)<>"SX" THEN 11995
- 11015 print TAB(t%(5));RIGHT$(S$,30):P9=P9+1
- 11995 RETURN
- 12000 REM PRINT FINAL TOTAL LINE
- 12005 IF LEFT$(H$,2)<>"HS" AND LEFT$(H$,2)<>"HX" THEN 12995
- 12010 print:P9=P9+1
- 12015 GOSUB 32000
- 12020 print TAB(t%(8));"TOTAL "+MID$(H$,3,20);TAB(t%(9));:print using l$;t2;
- 12025 print TAB(t%(9)+20);:print using p$;p5:P9=P9+1
- print tab(t%(9));"-------------";tab(t%(9)+20);"-----":p9=p9+1
- 12030 IF ucase$(U$)<>"C" THEN 12990
- 12035 print TAB(t%(8));"PREVIOUS";TAB(t%(9));:print using l$;t4;
- 12040 print TAB(t%(9)+20);:print using p$;p6:P9=P9+1
- print tab(t%(9));"-------------";tab(t%(9)+20);"-----":p9=p9+1
- 12990 T1=0:T2=0:T3=0:T4=0
- 12995 RETURN
- 13000 REM PRINT SUBTOTAL LINE
- 13005 GOSUB 31000
- 13010 print TAB(t%(6));"TOTAL "+MID$(S$,3,20);TAB(t%(7));:print using l$;t1;
- 13015 print TAB(t%(7)+20);:print using p$;p5:T1=0:P9=P9+1
- 13020 IF ucase$(U$)<>"C" THEN 13995
- 13025 print TAB(t%(6));"PREVIOUS";TAB(t%(7));:print using l$;t3;
- 13030 print TAB(t%(7)+20);:print using p$;p6:T3=0:P9=P9+1
- 13995 RETURN
- 14000 REM PRINT GROSS PROFIT (LOSS) LINE
- 14005 print:P9=P9+1
- 14010 GOSUB 33000
- 14015 IF P1-(P2)<0 THEN 14035
- 14020 print TAB(t%(8));"GROSS PROFIT (LOSS)";TAB(t%(9));
- print using l$;p1-(p2);
- 14025 print TAB(t%(9)+20);:print using p$;p5:P9=P9+1
- 14030 GOTO 14045
- 14035 print TAB(t%(8));"GROSS PROFIT (LOSS)";TAB(t%(9)-1);"(";
- print using l$;p1-(p2);:PRINT ")";
- 14040 print TAB(t%(9)+19);"(";:print using p$;p5;:PRINT ")":P9=P9+1
- 14045 IF ucase$(U$)<>"C" THEN 14490
- 14050 IF P3-(P4)<0 THEN 14135
- 14120 print TAB(t%(8));"PREVIOUS";TAB(t%(9));:print using l$;p3-(p4);
- 14125 print TAB(t%(9)+20);:print using p$;p6:P9=P9+1
- 14130 GOTO 14490
- 14135 print TAB(t%(8));"PREVIOUS";TAB(t%(9)-1);"(";:print using l$;p3-(p4);
- PRINT ")";
- 14140 print TAB(t%(9)+19);"(";:print using p$;p6;:PRINT ")":P9=P9+1
- 14490 print TAB(t%(9));"=============";TAB(t%(9)+20);"=====":P9=P9+1
- 14495 RETURN
- 14500 REM PRINT NET PROFIT (LOSS) LINE
- 14505 print:P9=P9+1
- 14510 GOSUB 34000
- 14515 IF P1-(P2+P7)<0 THEN 14535
- 14520 print TAB(t%(8));"NET PROFIT (LOSS)";TAB(t%(9));
- print using l$;p1-(p2+p7);
- 14525 print TAB(t%(9)+20);:print using p$;p5:P9=P9+1
- 14530 GOTO 14545
- 14535 print TAB(t%(8));"NET PROFIT (LOSS)";TAB(t%(9)-1);
- 14540 print "(";:print using l$;p1-(p2+p7);
- print ")";TAB(t%(9)+20);:print using p$;p5:P9=P9+1
- 14545 IF ucase$(U$)<>"C" THEN 14990
- 14550 IF P3-(P4+P8)<0 THEN 14635
- 14620 print TAB(t%(8));"PREVIOUS";TAB(t%(9));:print using l$;p3-(p4+p8);
- 14625 print TAB(t%(9)+20);:print using p$;p6:P9=P9+1
- 14630 GOTO 14990
- 14635 print TAB(t%(8));"PREVIOUS";TAB(t%(9)-1);"(";
- print using l$;p3-(p4+p8);:PRINT ")";
- 14640 print TAB(t%(9)+19);"(";:print using p$;p6;:PRINT ")":P9=P9+1
- 14990 print TAB(t%(9));"*************";TAB(t%(9)+20);"*****":P9=P9+1
- 14995 RETURN
- 15000 REM GET ACCOUNTS IN SUBHEAD RANGE AND PRINT
- 15005 A(9)=A(9)+1
- 15006 IF P9>51 THEN GOSUB 9700
- read #1,a(9);n(2,1),n(2,2),k$(1,3),n(2,4),n(2,5),n(2,6),\
- n(2,7),n(2,8),n(2,9),n(2,10)
- 15105 IF N(2,2)=0 THEN 15995
- if n(2,x)=0 then 15990
- 15110 IF LEFT$(S$,2)<>"SS" AND LEFT$(S$,2)<>"SX" THEN 15990
- 15112 IF LEFT$(S$,2)="SS" THEN GOSUB 16000
- 15115 GOSUB 30000
- 15200 print TAB(t%(5)+2);K$(1,3);TAB(t%(5)+34);:print using l$;n(2,x);
- 15202 print TAB(t%(5)+54);:print using p$;p5:P9=P9+1
- 15205 T1=T1+N(2,X):T2=T2+N(2,X):T3=T3+N(2,(X+3)):T4=T4+N(2,(X+3))
- 15210 IF ucase$(U$)<>"C" THEN 15990
- 15215 print TAB(t%(5)+2);"PREVIOUS";TAB(t%(5)+34);:print using l$;n(2,(x+3));
- 15220 print TAB(t%(5)+54);:print using p$;p6:P9=P9+1
- 15990 IF N(2,2)< S(1) THEN 15005
- 15995 RETURN
- 16000 FOR Z=4 TO 10:N(2,Z)=N(2,Z)*(-1):NEXT Z
- 16995 RETURN
- 20000 REM ROUTINE TO CLOSE FILES AND RETURN TO MASTER1
- 20010 CLOSE 1
- 20015 CLOSE 2
- 20040 CLOSE 3
- 20045 CONSOLE
- 20050 CHAIN "master1"
- 30000 REM THESE ROUTINES CALCULATE PERCENTAGES AND ROUND TO ONE
- 30001 REM DECIMAL PLACE FOR INDIVIDUAL ACCOUNTS
- 30005 P5=0:P6=0
- 30010 P5=((N(2,X)/P1)*1000):P6=((N(2,X+3)/P3)*1000)
- 30015 Z=P5-INT(P5)
- 30020 IF Z<.5 THEN P5=P5/10
- 30025 IF Z>=.5 THEN P5=(P5+1)/10
- 30115 Z=P6-INT(P6)
- 30120 IF Z<.5 THEN P6=P6/10
- 30125 IF Z>=.5 THEN P6=(P6+1)/10
- 30995 RETURN
- 31000 REM THESE ROUTINES CALCULATE PERCENTAGES AND ROUND TO ONE
- 31001 REM DECIMAL PLACE FOR SUBTOTALS
- 31005 P5=0:P6=0
- 31010 P5=((T1/P1)*1000):P6=((T3/P3)*1000)
- 31015 Z=P5-INT(P5)
- 31020 IF Z<.5 THEN P5=P5/10
- 31025 IF Z>=.5 THEN P5=(P5+1)/10
- 31115 Z=P6-INT(P6)
- 31120 IF Z<.5 THEN P6=P6/10
- 31125 IF Z>=.5 THEN P6=(P6+1)/10
- 31995 RETURN
- 32000 REM THESE ROUTINES CALCULATE PERCENTAGES AND ROUND TO ONE
- 32001 REM DECIMAL PLACE FOR FINAL TOTALS
- 32005 P5=0:P6=0
- 32010 P5=((T2/P1)*1000):P6=((T4/P3)*1000)
- 32015 Z=P5-INT(P5)
- 32020 IF Z<.5 THEN P5=P5/10
- 32025 IF Z>=.5 THEN P5=(P5+1)/10
- 32115 Z=P6-INT(P6)
- 32120 IF Z<.5 THEN P6=P6/10
- 32125 IF Z>=.5 THEN P6=(P6+1)/10
- 32995 RETURN
- 33000 REM THESE ROUTINES CALCULATE PERCENTAGES AND ROUND TO ONE
- 33001 REM DECIMAL PLACE FOR GROSS PROFIT
- 33005 P5=0:P6=0
- 33010 P5=(((P1-P2)/P1)*1000):P6=(((P3-P4)/P3)*1000)
- 33015 Z=P5-INT(P5)
- 33020 IF Z<.5 THEN P5=P5/10
- 33025 IF Z>=.5 THEN P5=(P5+1)/10
- 33115 Z=P6-INT(P6)
- 33120 IF Z<.5 THEN P6=P6/10
- 33125 IF Z>=.5 THEN P6=(P6+1)/10
- 33995 RETURN
- 34000 REM THESE ROUTINES CALCULATE PERCENTAGES AND ROUND TO ONE
- 34001 REM DECIMAL PLACE FOR NET PROFIT
- 34005 P5=0:P6=0
- 34010 P5=(((P1-P2-P7)/P1)*1000):P6=(((P3-P4-P8)/P3)*1000)
- 34015 Z=P5-INT(P5)
- 34020 IF Z<.5 THEN P5=P5/10
- 34025 IF Z>=.5 THEN P5=(P5+1)/10
- 34115 Z=P6-INT(P6)
- 34120 IF Z<.5 THEN P6=P6/10
- 34125 IF Z>=.5 THEN P6=(P6+1)/10
- 34995 RETURN
-