10 ' PROGRAM NAME "GL1" 490 CLEAR 1500 500 INPUT "ENTER -Y TO MOUNT THE FILE";WY$ 510 IF WY$<>"Y" THEN 530 520 UNLOAD 1:MOUNT 1 530 DIM B$(100) ' MATRIX FOR TRANSACTIONS 535 DIM II(16) 540 R$="R":F=1:D=1:BK$=" ":ZER$=" " 550 GL$="LEDGER" 560 PRINT "ENTER GENERAL LEDGER TRANSACTIONS" 570 PRINT 610 PRINT "ENTER -1- FOR HEADERS & BAL FWDS" 620 PRINT "ENTER -2- FOR CHECK TRANSACTIONS" 630 PRINT "ENTER -3- FOR VOUCHER TRANSACTIONS" 640 INPUT TY$ 690 INPUT "ENTER -U- FOR UNBALANCED ENTRIES";U$ 700 IF TY$="3" THEN TY$="2":T$="V":GOTO 730 710 IF TY$="2" THEN T$="C":GOTO 730 720 IF TY$="1" THEN 730 ELSE 690 730 INPUT "ENTER TRANSACTION MO & YR AS - MOYR";GD$ 740 PRINT "100 ENTRIES MAX PER CHECK OR VOUCHER" 750 PRINT "ENTER -T- TO TOTAL TRANSACTIONS" 760 PRINT "ENTER -L- FOR LAST TRANSACTION" ' ALL TRANSACTIONS ENTERED 770 OPEN R$,F,GL$,D ' OPEN LEDGER FILE 780 A=2037 ' GET TABLE TO DETERMINE FILE START 790 GET #1,A 800 FOR II=1 TO 16 ' SEARCH(TABLE FOR CORRECT MONTH & YEAR 810 FIELD #1, (II-1)*8 AS D$, 8 AS D1$(II) 820 IF GD$=MID$(D1$(II),1,4) THEN 860 ' THIS IS CORRECT MONTH & YEAR 830 NEXT II 840 PRINT "NO FILE ADDRESS IN TABLE" 850 GOTO 850 860 REC$=MID$(D1$(II),5,4) ' LOAD FILE ADDRESS FROM TABLE 870 REC=VAL(REC$) 880 GET #1,REC ' GET FIRST RECORD 890 IF TY$="1" THEN 1970 ' IS IT A BALANCE FORWARD RECORD 900 ' 910 ' ****** SET UP TERMINAL HEADINGS FOR TERMINAL INPUT ****** 920 ' 930 T#=0 ' COUNTER FOR DEBITS & CREDITS 940 H1$=" TRANS ACCT C/V AMOUNT" 950 H2$=" MODYYR NUMB NUMB DESCRIPTION....-$$$.$$$.$$" 960 S1=0 ' RE-SET ERROR SWITCH 970 I=1 980 FOR I=1 TO 100' FILE ENTRIES - 100 - MAX 990 PRINT H1$ 1000 PRINT H2$ 1010 INPUT A$ ' DATA INPUT LINE 1020 ' 1030 '****** EDIT DATA ENTERED FOR ERRORS ****** 1040 ' 1050 IF MID$(A$,1,1)="T" THEN 1300 ' TO TOTAL CHECK OR VOUCHER 1060 IF MID$(A$,1,1)="L" THEN 1300 ' LAST ENTRY MADE 1070 IF MID$(A$,(LEN(A$)))="/" THEN 990 1080 IF MID$(A$,1,2)<"01" OR MID$(A$,1,2)>"13" THEN 1800 1090 IF MID$(A$,3,2)<"01" OR MID$(A$,3,2)>"31" THEN 1800 1100 IF MID$(A$,5,2)<"76" THEN 1800 1110 IF MID$(A$,7,1)>="1" THEN 1800 1120 IF MID$(A$,12,1)>="1" THEN 1800 1130 IF TY$="1" THEN 2030 1140 IF MID$(A$,17,1)>="1" THEN 1800 1150 IF MID$(A$,33,1)="-" THEN 1180 1160 IF MID$(A$,33,1)<"1" THEN 1180 1170 GOTO 1800 1180 IF MID$(A$,37,1)="." THEN 1210 1190 IF MID$(A$,37,1)<"1" THEN 1210 1200 GOTO 1800 1210 IF MID$(A$,41,1)<>"." THEN 1800 1220 ' 1230 '****** CHECK FOR HIGHEST POSSIBLE ACCOUNT NUMBER ****** 1240 ' 1250 IF MID$(A$,8,4)>"7904" OR MID$(A$,8,4)<"1000" THEN 1800 1260 ' 1270 IF LEN(A$)<>43 THEN 1800 1280 L=L+1 1290 LPRINT A$;SPC(5) USING "##";L ' PRINT OUT LINE NUMBER 1300 IF A$="T" OR A$="L" THEN 1910 1310 IF TY$="1" THEN 2190 1320 ' 1330 '****** LOAD MATRIX - CHECK AND VOUCHERS ****** 1340 ' 1350 B$(I)=MID$(A$,1,6)+MID$(A$,8,4)+T$+MID$(A$,13,4) 1360 B$(I)=B$(I)+MID$(A$,18,16)+ZER$+MID$(A$,34,3) 1370 B$(I)=B$(I)+MID$(A$,38,3)+MID$(A$,41,3)+TY$ 1380 C$=MID$(A$,33,4)+MID$(A$,38,3)+MID$(A$,41,3) 1390 TT#=VAL(C$) 1400 T#=T#+TT# 1410 IF S1=1 THEN 1450 ' CHECK ERROR SWITCH 1420 NEXT I 1430 PRINT "ERROR TO MANY TRANSACTIONS";CHR$(7);CHR$(7);CHR$(7);CHR$(7) 1440 GOTO 490 1450 PRINT SPC(32) USING "$#,###,###.##-";T# ' PRINT OUT TOTAL DEBITS & 1460 LPRINT SPC(30) USING "$#,###,###.##-";T# 1470 LPRINT 1480 L=0 1490 IF U$="U" THEN T#=0:GOTO 1660 1500 IF T#<.01# AND T#>-.01# THEN 1660' DR = CR GO TO PUT DISK 1510 ' 1520 '****** OPTIONAL LINE CORRECTION ROUTINE ****** 1530 '****** LINE PRINTER NECESSARY ****** 1540 ' 1550 PRINT "TO RE-START, GOTO RUN" 1560 INPUT "*** ERROR *** DR<>CR-ENTER ERROR LINE #";LN 1570 I=LN 1580 S1=1 ' TURN ERROR SWITCH ON 1590 E$=MID$(B$(I),31,11) 1600 TT#=VAL(E$) 1610 T#=T#-TT# 1620 GOTO 1010 1630 ' 1640 '****** PROCESS AND WRITE OUT THIS TRANSACTION ****** 1650 ' 1660 FOR I=1 TO 100 1670 T#=0 1680 IF B$(I)="T" THEN 890' END OF THIS TRANSACTION 1690 GOSUB 2270 1700 NEXT I 1710 GOTO 1430 1720 LSW=1 ' TURN LAST RECORD SWITCH ON 1730 GOSUB 2270 ' GO PROCESS LAST RECORD 1740 CLOSE 1 ' CLOSE LEDGER FILE 1750 PRINT "EOJ" ' PRINT END OF JOB MESSAGE 1760 LOAD "GLMENU",0,R 1770 ' 1780 ' ****** DATA ENTRY ERROR - RE-ENTER DATA ****** 1790 ' 1800 PRINT CHR$(7);CHR$(7);CHR$(7);CHR$(7);CHR$(7);CHR$(7) 1810 A$=ZZ$ ' CLEAR INPUT AREA TO BLANKS 1820 GOTO 990 1830 ' 1840 ' 1850 CLOSE 1 1860 UNLOAD 1 1870 PRINT "END OF DISK ERROR. THIS SHOULD NEVER OCCUR USING THIS" 1880 PRINT "PROGRAM. GL2 CHECKS TO MAKE SURE THERE IS ALWAYS ROOM" 1890 PRINT "FOR A ENTIRE MONTHS FILE." 1900 STOP 1910 IF A$="L" THEN 1720' LAST TRANSACTIONS TO PROCESS 1920 B$(I)=A$ 1930 GOTO 1450 1940 ' 1950 '****** SET UP TERMINAL LINE FOR ACCOUNT HEADER ****** 1960 ' 1970 H1$=" TRANS ACCT AMOUNT " 1980 H2$=" MODYYR NUMB ACCOUNT HEADER......-$.$$$.$$$.$$" 1990 GOTO 960 2000 ' 2010 '****** EDIT BALANCE FORWARD - ACCOUNT HEADER ENTRIES ****** 2020 ' 2030 IF MID$(A$,33,1)="-" THEN 2060 2040 IF MID$(A$,33,1)<"1" THEN 2060 2050 GOTO 1800 2060 IF MID$(A$,35,1)="." THEN 2090 2070 IF MID$(A$,35,1)<"1" THEN 2090 2080 GOTO 1800 2090 IF MID$(A$,39,1)="." THEN 2120 2100 IF MID$(A$,39,1)<"1" THEN 2120 2110 GOTO 1800 2120 IF MID$(A$,43,1)<>"." THEN 1800 2130 IF MID$(A$,8,4)>"7904" OR MID$(A$,8,4)<"1000" THEN 1800 2140 IF LEN(A$)<>45 THEN 1800 2150 GOTO 1280 2160 ' 2170 '****** LOAD MATRIX - BALANCE FORWARD-ACCOUNT HEADERS ****** 2180 ' 2190 B$(I)=MID$(A$,1,6)+MID$(A$,8,4)+MID$(A$,13,20) 2200 B$(I)=B$(I)+MID$(A$,33,2)+MID$(A$,36,3)+MID$(A$,40,6) 2210 B$(I)=B$(I)+TY$ 2220 C$=(MID$(A$,33,2))+(MID$(A$,36,3))+(MID$(A$,40,6)) 2230 GOTO 1390 2240 ' 2250 '****** LOAD DISK OUTPUT AREA ****** 2260 ' 2270 FOR M=1 TO 3 2280 FIELD #1, (M-1)*42 AS D$,42 AS D1$(M) 2330 IF WSW=1 AND MID$(B$(I),1,2)<>MID$(D1$(M),1,2) THEN 2410 2340 IF MID$(D1$(M),1,3)="EOF" THEN 2410 2350 IF MID$(D1$(M),1,3)<"001" THEN 2410 2360 NEXT M 2370 REC=REC+1 2380 IF REC=2027 THEN 1850 2390 GET #1,REC 2400 GOTO 2270 2410 IF LSW=1 THEN 2460 2420 WSW=1 2430 RSET D1$(M)=MID$(B$(I),1,42) 2440 PUT #1,REC 2450 RETURN 2460 LSET D1$(M)="EOF" 2470 GOTO 2440 2480 END