home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
SIMTEL
/
CPMUG
/
CPMUG037.ARK
/
JRNL.BAS
< prev
next >
Wrap
BASIC Source File
|
1985-02-10
|
13KB
|
555 lines
REM INITIALIZE
R2=35
R1=0
C9=40: R9=35
E1=1: E2=30: X3=40: I1=31: I2=35: A1=C9+1:A2=C9+1:B1=C9+1
LIN$="--------------------------------------------------------"
B2=C9+1: X1=C9+1: X2=C9+1
DIM D(C9,R9), T$(C9)
REM CLEAR COLUMN NAMES TO BLANKS
FOR I=0 TO C9
T$(I)=" "
NEXT I
REM INSERT COLUMN NAMES HERE******************************
T$(1)="FOOD"
T$(2)="FUEL & OIL"
T$(3)="XPDBL SUP"
T$(4)="LIQUOR"
T$(5)="BEER"
T$(6)="SOFT DRKS"
T$(7)="BAR SUPL."
T$(8)="ICE"
T$(9)="DECOR."
T$(10)="ENG. MNT."
T$(11)="HULL MNT."
T$(12)="LIN & FRN"
T$(13)="ADM SLRY"
T$(14)="OP SLRY"
T$(15)="SUP SLRY"
T$(16)="RENT & UTL"
T$(17)="TRANSP."
T$(18)="ENTRTNMNT"
T$(19)="COMMISNS"
T$(20)="TAXES"
T$(21)="TRAVEL"
T$(22)="MISCLN"
T$(23)="ELECTRONIC"
T$(31)="GRP SALES"
T$(32)="VCHR SALES"
T$(33)="DIR SALES"
T$(34)="CATERING"
T$(35)="OTHER REV."
F$="EACLRTINPBSQ"
INPUT "FILE NAME"; JRN$
REM
REM
90 INPUT "READ OLD DATA FROM DISK? (Y OR N)";YN$
IF YN$="N" THEN 95
IF YN$<>"Y" THEN 90
PRINT "LOAD PROPER DISK IN DRIVE A."
INPUT "TYPE 'GO' WHEN READY";GO$
PRINT: PRINT "READING FILE"
FILE JRN$
READ #1; A1,A2,B1,B2,E1,E2,I1,I2,X1,X2,X3,R1,R2,R9,C9
FOR COL=1 TO C9
READ #1; T$(COL)
NEXT COL
FOR ID=1 TO C9
FOR JD=1 TO R9
READ #1;D(ID,JD)
NEXT JD
NEXT ID
CLOSE 1
PRINT: PRINT
95 INPUT "WANT TO SEE COMMAND LIST? (Y OR N)";YN$
IF YN$="N" THEN 543
IF YN$<>"Y" THEN 95
PRINT: PRINT
PRINT "E = ENTER. (ECCRR) ENTERS A VALUE IN COLUMN AND ROW SPECIFIED"
PRINT "A = ACCUMULATE. (ACCRR) ADDS VALUES ENTERED AND ENTERS SUM."
PRINT "C = CLEAR.***** CAUTION ****** CLEARS AN ENTIRE COLUMN"
PRINT " IF (CCC) OR A SINGLE ENTRY IF (CCCRR)"
PRINT "L = LIST. DISPLAYS AN ELEMENT IF (LCCRR) OR AN ENTIRE"
PRINT " COLUMN IF (LCC)"
PRINT "R = ROW. DISPLAYS ALL NON ZERO ITEMS IN THE ROW SPECIFIED."
PRINT " IF ROW NUMBER IS ENTERED (RRR)"
PRINT " IF NO ROW NUMBER, DISPLAYS ALL ROW TOTALS."
PRINT "T = TRIAL BALANCE. PRINTS TRIAL BALANCE REPORT."
PRINT "I = INCOME STATEMENT. PRINTS INCOME REPORT."
PRINT "N = NAME OF COLUMN. INPUTS NAME OF COLUMN"
PRINT "P = PARAMETERS. ALLOWS INPUT OF CHANGE IN PARAMETERS"
PRINT " SPECIFYING USE OF COLUMNS FOR SPECIAL FUNCTIONS"
PRINT " AN INPUT OF ZERO FOR A PARAMETER MEANS NO CHANGE"
PRINT "B = LIST ALL COLUMN NAMES"
PRINT "S = STOP. WRITES ALL DATA ON DISK AND RETURNS PROGRAM"
PRINT " CONTROL TO CP/M."
PRINT "NOTATION (CCRR) MEANS COLUMN AND ROW NUMBERS OF ITEMS"
PRINT "WHICH MUST ALWAYS BE TWO DIGITS. IE ONE IS 01, TWO 02 ETC."
PRINT "AN ENTRY OF ZERO RETURNS TO COMMAND MODE."
543 PRINT: INPUT "COMMAND (E,A,C,L,R,T,I,N,P,B OR S)";S$: PRINT
PRINT
K=LEN(S$)
FOR J=1 TO LEN(F$)
IF LEFT$(S$,1)=MID$(F$,J,1) THEN 5470
NEXT J
GOSUB 9910
GO TO 95
5470 ON J GOSUB 5730,5530,5930,6130,6530,7230,7430,5400\
,5405,5430,5490,9999
GO TO 543
5400 INPUT "COLUMN NUMBER"; COL
INPUT "COLUMN NAME"; CNAME$
T$(COL)=CNAME$
GO TO 543
5405 PRINT "CURRENT PARAMETERS"
PRINT: PRINT
PRINT C9;"COLUMNS, ";R9;"ROWS": PRINT
PRINT "ASSETS/LIABILITIES COL. ";A1;"TO ";A2
PRINT "BANK ACCT WITHDRAWALS COL. ";B1;"DEPOSITS COL. ";B2
PRINT "EXPENSES COL. ";E1;"TO ";E2
PRINT "INCOME COL. ";I1;"TO ";I2
PRINT "TRANSFER ID COL. ";X1;" TRANSFER AMOUNT COL. ";X2
PRINT "TRANSACTION ID COL. ";X3
PRINT "ASSETS BEGINNING BAL. ROW ";R1
PRINT "BUDGET AMOUNT ROW ";R2
PRINT
5410 INPUT "HOW MANY COLUMNS MAX.";COL
IF COL=0 THEN 5411
IF COL<0 OR COL>99 THEN 5410
C9=COL
5411 INPUT "HOW MANY ROWS MAX.";ROW
IF ROW=0 THEN 5412
IF ROW<0 OR ROW>99 THEN 5411
R9=ROW
5412 INPUT "LOWEST ASSET/LIABILITY COLUMN";COL
IF COL=0 THEN 5413
IF COL<0 OR COL>C9+1 THEN 5412
A1=COL
5413 INPUT "HIGHEST ASSET/LIABILITY COLUMN";COL
IF COL=0 THEN 5414
IF COL<A1 OR COL>C9+1 THEN 5413
A2 = COL
5414 INPUT "BANK ACCT WITHDRAWALS COLUMN";COL
IF COL=0 THEN 5415
IF COL<A1 OR COL>A2 THEN 5414
B1=COL
5415 INPUT "BANK ACCT DEPOSITS COLUMN";COL
IF COL=0 THEN 5416
IF COL<A1 OR COL>A2 THEN 5415
B2=COL
5416 INPUT "LOWEST EXPENSE COLUMN";COL
IF COL=0 THEN 5417
IF COL<0 OR COL>C9+1 THEN 5416
E1=COL
5417 INPUT "HIGHEST EXPENSE COLUMN";COL
IF COL=0 THEN 5418
IF COL<E1 OR COL > C9+1 THEN 5417
E2=COL
5418 INPUT "LOWEST INCOME COLUMN";COL
IF COL=0 THEN 5419
IF COL<0 OR COL>C9+1 THEN 5418
I1= COL
5419 INPUT "HIGHEST INCOME COLUMN";COL
IF COL=0 THEN 5420
IF COL<0 OR COL>C9+1 THEN 5419
I2=COL
5420 INPUT "TRANSFER ID COLUMN";COL
IF COL=0 THEN 5421
IF COL<0 OR COL>C9+1 THEN 5420
X1=COL
5421 INPUT "TRANSFER AMOUNT COLUMN";COL
IF COL=0 THEN 5422
IF COL<0 OR COL>C9+1 THEN 5421
X2=COL
5422 INPUT "TRANSACTION ID COLUMN";COL
IF COL=0 THEN 5423
IF COL<0 OR COL>C9+1 THEN 5422
X3=COL
5423 INPUT "ASSET ACCT BEGINNING BALANCE ROW";ROW
IF ROW=0 THEN 5424
IF ROW<0 OR ROW>R9+1 THEN 5423
R1=ROW
5424 INPUT "BUDGET AMOUNT ROW";ROW
IF ROW=0 THEN 5425
IF ROW<0 OR ROW>R9+1 THEN 5424
R2=ROW
5425 GO TO 543
5430 FOR COL=1 TO C9
PRINT COL, T$(COL)
NEXT COL
GO TO 543
5490 PRINT "WRITING FILE"
FILE JRN$
PRINT #1;A1,A2,B1,B2,E1,E2,I1,I2,X1,X2,X3,R1,R2,R9,C9
FOR COL=1 TO C9
PRINT #1; T$(COL)
NEXT COL
FOR ID=1 TO C9
FOR JD=1 TO R9
PRINT #1;D(ID,JD)
NEXT JD
NEXT ID
CLOSE 1
PRINT "FINISHED"
STOP
REM
REM ********ACCUMULATE IN SPECIFIED COLUMN/ROW ELEMENT********
REM
5530 GOSUB 9730
IF C<0 THEN 5690
IF C=X1 OR C=X3 THEN 9950
GOSUB 9830
IF R<0 THEN 5690
IF R NE R1 OR A2>C9 OR A1>A2 THEN 5610
IF C<A1 OR C>A2 THEN 9970
5610 PRINT "COL.";C;"ROW";R;"ACCUMULATE";
INPUT T
IF T=0 THEN 5640
D(C,R)=D(C,R)+T
GOTO 5610
5640 T=D(C,R): T=INT(ABS(T)*100+.5)/100
IF D(C,R)<0 THEN T=-(T)
D(C,R)=T
5690 RETURN
REM
REM ENTER IN CONSECUTIVE ROWS OF SPECIFIED COLUMN
REM
5730 GOSUB 9730
IF C<0 THEN 5890
GOSUB 9830
IF R<0 THEN 5890
IF R<>R1 OR A2>C9 OR A1>A2 THEN 5760
IF C<A1 OR C>A2 THEN 9970
5760 PRINT T$(C)
5770 PRINT "COL.";C;"ROW";R;"ENTRY";
INPUT T
IF T=0 THEN 5890
IF C NE X1 AND C NE X3 THEN 5830
D(C,R)=INT(ABS(T))
GOTO 5840
5830 D(C,R)=INT(ABS(T)*100+.5)/100
5840 IF T<0 THEN D(C,R)=-(D(C,R))
5850 R=R+1
IF R>R9 THEN 5890
IF R NE R1 OR A2>C9 OR A1>A2 THEN 5770
IF C<A1 OR C>A2 THEN 5850
GOTO 5770
5890 RETURN
REM
REM SET SPECIFIED ELEMENT OR COLUMN TO ZERO
REM
5930 GOSUB 9730
IF C<0 THEN 6090
IF K=3 THEN 6010
GOSUB 9830
IF R<0 THEN 6090
PRINT "CLEAR COL. ";C;" ROW ";R;" (Y OR N)";
INPUT YN$
IF YN$<>"Y" THEN 6090
D(C,R)=0
GOTO 6090
6010 PRINT "CLEAR ALL OF COL. ";C;" (Y OR N)";
INPUT YN$
IF YN$<>"Y" THEN 6090
FOR R=0 TO R9
IF R=R1 OR R=R2 THEN 6040
D(C,R)=0
6040 NEXT R
6090 RETURN
REM
REM COLUMN LIST ROUTINES
REM
6130 GOSUB 9730
IF C<0 THEN 6490
IF K=3 THEN 6230
GOSUB 9830
IF R<0 THEN 6490
REM
REM LIST SPECIFIED COLUMN/ROW ELEMENT
REM
V=D(C,R): L=15: M=2
IF C=X1 OR C=X3 THEN M=0
6180 GOSUB 9030
PRINT
GOTO 6490
REM
REM LIST ALL NON ZERO ELEMENTS IN COLUMN
REM
6230 PRINT "COL.#--ROW #--XFR ID--TXN ID----$ AMOUNT ";T$(C)
T=0
FOR R=0 TO R9
IF D(C,R)=0 OR R=R1 THEN 6390
V=C: L=5: M=0
GOSUB 9030
V=R: L=7
GOSUB 9030
IF X1>C9 THEN 6310
V=D(X1,R)
IF V>0 THEN L=9: GOSUB 9030
6310 IF X3>C9 THEN 6350
V=D(X3,R)
IF V>0 THEN L=7: PRINT TAB(22);: GOSUB 9030
6350 IF C=X1 OR C=X3 THEN PRINT: GOTO 6390
6360 PRINT TAB(30);
V=D(C,R): L=11: M=2
GOSUB 9030
PRINT
T=T+D(C,R)
6390 NEXT R
IF C=X1 OR C=X3 THEN 6490
PRINT TAB(16);"COLUMN TOTAL";TAB(30);
V=T: L=11: M=2
GOSUB 9030
PRINT
6490 RETURN
REM
REM ROW LIST ROUTINES
REM
6530 IF K=1 THEN 6840
IF K NE 3 THEN 9920
H$=S$: S$=LEFT$(H$,1)+" "+RIGHT$(H$,2)
K=LEN(S$)
GOSUB 9830
IF R<0 THEN 7190
REM
REM LIST ALL NON ZERO ELEMENTS IN ROW
REM
REM EXCEPTING XFR ID AND TXN ID
REM
PRINT "COL.#--ROW #----$ AMOUNT----COL. NAME"
T=0
FOR C=0 TO C9
IF D(C,R)=0 OR C=X1 OR C=X3 THEN 6750
V=C: L=5: M=0
GOSUB 9030
V=R: L=7
GOSUB 9030
V=D(C,R): L=13: M=2
GOSUB 9030
PRINT TAB(29);T$(C)
IF C>=I1 OR C=B1 THEN T=T+D(C,R) ELSE T=T-D(C,R)
6750 NEXT C
PRINT LEFT$(LIN$,28)
PRINT "ROW BALANCE";
V=T: L=12: M=2
GOSUB 9030
PRINT
GOTO 7190
REM
REM
REM LIST TOTALS OF ALL ROWS WITH NON ZERO ELEMENTS
REM
REM ALSO LISTS CHECKING ACCOUNT RUNNING BALANCE
REM
REM
6840 PRINT "ROW #--XFR ID--TXN ID--ROW TOTALS---CH ACC BAL"
IF R1>R9 OR B1>C9 OR B2>C9 THEN 6910
V=R1: L=5: M=0
GOSUB 9030
T4=D(B2,R1)
V=T4: L=42: M=2
GOSUB 9030
PRINT
6910 T5=0
FOR R=0 TO R9
IF R=R1 THEN 7140
N=0: T=0
FOR C=0 TO C9
IF D(C,R)=0 OR C=X1 OR C=X3 THEN 7010
IF C>=I1 AND C<=I2 OR C=B1 THEN T=T+D(C,R) ELSE T=T-D(C,R)
N=N+1
7010 NEXT C
IF N=0 THEN 7140
V=R: L=5: M=0
GOSUB 9030
IF X1>C9 THEN 7050
V=D(X1,R)
IF V>0 THEN L=9: GOSUB 9030
7050 IF X3>C9 THEN 7070
V=D(X3,R)
IF V>0 THEN L=7: PRINT TAB(15);: GOSUB 9030
7070 PRINT TAB(23);
V=T: L=1: M=2
GOSUB 9030
T5=T5+T
IF R1>R9 OR B1>C9 OR B2>C9 OR R=R2 THEN 7130
IF D(B1,R)=0 AND D(B2,R)=0 THEN 7130
T4=T4-D(B1,R)+D(B2,R)
V=T4: L=13
GOSUB 9030
7130 PRINT
7140 NEXT R
PRINT TAB(7);"TOTAL ALL ROWS";
V=T5: L=16: M=2
GOSUB 9030
PRINT
7190 RETURN
REM
REM DISPLAY TRIAL BALANCE
REM
7230 PRINT "COL.#---NAME---------ACCT BAL.";
PRINT "------BUDGET---COL. TOTALS"
C1=0: C2=C9
GOSUB 8640
PRINT LIN$
PRINT "*****GRAND TOTALS";
P1=T1: P2=T2: P3=T3
GOSUB 8910
RETURN
REM
REM
REM DISPLAY INCOME STATEMENT
REM
7430 PRINT"COL.#---NAME-----------AMOUNT-";
PRINT "------BUDGET-----VARIANCE-"
IF I2>C9 OR I1>I2 THEN T1=0: T2=0: T3=0: GOTO 7470
7460 C1=I1: C2=I2: GOSUB 8640
PRINT LIN$
7470 PRINT "*****TOTAL INCOME";
P1=T1: P2=T2: P3=T3
GOSUB 8910
PRINT
G1=T1: G2=T2: G3=T3
IF E2>C9 OR E1>E2 THEN T1=0: T2=0: T3=0: GOTO 7530
7520 C1=E1: C2=E2: GOSUB 8640
PRINT LIN$
7530 PRINT "***TOTAL EXPENSES";
P1=T1: P2=T2: P3=T3: GOSUB 8910
PRINT
G1=G1-T1: G2=G2-T2: G3=G3-T3
PRINT "**SURPLUS/DEFICIT";
P1=G1: P2=G2: P3=G3: GOSUB 8910
PRINT
IF X2>C9 THEN 7710
C1=X2: C2=X2: GOSUB 8640
G1=G1+T1: G2=G2+T2: G3=G3+T3
7710 PRINT"****NET CASH FLOW";
P1=G1: P2=G2: P3=G3: GOSUB 8910
PRINT
IF A2>C9 OR A1>A2 THEN 8090
T6=0
IF R1>R9 THEN 7910
FOR C=A1 TO A2
T6=T6+D(C,R)
NEXT C
7910 T7=0
FOR C=A1 TO A2
N=0: T=0
FOR R=0 TO R9
IF D(C,R)=0 THEN 7960
IF R=R2 OR R=R1 THEN 7960
N=N+1
T=T+D(C,R)
7960 NEXT R
IF N>0 THEN T7=T7+T
7990 NEXT C
T8=T7+T6
PRINT "NET CASH BALANCE (ENDING)";
V=T8: L=13: M=2
GOSUB 9030: PRINT
PRINT "NET CASH BALA╬CE (BEGIN.)";
V=T6: GOSUB 9030
PRINT " NET CASH FLOW";
V=T7: GOSUB 9030: PRINT
8090 RETURN
REM
REM OUTPUT ROUTINES FOR TRIAL BALANCE OR INCOME STMT.
REM
8640 T1=0: T2=0: T3=0
FOR C=C1 TO C2
IF C=X1 OR C=X3 THEN 8810
N=0: T=0
FOR R=0 TO R9
IF D(C,R)=0 OR R=R1 THEN 8710
N=N+1
IF R<>R2 THEN T=T+D(C,R)
8710 NEXT R
IF N=0 THEN 8810
P1=T: T1=T1+P1
IF R2>R9 THEN 8780
P2=D(C,R2)
T2=T2+P2: P3=P1-P2: T3=T3+P3
8780 V=C: L=5: M=0: GOSUB 9030
PRINT TAB(7); T$(C);
GOSUB 8910
8810 NEXT C
RETURN
8910 PRINT TAB(19);
V=P1: L=11: M=2: GOSUB 9030
IF R2>R9 THEN 8990
V=P2: L=13: GOSUB 9030
V=P3: L=13: GOSUB 9030
8990 PRINT
RETURN
REM
REM FORMATTED PRINT ROUTINE
REM
REM
9030 IF M<>0 AND M<>2 THEN M=0
9040 L=INT(ABS(L))
IF L<2 OR L>72 THEN L=14
9050 V1=INT(ABS(V))
IF M=0 THEN V2=0: GOTO 9080
9060 V2=INT((ABS(V)-V1)*100+.5)
IF V2>100 THEN V2=0: V1=V1+1
9080 IF V1=0 AND M>0 THEN V1$="": GOTO 9210
9110 V9$=STR$(V1)
IF V1<1000 OR M=0 THEN 9150
IF V1<1E06 THEN 9140
V$=STR$(V)
GOTO 9350
9140 V1$=LEFT$(V9$,LEN(V9$)-4)
V1$=V1$+","+MID$(V9$,LEN(V9$)-3,3)
GOTO 9210
9150 IF M=0 THEN V1$=LEFT$(V9$,LEN(V9$)): GOTO 9210
V1$=LEFT$(V9$,LEN(V9$)-1)
9210 IF M=0 THEN V2$="": GOTO 9310
9230 V9$=STR$(V2)
IF LEN(V9$)<>3 THEN 9250
9240 V2$="."+V9$
GOTO 9310
9250 IF LEN(V9$)=2 THEN V2$=".0"+V9$
IF LEN(V9$)<>1 AND LEN(V9$)<>2 THEN PRINT "BAD .XX":STOP
9310 V9$=" "
IF V<=-.005 THEN V9$="-"
9320 V$=V9$+V1$+V2$
9350 L9=LEN(V$)
IF M=2 THEN L9=L9-1
9360 IF L>L9 THEN PRINT " ";: L9=L9+1: GOTO 9360
9380 PRINT MID$(V$,1,LEN(V$)-1);
RETURN
REM
REM
REM CHECK FOR VALID COLUMN #
REM
9730 IF K<3 THEN C=-1: GOTO 9920
9740 S2$=MID$(S$,2,1)
IF S2$<"0" OR S2$>"9" THEN C=-1: GOTO 9930
9750 S3$=MID$(S$,3,1)
IF S3$<"0" OR S3$>"9" THEN C=-1: GOTO 9930
9760 C=VAL(MID$(S$,2,2))
IF C<=C9 THEN 9990
C=-(1)
GOTO 9940
REM
REM CHECK FOR VALID ROW
REM
9830 IF K<>5 THEN R=-1: GOTO 9920
9840 S4$=MID$(S$,4,1)
IF S4$<"0" OR S4$>"9" THEN R=-1: GOTO 9930
9850 S5$=MID$(S$,5,1)
IF S5$<"0" OR S5$>"9" THEN R=-1: GOTO 9930
9860 R=VAL(MID$(S$,4,2))
IF R<=R9 THEN 9990
R=-1
GOTO 9960
9910 PRINT "INVALID COMMAND FUNCTION": GOTO 9990
9920 PRINT "WRONG # OF CHARACTERS TYPED": GOTO 9990
9930 PRINT "NON-NUMERIC ROW OR COLUMN #": GOTO 9990
9940 PRINT "COLUMN NUMBER OUT OF RANGE": GOTO 9990
9950 PRINT "ILLEGAL COLUMN FOR THIS FUNCTION": GOTO 9990
9960 PRINT "ROW NUMBER OUT OF RANGE": GOTO 9990
9970 PRINT "ILLEGAL ROW FOR THIS FUNCTION": GOTO 9990
9990 RETURN
9999 END
4D3Ä4}4D3#û4à4E3₧4Ä4F3º4û4F3#»4₧4G3╕4º4G3#└4»4A3╔4╕4A3#╤4└4B3┘4╔4C4Γ4╤4C4#Ω4┘4D4≤4Γ4D4#√4Ω4E45≤4