rem This is the General Ledger Entry Program %INCLUDE ALL.BAS RESTORE 505 z5$="b:gl" 506 z6$="b:glback" z7$="b:glsize" 515 repeat$="------------------------------" 516 fill$=" " 520 dim n(2,20),k$(6,20) for z=1 to 80:delim$=delim$+"*":next z for z=1 to 80:delim1$=delim1$+"=":next z 540 K$(6,1)="1 - NEW ENTRY":K$(6,2)="2 - EXAMINE EXISTING ENTRY" 550 K$(6,3)="3 - MODIFY EXISTING ENTRY" 560 K$(6,4)="4 - DELETE EXISTING ENTRY" 570 K$(6,5)="5 - CREATE NEW FILE":K$(6,6)="6 - CLEAR EXISTING FILE" 580 K$(6,7)="7 - BACK-UP AND SORT FILE":K$(6,8)="8 - LIST FILE" 590 K$(6,9)="9 - FINISHED" 1000 rem THIS IS THE GENERAL LEDGER ENTRY PROGRAM 1005 PRINT clear$:PRINT 1075 K$(1,1)="TAG":K$(1,2)="LEDGER ACCOUNT NUMBER":K$(1,3)="DESCRIPTION" 1080 K$(1,4)="MONTH TO DATE AMOUNT":K$(1,5)="QUARTER TO DATE AMOUNT" 1085 K$(1,6)="YEAR TO DATE AMOUNT":K$(1,7)="PREV MONTH TO DATE AMOUNT" 1090 K$(1,8)="PREV QUARTER TO DATE AMOUNT" 1095 K$(1,9)="PREV YEAR TO DATE AMOUNT" 1100 K$(1,10)="BUDGETED AMOUNT" 1105 K$(2,1)="1 - TAG":K$(2,2)="2 - LEDGER ACCOUNT NUMBER" 1106 K$(2,3)="3 - DESCRIPTION" 1110 K$(2,4)="4 - MONTH TO DATE AMOUNT":K$(2,5)="5 - QUARTER TO DATE AMOUNT" 1115 K$(2,6)="6 - YEAR TO DATE AMOUNT":K$(2,7)="7 - PREV MONTH TO DATE AMT" 1120 K$(2,8)="8 - PREV QUARTER TO DATE AMT" 1125 K$(2,9)="9 - PREV YEAR TO DATE AMT" 1130 K$(2,10)="10 - BUDGETED AMOUNT":K$(2,11)="11 - NONE" 1135 N(1,1)=4:N(1,2)=10:N(1,3)=30:N(1,4)=12:N(1,5)=12:N(1,6)=12 1140 N(1,7)=12:N(1,8)=12:N(1,9)=12:N(1,10)=12 print clear$:print 1500 if end #1 then 6000 if end #2 then 30000 open z5$ recl 138 as 1 close 1 open z7$ as 2 read #2;z2,z3 close 2 1600 REM 1620 PRINT CLEAR$ if z2>z3 then print "*** OUT OF RECORD SPACE ***" PRINT "GENERAL LEDGER ENTRY PROGRAM" PRINT "----------------------------" PRINT:PRINT "THERE ARE ";Z3;" AVAILABLE RECORDS" PRINT "OF THESE THERE ARE:";TAB(30);(Z3-Z2)+1;" RECORDS OPEN" PRINT ;TAB(30);Z2-1;" RECORDS USED" PRINT 1650 PRINT "THIS IS A LIST OF OPERATIONS." 1655 PRINT 1660 FOR Z=1 TO 9:PRINT K$(6,Z):NEXT Z:PRINT 1665 PRINT "INDICATE WHAT YOU WOULD LIKE TO DO BY TYPING" 1670 PRINT "THE CORRESPONDING NUMBER." 1675 PRINT 1680 INPUT Z IF Z<1 OR Z>9 then 1620 1682 IF Z=1 THEN new$="N" 1685 ON Z GOSUB 2000,3000,4000,5000,6000,7000,8000,9000,10000 1690 FOR Z=1 TO 20:N(2,Z)=0:NEXT Z:n$="" 1700 FOR Z=1 TO 20:k$(3,z)="":NEXT Z 1702 new$="" 1705 GOTO 1600 2000 IF Z2>Z3 THEN RETURN 2001 PRINT CLEAR$:PRINT 2005 PRINT "RECORD NUMBER";Z2:PRINT 2015 FOR Z=1 TO 2 PRINT CUR$ 2020 PRINT TAB(30);left$(repeat$,n(1,z)) PRINT UP$; 2025 PRINT K$(1,Z);TAB(30); 2030 INPUT N(2,Z):PRINT chr$(13) PRINT CLEAR$ 2035 NEXT Z 2040 Z=3 PRINT CUR$ 2045 PRINT TAB(30);left$(repeat$,n(1,z)) PRINT UP$; 2050 PRINT K$(1,Z);TAB(30); 2055 INPUT line K$(3,Z):PRINT chr$(13) if len(k$(3,z))>n(1,z) then k$(3,z)=left$(k$(3,z),n(1,z)) 2060 I=(N(1,Z)-LEN(K$(3,Z))):K$(3,Z)=K$(3,Z)+left$(fill$,i) 2090 N$="" 2095 N$=K$(3,3) 2100 Z1=Z2 2105 PRINT clear$; 2110 PRINT "RECORD NUMBER";Z1:PRINT 2115 FOR Z=1 TO 2 2120 PRINT K$(2,Z);TAB(30);N(2,Z) 2125 NEXT Z 2135 PRINT K$(2,3);TAB(30);K$(3,3) 2140 FOR Z=4 TO 10 2141 PRINT K$(2,Z);TAB(30);:print using "##,###,###.##";n(2,z) 2142 NEXT Z print k$(2,11) 2145 PRINT 2150 PRINT "IF AN ITEM IS TO BE CHANGED, TYPE THE APPROPRIATE NUMBER." 2155 PRINT:INPUT Z 2160 PRINT 2165 IF Z>10 THEN 2216 2170 IF Z<1 THEN 2105 2175 IF Z=3 THEN 2200 2180 PRINT TAB(30);left$(repeat$,n(1,z)) PRINT UP$; 2185 PRINT K$(1,Z);TAB(30); 2190 INPUT N(2,Z) 2195 GOTO 2225 2200 PRINT TAB(30);left$(repeat$,n(1,z)) PRINT UP$; 2205 PRINT K$(1,Z);TAB(30); 2210 INPUT line K$(3,Z) if len(k$(3,z))>n(1,z) then k$(3,z)=left$(k$(3,z),n(1,z)) 2215 I=(N(1,Z)-LEN(K$(3,Z))):K$(3,Z)=K$(3,Z)+left$(fill$,i) 2216 N$="" 2220 N$=K$(3,3) 2225 INPUT "ANY MORE CHANGES";line temp$ 2230 if left$(temp$,1)="y" or left$(temp$,1)="Y" then 2105 2235 PRINT 2240 INPUT "IS RECORD TO BE ENTERED";line temp$ 2245 PRINT 2250 if left$(temp$,1)="y" or left$(temp$,1)="Y" then 2280 2255 if left$(temp$,1)<>"n" and left$(temp$,1)<>"N" then 2235 2260 PRINT clear$:PRINT 2270 PRINT "*** RECORD NOT ENTERED ***":PRINT:PRINT 2275 FOR Z=1 TO 200:NEXT Z:RETURN 2280 open z5$ recl 138 as 1 print #1,z1;n(2,1),n(2,2),n$,n(2,4),n(2,5),n(2,6),n(2,7),\ n(2,8),n(2,9),n(2,10) close 1 2295 IF new$="N" THEN Z2=Z2+1:open z7$ as 1:print #1;z2,z3:close 1 2300 RETURN 3000 PRINT clear$:PRINT 3005 INPUT "RECORD NUMBER";Z1 3010 IF Z1>=Z2 THEN 3000 3012 IF Z1<1 THEN RETURN open z5$ recl 138 as 1 read #1,z1;n(2,1),n(2,2),n$,n(2,4),n(2,5),n(2,6),n(2,7),\ n(2,8),n(2,9),n(2,10) close 1 3030 PRINT 3035 FOR Z=1 TO 2 3040 PRINT K$(1,Z);TAB(30);N(2,Z) 3045 NEXT Z 3055 PRINT K$(1,3);TAB(30);N$ 3060 FOR Z=4 TO 10 3062 PRINT K$(1,Z);TAB(30);:print using "##,###,###.##";n(2,z) 3065 NEXT Z 3070 PRINT 3075 PRINT "FOR A NEW RECORD NUMBER, TYPE N - RETURN.":PRINT 3080 PRINT "IF FINISHED, TYPE F - RETURN.":PRINT 3085 input line temp$ 3090 if left$(temp$,1)="n" or left$(temp$,1)="N" then 3000 3095 RETURN 4000 PRINT clear$:PRINT 4005 N$="" 4010 INPUT "RECORD NUMBER";Z1 4015 IF Z1<1 THEN PRINT "*** NO SUCH RECORD ***":GOTO 1620 4020 IF Z1>Z3 THEN PRINT "*** OUT OF RANGE ***":GOTO 1620 4025 IF Z1>=Z2 THEN PRINT "NO RECORD NUMBER";Z1:GOTO 1620 open z5$ recl 138 as 1 read #1,z1;n(2,1),n(2,2),n$,n(2,4),n(2,5),n(2,6),n(2,7),\ n(2,8),n(2,9),n(2,10) close 1 4045 IF N(2,1)=0 THEN PRINT "*** DELETED RECORD ***":GOTO 1620 4060 K$(3,3)=N$ 4075 GOTO 2105 5000 PRINT clear$:PRINT 5010 INPUT "RECORD NUMBER";Z1 5015 IF Z1<1 THEN PRINT "*** NO SUCH RECORD ***":GOTO 1620 5020 IF Z1>Z3 THEN PRINT "*** OUT OF RANGE ***":GOTO 1620 5025 IF Z1>=Z2 THEN PRINT "NO RECORD NUMBER";Z1:GOTO 1620 open z5$ recl 138 as 1 read #1,z1;n(2,1),n(2,2),n$,n(2,4),n(2,5),n(2,6),n(2,7),\ n(2,8),n(2,9),n(2,10) close 1 5045 PRINT "RECORD NUMBER";Z1 5050 PRINT 5055 FOR Z=1 TO 2 5060 PRINT K$(1,Z);TAB(30);N(2,Z) 5065 NEXT Z 5070 Z=3 5075 PRINT K$(1,Z);TAB(30);N$ 5080 FOR Z=4 TO 10 5085 PRINT K$(1,Z);TAB(30);:print using "##,###,###.##";n(2,z) 5090 NEXT Z 5095 PRINT 5100 INPUT "IS RECORD TO BE DELETED (MUST BE YES TO DELETE)";line temp$ 5105 if left$(temp$,1)="n" or left$(temp$,1)="N" then return 5110 if left$(temp$,1)<>"y" and left$(temp$,1)<>"Y" then 5095 5115 N(2,1)=0 open z5$ recl 138 as 1 print #1,z1;n(2,1),n(2,2),n$,n(2,4),n(2,5),n(2,6),n(2,7),\ n(2,8),n(2,9),n(2,10) close 1 5135 RETURN 6000 PRINT clear$:PRINT 6005 PRINT "IF YOU HAVE ARRIVED HERE, AND HAVE A GENERAL LEDGER FILE" 6010 PRINT "ALREADY ON A DISK, YOU SHOULD INSTALL THAT DISK THEN" 6015 PRINT "TYPE THE letter c FOLLOWED BY A RETURN TO CONTINUE." 6020 PRINT 6025 PRINT "IF YOU WISH TO CREATE A NEW FILE, TYPE THE letter n" 6030 PRINT "FOLLOWED BY RETURN.":PRINT 6035 INPUT line temp$ 6040 IF temp$="c" OR temp$="C" THEN INITIALIZE:GOTO 1500 6045 PRINT clear$:PRINT 6050 INPUT "NUMBER OF RECORDS DESIRED";Z3 6055 PRINT 6060 for z=1 to 20:n(2,z)=0: next z N$="" for z=1 to 30:n$=n$+" ":next z create z5$ recl 138 as 1 6070 for z1=1 to z3+2 print #1,z1;n(2,1),n(2,2),n$,n(2,4),n(2,5),n(2,6),\ n(2,7),n(2,8),n(2,9),n(2,10) next z1 close 1 6095 PRINT clear$:PRINT 6100 PRINT "GENERAL LEDGER FILE CREATED AND CLEARED.":PRINT 6105 print z3;" RECORDS CREATED":print 6110 input "TO CONTINUE, TYPE RETURN ";line temp$ Z2=1 create z7$ as 1:print #1;Z2,Z3:close 1 6115 GOTO 1500 7000 input "ARE YOU SURE !!! (yes or no) ";line temp$ 7007 if temp$<>"yes" AND temp$<>"YES" then return for z=1 to 20:n(2,z)=0:next z N$="" for z=1 to 30:n$=n$+" ":next z open z5$ recl 138 as 1 for z1=1 to z3+2 print #1,z1;n(2,1),n(2,2),n$,n(2,4),n(2,5),n(2,6),\ n(2,7),n(2,8),n(2,9),n(2,10) next z1 close 1 7035 PRINT clear$:PRINT 7040 PRINT "GENERAL LEDGER FILE CLEARED!":PRINT 7045 input "TO CONTINUE, TYPE RETURN ";line temp$ Z2=1 open z7$ as 1:print #1;Z2,Z3:close 1 7060 RETURN 8000 CHAIN "GLSORT" 9000 PRINT clear$:PRINT:PRINT "LISTING" 9010 P1=1:P2=1:P3=16 9020 lprinter 9030 open z5$ recl 138 as 1 9040 FOR Z0=1 TO (Z2/16)+1 9050 GOSUB 9500 9060 GOSUB 9100 9065 IF N(2,2)=0 THEN GOSUB 9800:RETURN 9070 GOSUB 9300 9080 NEXT Z0 9085 print chr$(12) 9090 RETURN 9100 FOR Z1=P2 TO P3 9110 read #1,z1;n(2,1),n(2,2),n$,n(2,4),n(2,5),n(2,6),\ n(2,7),n(2,8),n(2,9),n(2,10) 9115 IF N(2,2)=0 THEN RETURN 9120 print 9130 print Z1;TAB(8);N(2,1);TAB(14);N(2,2); 9140 print using "##,###,###.##";tab(35);n(2,4);tab(50);n(2,5);tab(65);n(2,6) print n$; 9150 print using "##,###,###.##";tab(35);n(2,7);tab(50);n(2,8);tab(65);n(2,9) 9160 NEXT Z1 9165 P2=P2+16:P3=P3+16 9170 RETURN 9300 print 9310 print 9320 print "report continues on next page" 9330 print 9340 print chr$(12) 9350 RETURN 9500 print delim$ 9510 print print "Rec #";tab(8);"Tag";tab(14);"Acct No.";tab(35); print "Month to Date";tab(50);"Quart to Date";tab(65);"Year to Date" print "Description";tab(35);"Previous MTD";tab(50);"Previous QTD"; print tab(65);"Previous YTD" 9570 print TAB(66);"PAGE NUMBER ";P1:P1=P1+1 9585 print delim1$ 9590 print 9600 RETURN 9800 print 9810 print 9820 print "END OF REPORT" 9830 print 9840 print chr$(12) 9845 print chr$(12) 9850 CLOSE 1 console 9870 RETURN 10000 GOSUB 20000 10040 chain "master1" 20000 PRINT clear$:PRINT 20005 PRINT "A NEW GENERAL LEDGER REFERENCE FILE IS BEING" 20010 PRINT "CREATED.":PRINT 20015 PRINT "*** PLEASE WAIT ***" 20025 open z5$ recl 138 as 1 20035 FOR Z2=1 TO Z3+2 20040 read #1,z2;i,j 20045 IF j=0 THEN 20055 20050 NEXT Z2 20055 close 1 20060 Z2=Z2-1 20065 DIM U(Z2) 20070 open z5$ recl 138 as 1 20075 FOR Z=1 TO Z2 20080 read #1,z;i,u(z) 20085 print i,u(z) 20090 NEXT Z 20095 close 1 if end #2 then 25000 20100 open "b:glref" as 2 print #2;z2 20105 for z=1 to z2 20110 print #2;u(z) 20115 next z 20120 close 2 20505 return 25000 create "b:glref" as 2 goto 20105 30000 print clear$:print:print "CHECKING FILE LENGTH" PRINT:PRINT "*** PLEASE WAIT ***" open z5$ recl 138 as 1 z3=(size(z5$)*block.size)/138 for z2=1 to z3 read #1,z2;n(2,1),n(2,2) if n(2,2)=0 then 30300 next z2 30300 z3=int(z3)-2 close 1 create z7$ as 1 print #1;z2,z3 close 1 GOTO 1500