home *** CD-ROM | disk | FTP | other *** search
- REM BUDGETCH.BAS
- REM
- REM This program is designed to make changes in erroneous entries
- REM made with BUDGET1.BAS. It works with a dual or single disc system
- REM and CBASIC, version 2.
- REM
- PRINT "THIS PROGRAM CORRECTS ENTRIES MADE WITH BUDGET1.BAS."
- PRINT:PRINT:PRINT
- 10 INPUT "Name the file you are accessing:"; LINE RESP$
- REM * *we check the file for a reasonable name* *
- IF RESP$="" THEN GOTO 10
- IF LEN(RESP$)>12 THEN PRINT "TOO LONG.":GOTO 10
- TYPE$=RIGHT$(UCASE$(RESP$),4) REM check on last four letters .xxx
- DOT$=LEFT$(TYPE$,1)
- IF DOT$<>"." THEN PRINT "ERROR IN TYPE.":GOTO 10
- FILE.NAME$=UCASE$(RESP$)
- REM * *end of checking procedure* *
- FALSE%=0
- TRUE%=-1
- DEF FN.GET.TO.END%(FILE.NOMBRE$,REC.SIZE%,FILE.NUM%,POSITION%)
- FN.GET.TO.END%=FALSE%
- FILE.SIZE%=SIZE(FILE.NOMBRE$)
- IF FILE.SIZE%=0 THEN \ false if no file exists
- RETURN \
- ELSE FN.GET.TO.END%=TRUE%
- IF END # FILE.NUM% THEN 15
- POSITION%=INT%(FLOAT(FILE.SIZE%)*128/REC.SIZE%)
- PRINT TAB(15); "locating end of file"
- READ # FILE.NUM%,POSITION%;
- WHILE TRUE%
- READ # FILE.NUM%; LINE DUMMY$
- POSITION%=POSITION%+1
- WEND
- 15 FN.GET.TO.END%=POSITION%
- RETURN
- FEND REM * *end of this function* *
- POSN%=0
- OPEN FILE.NAME$ RECL 64 AS 1 REM we see how big the file is
- RECORD.NUMBER%=FN.GET.TO.END%(FILE.NAME$,64,1,POSN%)
- M%=RECORD.NUMBER% -1 REM pointer ends one past end of records
- CLOSE 1
- REM
- DIM CAT$(M%,4)
- DIM AMT(M%,4)
- DIM PAYEE$(M%)
- DIM DATE%(M%)
- DIM TOTAL(M%)
- DIM STATUS%(M%)
- 20 PRINT "We will now access records one by one and present them for your"
- PRINT "inspection."
- OPEN FILE.NAME$ RECL 64 AS 1
- N%=1 REM index for the read # routine
- WHILE TRUE%
- IF END # 1 THEN 25
- READ # 1,N%;DATE%(N%),PAYEE$(N%),CAT$(N%,1),AMT(N%,1),CAT$(N%,2),AMT(N%,2),CAT$(N%,3),AMT(N%,3),CAT$(N%,4),AMT(N%,4)
- PRINT DATE%(N%);PAYEE$(N%);":";CAT$(N%,1);AMT(N%,1);CAT$(N%,2);AMT(N%,2);CAT$(N%,3);AMT(N%,3);CAT$(N%,4);AMT(N%,4)
- TOTAL(N%)=0
- FOR K%=1 TO 4
- TOTAL(N%)=TOTAL(N%)+AMT(N%,K%)
- NEXT K%
- PRINT TAB(25);"<cr> if this is OK; if not, type 'N':":INPUT LINE OK$
- IF OK$="N" THEN STATUS%(N%)=0 ELSE STATUS%(N%)=-1
- N%=N%+1 REM index to help us get back to correct record
- IF N%>M% THEN GOTO 25
- WEND
-
- 25 REM We have gotten all records out of the file, now we need to locate
- REM the errors and correct them in the memory; then put back the file.
-
- FOR K%=1 TO (N%-1)
- WHILE NOT STATUS%(K%)
- 30 PRINT DATE%(K%);" ";PAYEE$(K%);":"
- FOR L%=1 TO 4
- PRINT CAT$(K%,L%);" ";"$";AMT(K%,L%)
- NEXT L%
- PRINT "enter correct data for all 10 fields:"
- INPUT "correct date:"; DATE%(K%)
- INPUT "correct Payee:"; PAYEE$(K%)
- TOT=0
- FOR L%=1 TO 4
- PRINT "category (";L%;"):":INPUT LINE CAT$(K%,L%)
- PRINT "amount (";L%;"):$":INPUT AMT(K%,L%)
- TOT=TOT+AMT(K%,L%)
- NEXT L%
- IF TOT<>TOTAL(K%) THEN PRINT "New total not equal to old."
- PRINT "<cr> if no mistakes were made in this entry."
- INPUT LINE R$
- IF R$<>"" THEN GOTO 30
- PRINT "corrected amounts entered into memory."
- STATUS%(K%)=-1
- WEND
- NEXT K%
- REM
- REM corrected data is now entered back onto the disc
- REM
- CLOSE 1
- CREATE FILE.NAME$ RECL 64 AS 1
- FOR K%=1 TO (N%-1)
- PRINT # 1;DATE%(K%),PAYEE$(K%),CAT$(K%,1),AMT(K%,1),CAT$(K%,2),AMT(K%,2),CAT$(K%,3),AMT(K%,3),CAT$(K%,4),AMT(K%,4)
- PRINT PAYEE$(K%);" information entered onto disc."
- NEXT K%
- CLOSE 1
- PRINT (N%-1);" records have been entered to the disc."
- PRINT "Any more files to be corrected? [YES=1,NO=0] :"
- INPUT REPEAT%
- IF REPEAT% THEN GOTO 10 ELSE PRINT TAB(25);"Adios!"
- END
- EOF