ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее-CATALOG09A COPRAN ASCGLMENU ASCGL1 ASC3 GL3 ASCGL4 ASCGL5 ASC-SORTGL ASC2 !"#$ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееES IN THE ISSUES OF SEPTEMBER THROUGH NOVEMBER. IN THE FINAL ISSUE, FULL TYPED LISTINGS WERE GIVEN FOR THE TWELVE PROGRAMS PLUS TWO OTHERS, "CHART" AND "GENPRO", NEITHER OF WHICH WERE ON THE "FLOPPY ROM". THE VERSIONS HERE ARE IN FULL ASCII. THE LAееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее7K SORTGL.ASC SEE MAGAZINE REFERENCES ABOVE AZINE REFERENCES ABOVE 9.10 13K GL7.ASC SEE MAGAZINE REFERENCES ABOVE 9.11 3K GLMENU.ASC SEE MAGAZINE REFERENCES ABOVE 9.12 ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееGETPUT ASC%&'COPCON ASC ()GL2 ASC}*+,-./0123456789GL6 ASC8:;<=>?@GL7 ASCcABCDEFGHIJKLMееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееMAGAZINE REFERENCES ABOVE 9.2 2K COPRAN.ASC SEE MAGAZINE REFERENCES ABOVE 9.3 3K GETPUT.ASC SEE MAGAZINE REFERENCES ABOVE 9.4 7K GL1.ASC SEE MAGAZINE REFERENCES ABOVE 9.5 16K GL2.ASC SEE MAGAZINE REFERENCES ABOVE 9.6 4K GL3.ASC SEE MAGAZINE REFERENNGUAGE IS MITS 12K DISK BASIC VER. 4.0. IN CERTAIN CASES, THE COMMENT PREAMBLES WERE REMOVED FROM THE HEADS OF THE FILES, TO PERMIT LOADING IN THE SYSTEM USED TO RECOVER THE CODE. NUMBER SIZE NAME COMMENTS 1K CATALOG.9 9.1 2K COPCON.ASC SEE ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееVOLUME 9 GENERAL LEDGER PROGRAM BY BUD SHAMBURGER THESE TWELVE PROGRAMS WERE PUBLISHED IN MACHINE READABLE FORM AS PAGE 32A OF INTERFACE AGE MAGAZINE, VOLUME 2, ISSUE 10, DATED SEPTEMBER 1977. THE SYSTEM WAS DESCRIBED IN A SERIES OF THREE ARTICLееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееCES ABOVE 9.7 4K GL4.ASC SEE MAGAZINE REFERENCES ABOVE 9.8 6K GL5.ASC SEE MAGAZINE REFERENCES ABOVE 9.9 7K GL6.ASC SEE MAGAZINE REFERENCES ABOVE 9.10 13K GL7.ASC SEE MAGAZINE REFERENCES ABOVE 9.11 3K GLMENU.ASC SEE MAGAZINE REFERENCES ABOVE 9.12 ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее10 ' PROGRAM NAME "COPRAN" 20 ' MITS BASIC VERSION 4.0 30 ' PROGRAMMED BY: BUD SHAMBURGER JAN 1977 #27 RED OAK DR CONWAY ARK 72032 501-327-3641 40 ' 50 ' A GENERAL PURPOSE UTILITY PROGRAM FOR COPYIN"CODE ERROR";CHR$(7):GOTO 150 380 IF A=1 THEN LOAD "A:GL1",R 390 IF A=2 THEN LOAD "A:GL2",R 400 IF A=3 THEN LOAD "A:GL3",R 410 IF A=4 THEN LOAD "A:GL4",R 420 IF A=5 THEN LOAD "A:GL5",R 430 IF A=6 THEN LOAD "A:GL6",R 440 IF A=7 THEN LOAD "A:GL7",R 4AM TO DISPLAY ALL GENERAL LEDGER PROGRAMS AND PROMPT THE 80 :REM/ OPERATOR AS TO THE FLOW OF PROCESSING 90 :REM/ THIS PROGRAM BOOTS UP THE DESIRED PROGRAM SELECTED BY THE OPERA 100 :REM/ EACH PROGRAM IN THE GENERAL LEDGER PACKAGE WILL BOOT UP THIS P 11S=1 190 LET Q=2 200 INPUT "ENTER -INPUT- FILE NAME";I$ 210 INPUT "ENTER -OUTPUT- FILE NAME";O$ 220 INPUT "ENTER -INPUT- DR#";X 230 INPUT "ENTER -OUTPUT- DR#";Y 240 INPUT "ENTER -INPUT- BEG REC#";T 250 INPUT "ENTER -INPUT- END REC#";U 260 INPUT "ENTLYSIS" 280 PRINT "8 - COPRAN - COPY FILES" 290 PRINT "9 - GETPUT - MAKE MASTER CHANGES" 300 PRINT "10 - SORTGL - SORT GENERAL LEDGER FILES" 310 PRINT "11 - COPCON - COPY BUDGET FILE TO BUDGET HISTORY FILE" 320 PRINT "12 - CHART - LOADS GENERAL LEDGER & OUTPUT AREA UNEQUAL" 600 GOTO 240 610 CLOSE S,Q 620 PRINT "END OF COPY" 630 LOAD "GLMENU",0,R 640 END RINT "INPUT AREA 530 GOTO 400 540 LET CT=O 550 PRINT " DR# REC#" 560 RETURN 570 PRINT "ERROR IN DR#" 580 GOTO 220 590 PRINT "INPUT AREA G RANDAM DATA FILES. 60 ' FILE NAMES, FILE NUMBERS AND DISK DRIVE NUMBERS ARE ENTERED FROM 70 ' THE TERMINAL. FILE BOUNDARIES ARE ALSO ENTERED FROM THE TERMINAL. 80 ' BOTH FILES CAN RESIDE ON THE SAME DISK DRIVE PROVIDED THEIR NAMES 90 ' ARE DIFFERENTER CHECK TRANSACTIONS FOR ACCOUNT 1110" 200 PRINT "2 - GL2 - RUN LEDGER TRANSACTIONS BY:" 210 PRINT " A. CHECK NO - VOUCHER NO" 220 PRINT " B. ACCOUNT NO" 230 PRINT "3 - GL3 - MERGE BANKBKUP WITH LEDGER AND CREATE NEW BANKCUR0 :REM/ UPON REACHING EOJ. 120 :REM/ 130 :REM/*************************************************************** 140 :REM/ 150 PRINT " * * GENERAL LEDGER MENUE * *" 160 PRINT 170 PRINT " ENTER NUMBER DESIRED" 180 PRINT 190 PRINT "1 - GL1 - ENTER -OUTPUT- BEG REC#";V 270 INPUT "ENTER -OUTPUT- END REC#";W 280 INPUT "TO MOUNT THE FILES ENTER -Y-";XY$ 290 IF XY$<>"Y" THEN 320 300 IF X=Y THEN UNLOAD X:MOUNT X:GOTO 320 310 UNLOAD X,Y:MOUNT X,Y 320 LET ZT=U-T 330 LET ZV=W-V 340 IF X<>0 AND X<>CHART OF ACCOUNTS IN" 330 PRINT " PROGRAM FORMAT FOR LISTING OR UPDATING" 340 PRINT "13 - GENPRO - LIST THE PROCEDURES FOR RUNNING THE GENERAL" 350 PRINT " LEDGER PACKAGE OF PROGRAMS" 360 INPUT A 370 IF A<1 OR A>13 THEN PRINT 10 :REM/ PROGRAM NAME : "GLMENU" 20 :REM/ PROGRAMMED BY: BUD SHAMBURGER JANUARY 1977 30 :REM/ #27 RED OAK DR 40 :REM/ CONWAY ARK 72032 50 :REM/ 501-327-3641 60 :REM/ 70 :REM/ A PROGR. 100 ' 110 '******************************************************************* 120 '******************************************************************* 130 ' 140 CLEAR 500 150 PRINT "COPY * BASIC-RANDOM-FILES *" 160 PRINT 170 LET R$="R" 180 LET R" 240 PRINT "4 - GL4 - ENTER CHECKS CASHED & TAG BANKCURR" 250 PRINT "5 - GL5 - RUN BANK STATEMENT FOR ACCOUNT NO 1110" 260 PRINT "6 - GL6 - ENTER DAILY ROOM REVENUE JOURNAL VOUCHERS" 270 PRINT "7 - GL7 - RUN MONTHLY OR YTD BUDGET - MONTHLY OR YTD ANA CT=11 THEN GOSUB 540 480 PRINT USING "#### ";X;T 490 PRINT USING "#### ";Y;V 500 LET CT=CT+1 510 LET T=T+1 520 LET V=V+1 530 GOTO 400 540 LET CT=O 550 PRINT " DR# REC#" 560 RETURN 570 PRINT "ERROR IN DR#" 580 GOTO 220 590 PRINT "INPUT AREA 1 THEN 570 350 IF Y<>0 AND Y<>1 THEN 570 360 IF ZT<>ZV THEN 590 370 OPEN R$,S,I$,X 380 OPEN R$,Q,O$,Y 390 GOSUB 540 400 IF T>U THEN 610 410 GET #1,T 420 FIELD #1,128 AS A$ 430 LET C$=A$ 440 FIELD #2,128 AS B$ 450 RSET B$=C$ 460 PUT #2,V 470 IF50 IF A=8 THEN LOAD "A:COPRAN",R 460 IF A=9 THEN LOAD "A:GETPUT",R 470 IF A=10 THEN LOAD "A:SORTGL",R 480 IF A=11 THEN LOAD "A:COPCON",R 490 IF A=12 THEN LOAD "A:CHART" 500 IF A=13 THEN LOAD "A:GENPRO",R 510 GOTO 150 520 END 80 IF A=11 THEN LOAD "$="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$,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$="ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееF 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 'ONS" 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ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее ' 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 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$ 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 PRIN 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 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$) ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее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 I0 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 TRANSACTIT "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$ 7038,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 49ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее 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 '***N 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 2450 RETURN 2460 LSET D1$(M)="EOF" 2470 GOTO 2440 2480 END  2430 RSET D1$(M)=MID$(B$(I),1,42) 2440 PUT #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 ESS 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 0 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 ' 1 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 MI*** 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)) 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 ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее' 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 1800520 '****** 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 ' TURD$(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 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 PROC 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 10 ' PROGRAM NAME "GL3" 190 CLEAR 1500 200 JS=4 210 KS=4 220 A3=200 230 INPUT "ENTER -Y- TO MOUNT THE FILES";WY$ 240 IF WY$<>"Y" THEN 270 250 UNLOAD 0,1 260 MOUNT 0,1 270 OPEN "R",1,"LEDGER",0 280 OPEN "R",2,"BANKBKUP",1 290 OPEN "R",3,"BANKCURRееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее=2037 THEN PRINT "FILEND ERROR-LEDGER":STOP 830 GET #1,A1 840 JS=1 850 A1=A1+1 860 GOTO 680 910 IF KS=4 THEN 1020 920 FOR K=KS TO 3 930 FIELD #2, (K-1)*42 AS K$,42 AS K2$(K) 940 IF MID$(K2$(K),1,3)="EOF" THEN KEF=1:GOTO 450' END OF BANKBKUP 950 IF80' GO CHECK FOR PUT TO BANKCURR 410 IF KEF=1 THEN 450' ALL OF BANKBKUP MERGED IN 420 GOSUB 880' GO GET NEXT BANKBKUP RECORD FROMFILE 430 IF JEF=1 THEN 380' ALL OF LEDGER MERGED IN 440 GOTO 360 450 IF240 A3=A3+1 1250 IF A3>400 THEN 1160 1260 PUT #3,A3 1270 CLOSE 1280 PRINT "EOJ" 1290 LOAD "GLMENU",0,R 1300 END ":STOP 1170 LSET L4$=L3$ 1180 PUT #3,A3 1190 L3$=BLK$ 1200 L=0 1210 GOTO 1140 1220 L3$=L3$+"EOF" 1230 LSET L4$=L3$ 1),1,3)="EOF" AND JW=1 THEN JEF=1:GOTO 380' EOF LEDGER 720 JDT$=MID$(J1$(J),1,2)+MID$(J1$(J),5,2) 730 IF DT$<>JDT$ THEN 810' NOT CURRENT FILE YET 740 JW=1 ' START OF CURRENT FILE 750 IF MID$(J1$(J),7,4)<>"1110" THEN 810' NOT ",1 300 PRINT "* BEFORE RUNNING THIS PROGRAM - COPY BANKCURR TO BANKBKUP * " 310 PRINT "MERGE -LEDGER-DR0 AND -BANKBKUP-DR1 AND CUT NEW -BANKCURR-DR1" 320 INPUT "ENTER REPORT DATE AS MOYR";DT$ 330 GOSUB 530 340 GOSUB 680 350 GOSUB 880' 1000 RETURN 1010 NEXT K 1020 A2=A2+1 1030 IF A2=201 THEN PRINT "FILEND ERROR-BANKUP":STOP 1040 GET #2,A2 1050 KS=1 1060 GOTO 910 1070 ' 1080 ' THIS ROUTINE WRITES OUT THE BANKCURR FILE IN 201-400#R1 1090 ' 1100 FIELD #3,128 AS L4$ MID$(K2$(K),42,1)<>"2" THEN 1010' DELETE THESE RECORDS FROM FILE 960 IF MID$(K2$(K),11,1)="V" THEN 1010' DELETE VOUCHERS FROM FILE 970 IF MID$(K2$(K),16,4)="VOID" THEN 1010' DELETE VOID CKS FROM FILE 980 C2$=MID$(K2$(K),11,5) 990 KS=K+1 KEF=1 AND JEF=1 THEN 1220' GO WRITE LAST BANKCURR & EOF 460 DUM$=J1$(J)' MOVE LEDGER TO OUTPUT AREA 470 GOSUB 1080' GO CHECK FOR PUT TO BANKCURR 480 IF JEF=1 THEN 380' ALL OF LEDGER MERGED IN 490 GOSUB 680' ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееBANK RECORD 760 IF MID$(J1$(J),41,1)="*" THEN 810' BYPASS BAD RECORD 770 IF MID$(J1$(J),42,1)="1" THEN JS=J+1:DUM$=J1$(J):GOTO 350 780 C1$=MID$(J1$(J),11,5) 790 JS=J+1 ' THIS IS THE PROPER RECORD 800 RETURN 810 NEXT J 820 IF A1GO GET 1ST BANKBKUP RECORD FROM FILE 360 IF C1$400 THEN PRINT "FILEND ERR BANKCURR":STOP 1170 LSET L4$=L3$ 1180 PUT #3,A3 1190 L3$=BLK$ 1200 L=0 1210 GOTO 1140 1220 L3$=L3$+"EOF" 1230 LSET L4$=L3$ 1INT "FILE START NOT IN TABLE":STOP 620 A1$=MID$(DD$(I),5,4) 630 A1=VAL(A1$) 640 RETURN 650 ' 660 ' THIS ROUTINE GETS THE PROPER LEDGER RECORD 670 ' 680 IF JS=4 THEN 830 690 FOR J=JS TO 3 700 FIELD #1, (J-1)*42 AS J$,42 AS J1$(J) 710 IF MID$(J1$(J GO GET NEXT LEDGER RECORD FROM FILE 500 IF KEF=1 THEN 450' ALL OF BANKBKUP MERGED IN 510 GOTO 360 560 GET #1,2037 570 FOR I=1 TO 16 580 FIELD #1, (I-1)*8 AS D$,8 AS DD$(I) 590 IF DT$=MID$(DD$(I),1,4) THEN 620 600 NEXT I 610 PR10 ' PROGRAM NAME "GL4" 20 ' PROGRAMMED BY: BUD SHAMBURGER NOVEMBER 1976 30 ' #27 RED OAK DR 40 ' CONWAY ARK 72032 50 ' 501-327-3641 60 ' 70 ' THIS PROGRAM TAKES THE DATA ENTERED FROM Tееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее"GLMENU",R 740 PRINT "NOT IN DISK FILE";B(I) 750 GOTO 700 760 ' 770 ' THIS ROUTINE GETS THE DISK RECORD 780 ' 790 IF JS=4 THEN 900 800 FOR J=JS TO 3 810 FIELD #1, (J-1)*42 AS D$,42 AS DREC$(J) 820 IF MID$(DREC$(J),1,3)="EOF" THEN 950' END OF DISD - 500 ENTRIES MAX" 190 DIM B(500) 200 DIM BB$(500) 210 JS=4 220 REC=200 230 INPUT "ENTER -Y- TO MOUNT THE FILE";WY$ 240 IF WY$<>"Y" THEN 280 260 PRINT "** ENTER ** -T- TO TERMINATE INPUT" 270 PRINT 280 INPUT "ENTER REPORT DATE AS MOYR";DT$ 290 1170 IF I>=1 THEN 1110 1180 Q=Q+1 1190 IF Q>K THEN PRINT "M = ";M;" SWAPS MADE = ";EXH:GOTO 1050 1200 GOTO 1100 1210 RETURN' END OF SORT 1220 END Q+1 1190 IF Q>K THEN PRINT "M = ";M;" SWAPS MADE = ";EXH:GOTO 1050 1200 GOTO 1100 1210 RETURGOSUB 770' GO GET 1ST DISK RECORD 560 FOR I=1 TO N 570 DCK=VAL(DCK$) 580 IF B(I)=DCK THEN 620' GO CHECK AMOUNT & TAG 590 IF B(I)400 THEN 950 920 GET #1,REC 930 JS=1 940 GOTO 790 950 IF I>N THEN 710 960 P=I 970 FOR I=P TO N 980 PRINT "NO DISK RECORD FOR ";B(I) 990 NEXT I 1000 GOTO 710 1010 ' 1020 ' THIS ROUTINE SORTS THE TERMINAL ENTRIES ON CHEK FILE 830 IF MID$(DREC$(J),42,1)<>"2" THEN 890' BYPASS BAL FWD & BAD RECORDS 840 IF MID$(DREC$(J),11,1)<>"C" THEN 890' BYPASS VOUCHERS 850 DCK$=MID$(DREC$(J),12,4) 860 DOL$=MID$(DREC$(J),31,1)+MID$(DREC$(J),33,9) 870 JS=J+1 880 RETURN 890 NEXT JH1$=" CHEK AMOUNT" 300 H2$=" NMBR $$$.$$$.$$" 310 PRINT H1$:PRINT H2$ 320 FOR J=1 TO 2 330 INPUT A$ 340 IF MID$(A$,1,1)="T" THEN 520' LAST ENTRY MADE - GO SORT ON CHECK# 350 B=LEN(A$) 360 IF B<>15 THEN 490 370 IF MID$(A$,5,1)<>" " THEN 490 ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееF BB$(I)=DOL$ THEN 650 630 PRINT "AMOUNT UNEQUAL ";B(I),BB$(I),DOL$ 640 PRINT "TAGGED ANYWAY" 650 DSK$=DREC$(J) 660 MID$(DSK$,27,4)=DT$ 670 MID$(DSK$,42,1)="3" 680 LSET DREC$(J)=DSK$ 690 PUT #1,REC 700 NEXT I 710 CLOSE 720 PRINT "EOJ" 730 LOAD CASHED, 120 ' COMPARING ON CHECK NUMBER AND MONEY AMOUNT. 130 ' -BANKCURR- FILE IS ON DR1. 500 ENTRIES MAX FROM TERMINAL 140 ' 150 '******************************************************************* 160 ' 170 CLEAR 1000 180 PRINT "TAG CHECKS CASHECK# 1030 ' 1040 M=N 1050 M=INT(M/2) 1060 EXH=0 1070 IF M=0 THEN 1210 ' END OF SORT - GOTO NEXT ROUTINE 1080 K=N-M 1090 Q=1 1100 I=Q 1110 L=I+M 1120 IF B(I)<=B(L) THEN 1180 1130 SWAP B(I),B(L) 1140 SWAP BB$(I),BB$(L) 1150 EXH=EXH+1 1160 I=I-MPRINT "TOO MANY ENTRIES":STOP 480 GOTO 290 490 PRINT CHR$(7);CHR$(7);CHR$(7);CHR$(7);CHR$(7);CHR$(7) 500 PRINT H1$:PRINT H2$' EDIT ERROR REPEAT LINE 510 GOTO 330 520 N=I 530 GOSUB 1020' GO SORT ON CHECK# 540 OPEN "R",1,"BANKCURR" 550 'EDIT 380 IF MID$(A$,9,1)<>"." AND MID$(A$,9,1)<>" " THEN 490' EDIT 390 IF MID$(A$,13,1)<>"." THEN 490 400 I=I+1 410 C$=MID$(A$,1,4): 420 C=VAL(C$) 430 B(I)=C 440 D$="-"+MID$(A$,6,3)+MID$(A$,10,6) 450 BB$(I)=D$ 460 NEXT J 470 IF I>500 THEN 10 ' PROGRAM NAME "GL5" 20 ' PROGRAMMED BY: BUD SHAMBURGER NOVEMBER 1976 30 ' #27 RED OAK DR 40 ' CONWAY ARK 72 60 ' 70 ' THIS PROGRAM LIST "BANKCURR" FILE FOR ACCOUNT #1110 AND PRINTS 80 ' OUT BAL FWDS, CHSING E1DT$;L2#,L3#,L5# 1050 GOTO 610 1060 LN$=DCV$+B$+DMO$+B$+DYD$+B$+DIS$+B$ 1070 LPRINT LN$ 1080 GOTO 610 1090 ' 1100 ' THIS ROUTINE GETS THE DISK RECORD FROM "BANKCURR" LOCATED 1110 ' ON DR1, RECORD 201-400 1120 ' 1130 IF IS=4 THEN 1210 1140 'NEXT LINE & RECORD 630 L5#=DOL# ' DOLLAR AMOUNT FROM DISK 640 T5#=T5#+DOL# ' LEDGER BALANCE LINE TOTAL 650 IF DDC$="1" THEN 860 ' IS IT A BALANCE FORWARD DISK RECORD 660 IF MID$(DCV$,1,1)="V" THEN 760 ' IS IT A DISK VOUCHER TRANSAC0 210 OPEN "R",1,"BANKCURR" 220 IS=4:B$=" ":BK$=" " 230 REC=200 'FILE START 240 EDT$="###,###.##-" ' EDIT WORD FOR LINE PRINTER 250 E1DT$=" ###,###.##-###,###.##- ###,###.##-"'EDIT 260 ' 270 ' PAGE HEADINGS 28O$+B$+DYD$+B$+DIS$+B$ 890 LPRINT LN$ USING EDT$;L1# 900 GOTO 610 910 LN$=DCV$+B$+DMO$+B$+DYD$+B$+DIS$+B$ 920 LPRINT LN$ SPC(11) USING EDT$;L2# 930 GOTO 610 940 LN$=DCV$+B$+DMO$+B$+DYD$+B$+DIS$+B$ 950 LPRINT LN$ USING E2DT$;L1#,L3#,L5# 960 GOTO 610 470 DIS$=MID$(DREC$(I),16,11) 480 DOL$=MID$(DREC$(I),31,11) 490 DOL#=VAL(DOL$) 500 DDC$=MID$(DREC$(I),42,1) 510 IF DMO$=RMO$ THEN 630 ' DOES DISK MONTH = REPORT MONTH 520 ' 530 ' IS IT AN UNCASHED CHECK 540 ' 550 IF DDC$="2"ANDMID$(DCV$,1,1)="C"THEECKS CASHED, CHECKS WRITTEN, CHECKS OUTSTANDING, 90 ' DEPOSITS, ADJUSTMENTS AND NEW BANK BALANCE. THE FILE IS ON DR1 100 ' "BANKCURR" IS A RANDOM FILE RESIDING IN RECORDS 201-400. 110 ' THE RECORD LAYOUT IS THE SAME AS THE GENERAL LEDGER(BLOCKED 3 120 NDING COUNTERS 720 IF MID$(DIS$,1,4)="VOID" THEN 1060 ' IS IT A VOID CHECK OR VOUCHER 730 GOTO 940 740 L2#=DOL#:T2#=T2#+DOL# ' CHECKS CASHED COUNTERS 750 GOTO 970 760 SN=SGN(DOL#) 770 ' 780 ' IS IT A CREDIT OR DEBIT TRANSACTION 790 ' 800 IF SN=-1TTION 670 L3#=DOL#:T3#=T3#+DOL# ' CHECKS WRITTEN COUNTERS 680 IF DDC$="2" AND MID$(DCV$,1,1)="C" THEN 710 ' IS IT UNCASHED CHECK 690 IF DDC$="3" AND MID$(DCV$,1,1)="C" THEN 740 ' IS IT CASHED CHECK 700 GOTO 600 710 L1#=DOL#:T1#=T1#+DOL# ' CHECKS OUTSTA0 ' 290 H1$="CONWAY R.I. INC., CONWAY, ARK" 300 H2$="BANK RECONCILLIATION - GENERAL ACCOUNT - PERIOD ENDING " 310 H3$="PAGE " 320 H5$="CHECKS CKSCASHED CKSWRIT/ DEPOSIT/ LEDGER" 330 H6$="VNUMB MO DY DESCRIPTION " 340 H4$="CNUMB" 350 H7$=" 970 LN$=DCV$+B$+DMO$+B$+DYD$+B$+DIS$+B$ 980 LPRINT LN$ USING E1DT$;L2#,L3#,L5# 990 GOTO 610 1000 LN$=DCV$+B$+DMO$+B$+DYD$+B$+DIS$+B$ 1010 LPRINT LN$ SPC(33) USING EDT$;L4#,L5# 1020 GOTO 610 1030 LN$=DCV$+B$+DMO$+B$+DYD$+B$+DIS$+B$ 1040 LPRINT LN$ UNL1#=DOL#:T1#=T1#+DOL#:GOTO880 560 ' 570 ' IS IT A CASHED CHECK 580 ' 590 IF DDC$="3"ANDMID$(DCV$,1,1)="C"THENL2#=DOL#:T2#=T2#+DOL#:GOTO910 600 PRINT "DISK TYPE CODE ERR":STOP 610 GOSUB 1370 'GO CHECK FOR PAGE OVERFLOW 620 GOTO 430 ' PER SECTOR) 130 ' 140 '******************************************************************* 150 ' 160 CLEAR 1500 170 E2DT$="###,###.##- ###,###.##- ###,###.##-" 180 INPUT "ENTER -Y- TO MOUNT THE FILE";WY$ 190 IF WY$<>"Y" THEN 21HENL3#=DOL#:T3#=T3#+DOL#:L2#=DOL#:T2#=T2#+DOL#:GOTO1030 810 L4#=DOL#:T4#=T4#+DOL# 820 GOTO 1000 830 ' 840 ' PRINT THE TYPE OF REPORT LINE DESIRED 850 ' 860 LPRINT SPC(6);DMO$;B$;DYD$;B$;DCV$;DIS$;SPC(40)USINGEDT$;L5# 870 GOTO 610 880 LN$=DCV$+B$+DMBL# ' EOJ TOTAL ROUTINE COUNTER 420 GOSUB 1260 'GO PRINT HEADINGS 430 GOSUB 1100 'GO GET DISK RECORD 440 DCV$=MID$(DREC$(I),11,5) ' LOAD WORK AREAS 450 DMO$=MID$(DREC$(I),1,2) 460 DYD$=MID$(DREC$(I),3,2) OUTSTAND CHARGES CHARGES CREDITS BALANCE" 360 ' 370 PRINT "BANK RECONCILLIATION, ACCOUNT# 1110" 380 INPUT "ENTER PERIOD ENDING DATE AS MO-DY-YR";DT$ 390 RMO$=MID$(DT$,1,2) 400 INPUT "ENTER BANKS BEGINNING BALANCE AS -XXXXX.XX";BL# 410 T6#=FOR I=IS TO 3 1150 FIELD #1, (I-1)*42 AS D$,42 AS DREC$(I) 1160 IF MID$(DREC$(I),1,3)="EOF" THEN 1500 'TO EOJ ROUTINE 1170 IF MID$(DREC$(I),42,1)="*" THEN 1200 1180 IS=I+1 1190 RETURN 1200 NEXT I 1210 REC=REC+1:IF REC>400 THEN PRINT "FILEND ERR":ST 760 IF MID$(DREC$(I),42,1)="1" THEN 990 ' IS IT A BAL FORWARD RECORD 770 PC$=MID$(DREC$(I),11,5) ' LOAD CK# VCH# WORK AREA 780 IF MID$(PC$,1,1)="C" THEN MID$(PC$,1,1)="2":GOTO 800 ' IS IT A CHECK 790 MID$(PC$,1,1)="3" ' THEN ITS A VOUCHER 800 DAC$=50 CNT=10000 360 PRINT "GENERAL LEDGER SORT" 370 OPEN "R",3,"LEDGER",1 ' OPEN ALL FILES 380 OPEN "R",1,"LEDGER",1 390 OPEN "R",2,"LEDGER",0 400 PRINT "ENTER -A- TO SORT ON ACCT#/CK#/VCH#" ' WHAT KIND OF SORT? 410 INPUT "ENTER -C- TO SORT ON CK/VCH 10 1470 ' 1480 ' EOJ TOTAL ROUTINE 1490 ' 1500 LPRINT:GOSUB 1370 1510 LPRINT SPC(5)"TOTALS"SPC(13) USINGEDT$;T1#,T2#,T3#,T4#,T5# 1520 LPRINT 1530 LPRINT "BEG BANK BALANCE " USING EDT$;T6#:T6#=T6#+T2# 1540 LPRINT "CKSCASHED/CHARGES" USING EDT$;T2#:D OF FILE 620 C$=MID$(DREC$(I),1,2) 630 C$=(C$)+(MID$(DREC$(I),5,2)) ' EXTRACT DATE FROM LEDGER FILE 640 IF A$=C$ THEN LSW=1:GOTO 690 ' IS IT THE BEGINNING OF THE FILE 650 NEXT I ' NEXT RECORD 660 REC=REC+1 ' INCREMENT THE RECORD COUNTER 670 ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееOP 1220 GET #1,REC 1230 IS=1 1240 GOTO 1130 1250 ' 1260 ' THIS ROUTINE PRINTS THE PAGE HEADINGS AND RESETS 1270 ' THE LINE COUNTER 1280 ' 1290 LPRINT SPC(3);H1$:LPRINT 1300 PAG=PAG+1 1310 LPRINT H2$;DT$;SPC(2);H3$;PAG:LPRINT 1320 LPRINT H4$;SPTO 16 480 FIELD #3, (Q-1)*8 AS DB$, 8 AS D1$(Q) 490 IF A$=MID$(D1$(Q),1,4) THEN 530 500 NEXT Q 510 PRINT "DATE NOT IN TABLE" 520 GOTO 520 530 REC$=MID$(D1$(Q),5,4) 540 REC=VAL(REC$) 550 K=1 560 SREC=REC ' SAVE#";CA$ 420 IF CA$="A" THEN LPRINT "GEN LEDGER SORT ON ACT#/CK-VCH#":GOTO 440 430 LPRINT "GEN. LEDGER SORT ON CK/VCH #" 440 INPUT "ENTER DATE TO BE SORTED AS MOYR";A$ ' FILE MONTH AND YEAR 450 LPRINT "DATE ";A$ 460 GET #3,2037 470 FOR Q=1 T6#=T6#+T4# 1550 LPRINT "DEPOSITS/CREDITS " USING EDT$;T4# 1560 LPRINT "------------------------------" 1570 LPRINT "END BANK BALANCE " USING EDT$;T6#:LPRINT 1580 LPRINT "CHECKS OUTSTAND " USING EDT$;T1#:T6#=T6#+T1# 1590 LPRINT "---------------------IF REC=2037 THEN 1030 ' IS IT THE END OF THE FILE AREA 680 GOTO 580 ' GO GET ANOTHER RECORD 690 N=N+1 700 IF N>1750 THEN 1050 710 IF ISW=1 THEN 740 720 ISW=1 730 SI=I 740 IF CA$="C" THEN 910 ' CHECK NUMBER SORT 750 DAC$=MID$(DREC$(I),7,4)10 ' PROGRAM TITLE "SORTGL" 230 INPUT "ENTER 'Y' TO MOUNT THE FILES";WY$ 240 IF WY$<>"Y" THEN 270 250 UNLOAD 0,1 260 MOUNT 0,1 270 CLEAR 1000 280 Z=1 290 DIM DM$(3) 300 DIM R$(3) 310 DIM DV$(3) 320 DIM B#(1750) 330 DIM BB(1750) 340 DIM Q(16) 3C(22);H5$ 1330 LPRINT H6$;B$;H7$:LPRINT 1340 LC=8 1350 RETURN 1360 ' 1370 ' THIS ROUTINE CHECKS FOR PAGE OVERFLOW 1380 ' 1390 LC=LC+1 1400 IF LC>57 THEN 1420 1410 RETURN 1420 FOR J=LC TO 66 1430 LPRINT 1440 NEXT J 1450 GOSUB 1260 1460 GOTO 14 THE STARTING ADDRESS 570 CLOSE 3 ' CLOSE THE TABLE FILE 580 GET #1,REC 590 FOR I=1 TO 3 ' LEDGER FILE BLOCKED 3 PER SECTOR 600 FIELD #1, (I-1)*42 AS D$,42 AS DREC$(I) 610 IF MID$(DREC$(I),1,3)="EOF" AND LSW=1 THEN 1060 ' IS IT EN0 PRINT "EOJ" 1670 LOAD "GLMENU",0,R 1680 END PRINT "DEPOSITS IN TRANS" 1650 LPRINT "LAST MONTH " USING EDT$;T7# 166-----------------------" 1630 T7#=T6#-T5# 1640 LPRINT "DEPOSITS IN TRANS" 1650 LPRINT "LAST MONTH " USING EDT$;T7# 166---------" 1600 LPRINT "BALANCE " USING EDT$;T6# 1610 LPRINT "LEDGER BALANCE " USING EDT$;T5# 1620 LPRINT "------------------------------" 1630 T7#=T6#-T5# 1640 LPRINT "DEPOSITS IN TRANS" 1650 LPRINT "LAST MONTH " USING EDT$;T7# 166DAC$+PC$ ' ADD PC TO DAC 810 I$=STR$(I):RAC=REC 820 RAC=RAC+1000 ' ADD 1000 TO RECORD NUMBER 830 REC$=STR$(RAC) 840 TAG$=MID$(REC$,2,4)+MID$(I$,2,1) ' SAVE REC NUMBER IN TAG 850 DAC#=VAL(DAC$) 860 TAG=VAL(TAG$) 870 B#(K)=DAC# ' LOAD THE MATRIX F00 PUT #2,REC ' WRITE OUT FILE TO DRIVE 1 2110 IF EFSW=1 THEN 2140 ' HAS EOF BEEN SENSED 2120 REC=REC+1 ' INCREMENT DRIVE 1 RECORD CONTER 2130 GOTO 1910 2140 LPRINT "DR 1 FIRST OUTPUT SECTOR ";SREC;" RECORD # ";SI 2150 LPRINT "** EOF ** DR FILES RECORD 1540 A=A+1 ' INCREMENT THE RECORD COUNTER FOR NEW FILE 1550 IF EFSW=2 THEN 1710 ' END OF FILE SWITCH FOR DRIVE 1 1560 IF EFSW=1 THEN 1680 ' END OF FILE SWITCH FOR DRIVE 0 1570 GOTO 1310 1580 EFSW=1 1590 IF J=3 THEN 1490 1605) 980 GOTO 810 990 CNT=CNT+1 ' BLOCK LOCATION IN THE DISK RECORD 1000 CNT$=STR$(CNT) 1010 PC$=MID$(CNT$,2,5) 1020 GOTO 800 1030 PRINT "DATA OVERLAPS DISK-ILLEGAL" 1040 GOTO 1040 1050 PRINT "TOO MANY RECORDS TO SORT":STOP 1060 IF N>1750 THEN 10BLOCK FOR ST 1920 FOR I=1 TO 3 1930 FIELD #2, (I-1)*42 AS O$,42 AS ODEC$(I) 1940 R$(I)=ODEC$(I) 1950 NEXT I 1960 IF GSW=1 AND K<4 THEN 2040 1970 IF GSW=1 AND K>3 THEN 1990 1980 GSW=1 1990 FOR K=1 TO 3 2000 R$(J)=DM$(K) ' TRANSFER FILE DRIVE 0 TO $) 1400 I=XI:G=XI:Y=XI ' I = THE BLOCKING FACTOR 1410 GET #1,REC 1420 FOR I=G TO Y 1430 FIELD #1, (I-1)*42 AS VREC$,42 AS VA$(I) 1440 DV$(J)=VA$(I) ' BUILD THE OUTPUT RECORD FOR THE SORTED FILE 1450 NEXT I 1460 K=K+1 1470 IF K>N THEN 1580 ' NOR SORTING B# = CONTROL NUMBER 880 BB(K)=TAG ' BB = TAG OR RECORD NUMBER 890 K=K+1 ' INCRECMENT MATRIX SUBSCRIPT 900 GOTO 650 910 IF MID$(DREC$(I),42,1)="1" THEN 950 ' IS IT A BAL FWD RECORD 920 DAC$=MID$(DREC$(I),D # ";JS 1730 CLOSE 1,2 1740 ' 1750 LPRINT 1760 LPRINT "ENTERING COPY-BACK ROUTINE" ' COPY SORTED FILE TO ORIGINAL 1770 OPEN "R",1,"LEDGER",0 1780 OPEN "R",2,"LEDGER",1 1790 REC=SREC 1800 EF$="EOF" 1810 J=SI 1820 A=1 1830 GET #1,A ' GET NEW0 EFSW=2 1610 J=J+1 1620 DV$(J)="EOF" ' INSERT EOF FOR NEW FILE 1630 JS=J 1640 IF J=3 THEN 1490 1650 J=J+1 1660 DV$(J)=BLK$ 1670 GOTO 1640 1680 J=1 1690 EFSW=2 1700 GOTO 1620 1710 A=A-1 1720 LPRINT "** EOF ** DR 0 IN OUTPUT SECTOR ";A;" RECOR50 1070 LPRINT "TOTAL RECORDS ";N;" FREE MEMORY ";FRE(X) 1080 ' 1090 M=N' START OF SORT ROUTINE 1100 M=INT(M/2) 1110 EXH=0 1120 IF M=0 THEN 1270' END OF SORT-GOTO OUTPUT ROUTINE 1130 K=N-M 1140 J=1 1150 I=J 1160 L=I+M 1170 IF B#(I)<=FILE DRIVE 1 2010 IF MID$(DM$(K),1,3)="EOF" THEN 2190 ' IS IT END OF FILE DR 0 2020 J=J+1 2030 IF J=4 THEN 2060 2040 NEXT K 2050 GOTO 1830 2060 J=1 2070 FOR I=1 TO 3 2080 LSET ODEC$(I)=R$(I) ' LOAD OUTPUT FILE DRIVE 1 BUFFER AREA 2090 NEXT I 21 = THE NUMBER OF RECORDS IN THE MATRIX 1480 IF J=3 THEN 1490 ELSE 1320 1490 FOR L=1 TO 3 1500 FIELD #2, (L-1)*42 AS DF$,42 AS DP$(L) 1510 LSET DP$(L)=DV$(L) ' TRANSFER DATA TO NEW FILES BUFFER 1520 NEXT L 1530 PUT #2,A ' WRITE OUT THE NEW 11,5) ' LOAD THE WORK AREA 930 IF MID$(DAC$,1,1)="C" THEN MID$(DAC$,1,1)="2":GOTO 810 ' IS IT A CHE 940 MID$(DAC$,1,1)="3":GOTO 810 ' THEN IT IS A VOUCHER 950 CNT=CNT+1 ' BLOCK LOCATION IN THE DISK RECORD 960 CNT$=STR$(CNT) 970 DAC$=MID$(CNT$,2, FILE ON DR 0 1840 FOR I=1 TO 3 1850 FIELD #1, (I-1)*42 AS D$,42 AS DREC$(I) 1860 DM$(I)=DREC$(I) 1870 IF MID$(DREC$(I),1,3)="EOF" THEN 1990 1880 NEXT I 1890 A=A+1 1900 IF GSW=1 THEN 1990 1910 GET #2,REC ' GET OLD FILE ON DR 1 AND CHECK FOR FIRST T ROUTINE TO DR O" 1290 K=1 1300 A=1 1310 J=0 1320 J=J+1 1330 ZAP=BB(K) ' THE ACTUAL DISK RECORD ADDRESS IN OLD FILE + 1000 1340 REC$=STR$(ZAP) 1350 I$=MID$(REC$,6,1) 1360 REC$=MID$(REC$,2,4) 1370 REC=VAL(REC$) 1380 REC=REC-1000 1390 XI=VAL(IB#(L) THEN 1230 1180 SWAP B#(I),B#(L) 1190 SWAP BB(I),BB(L) 1200 EXH=EXH+1 1210 I=I-M 1220 IF I>=1 THEN 1160 1230 J=J+1 1240 IF J>K THEN PRINT "M = ";M;" SWAPS MADE = ";EXH:GOTO 1100 1250 GOTO 1150 1260 ' 1270 LPRINT 1280 LPRINT "ENTERING OUTPU1 IN OUTPUT SECTOR ";REC;" RECORD # ";J 2160 LPRINT "EOJ" 2170 PRINT "EOJ" 2180 STOP ' END OF JOB 2190 EFSW=1 2200 GOTO 2070 2210 END C;" RECORD # ";J 2160 LPRINT "EOJ" 2170 PRINT "EOJ" 2180 STOP ' END OF JOB 2190 EFSW=1 2200ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее 1 2 2 3 3 4" 340 A3$="....5....0....5....0....5....0....5....0 350 A4$=" 4 5 5 6 6 7 7 8" 360 A5$="....5..8" 370 A6$=" 8 9 9 0 0 1 1 2" 380 A7$=" 2 2" 390 PRINT A2$;A4$ 400 PRINT Aееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее************* 150 '******************************************************************* 160 ' 170 CLEAR 500 180 BLK$=" " 190 INPUT "ENTER FILE NAME";N$ 200 INPUT "FILE NUMBER";F 210 INPUT "DRIVE SELECT";D$ 220 N$=D$+":"+N$ 2ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееIELD SIZE ERROR":GOTO 450 500 PRINT "ENTER NEW DATA" 510 INPUT B$ 520 C$=A$ 530 MID$(C$,B2,K)=B$ 540 LSET A$=C$ 550 PUT F,C 560 PRINT A2$;A4$ 570 PRINT A1$;A3$ 580 PRINT MID$(C$,1,80) 590 PRINT A6$;A7$ 600 PRINT A3$;A5$ 610 PRINT MID$(C$,81,1281$;A3$ 410 PRINT MID$(A$,1,80) 420 PRINT A6$;A7$ 430 PRINT A3$;A5$ 440 PRINT MID$(A$,81,128) 450 INPUT "ENTER FIELD LIMITS AS XXX-XXX";B1$ 460 B2$=MID$(B1$,1,3):B2=VAL(B2$) 470 B3$=MID$(B1$,5,3):B3=VAL(B3$) 480 K=B3-B2+1 490 IF K>128 THEN PRINT "F10 ' PROGRAM NAME "GETPUT" 20 ' PROGRAMMED BY: BUD SHAMBURGER JAN 1977 #27 RED OAK DR CONWAY, ARK 72032 501-327-3641 30 ' 40 ' A GENERAL PURPOSE UTILITY PROGRAM FOR DUMPING A RANDOM FILE 50 ' ON THееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее40 R$="R" 250 OPEN R$,F,N$ 260 FIELD F,128 AS A$ 270 LET C=1 280 INPUT "ENTER -A- TO LOAD GLMENU",CC$ 290 IF CC$="A" THEN LOAD "GLMENU",R 300 INPUT "ENTER ADDR";C 310 GET F,C 320 A1$="1...5....0....5....0....5....0....5....0" 330 A2$=" 1 ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее) 620 GOTO 270 630 END RINT A1$;A3$ 580 PRINT MID$(C$,1,80) 590 PRINT A6$;A7$ 600 PRINT A3$;A5$ 610 PRINT MID$(C$,81,128C 560 PRINT A2$;A4$ 570 PRINT A1$;A3$ 580 PRINT MID$(C$,1,80) 590 PRINT A6$;A7$ 600 PRINT A3$;A5$ 610 PRINT MID$(C$,81,128ED USING THIS PROGRAM OR AS 100 ' LITTLE AS ONE CHARACTER CAN BE ENTERED OR CHANGED. 110 ' EACH POSITION IN THE 128 CHARACTER RECORD IS IDENTIFIED JUST 120 ' ABOVE ITS PRINT LOCATION. 130 ' 140 '******************************************************E TERMINAL, EXAMINING ITS CONTENTS, AND ALTERING 60 ' IT BY TYPING IN THE LIMITS OF THE DESIRED FIELD 70 ' AND THEN ENTERING THE NEW DATA. THE NEW RECORD IS THEN DUMP ON 80 ' THE TERMINAL FOR VISUAL INSPECTION. 90 ' AND ENTIRE DISK RECORD CAN BE CREAT10 ' PROGRAM NAME "COPCON" 20 ' PROGRAMMED BY: BUD SHAMBURGER DECEMBER 1976 30 ' #27 RED OAK DR 40 ' CONWAY ARK 72032 50 ' 501-327-3641 60 ' 70 ' A PROGRAM TO COPY CONSECTIVE FILES ONLY60 PRINT SPC(5);"** ENTER **" 970 PRINT "1-FOR CTL ON CK OR VUCH#" 980 PRINT "2-FOR CTL ON ACCOUNT #" 990 INPUT CT$ 1000 IF CT$="1" THEN H4$="CHECK/VOUCHER REGISTER - PERIOD ENDING " 1010 IF CT$="1" OR CT$="2" THEN 1030 1020 GOTO 970 1030 IF CT$="1".17,1228,-00000108.00,7903,00005820.92 470 R$="R" 480 F=1 490 GL$="LEDGER" 500 D=1 510 A=2037 ' DATA TABLE LOCATION 520 EDT$="##,###,###.##-" ' EDIT WORD 530 BK$=" " 540 IS=1 ER -Y-";XY$ 230 IF XY$<>"Y" THEN 260 240 IF IDR=ODR THEN UNLOAD IDR:MOUNT IDR:GOTO 260 250 UNLOAD IDR,ODR:MOUNT IDR,ODR 260 OPEN "I",1,INA$,IDR 270 OPEN "O",2,OTNA$,ODR 280 IEF=EOF(1) 290 IF IEF=-1 THEN 330 300 INPUT #1,A$ 310 PRINT #2,A$ 320 GOT"ENTER PERIOD ENDING DATE AS MO-DY-YR";DT$ 860 GD$=MID$(DT$,1,2)+(MID$(DT$,7,2)) 870 INPUT "ENTER-Y-IF YOU WANT CLOSING ENTRIES";CE$ 880 IF CE$="Y" THEN CLOSE 2:DR=0:OPEN R$,2,GL$,DR 890 INPUT "ENTER -SR- TO TABULATE AN ACCOUNT NUMBER";SR$ 900 IF SR$=ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее. IT WILL WORK WITH ONE 90 ' 100 '******************************************************************* 110 ' 120 CLEAR 1000 130 PRINT "COPY ** BASIC ** CONSECTIVE FHLES **" 140 PRINT 150 INPUT "ENTER INPUT FILE NAME";INA$ 160 INPUT "ENTER OUTPUT FI"MONTHLY MONTHLY Y.T.D." 670 H2$="MO DY YR NUMB VNUMB DESCRIPTION" 680 I2$=" DEBITS CREDITS BALANCE" 690 H3$=" CONWAY R.I. INC., CONWAY ARK" 700 H4$="GENERAL LEDGER - UNAUDITED - PERIOD ENDING " 710 H7$="BALANCE SHEET - UNAU 550 NO$="1":DK$="-" 560 BLK$=" " 570 Z1E$="-000000000" 580 Z2E$="+000000000" 590 CENT$=".00" 600 DR=1 610 DIM K(16) 650 H1$=" DATE ACCT CNUMB" 660 I1$=O 280 330 CLOSE 1,2 340 PRINT "EOJ" 350 LOAD "GLMENU",0,R 360 END F=-1 THEN 330 300 INPUT #1,A$ 310 PRINT #2,A$ 320 GOTOPEN "I",1,INA$,IDR 270 OPEN "O",2,OTNA$,ODR 280 IEF=EOF(1) 290 IF IEF=-1 THEN 330 300 INPUT #1,A$ 310 PRINT #2,A$ 320 GOT"SR" THEN INPUT "ENTER -ACCOUNT NUMBER- DESIRED";AC$ 910 IF SR$="SR" THEN H4$="* * * ";AC$;" * * *" 920 IF SR$="SR" THEN GOSUB 3160:GOSUB 2720:GOTO 1140 930 INPUT "ENTER -T- FOR TAB, -L- FOR LIST";TL$ 940 IF TL$="T" OR TL$="L" THEN 960 950 GOTO 930 9340 CLEAR 1500 350 INPUT "TO MOUNT THE FILE ENTER-Y-";WY$ 360 IF WY$<>"Y" THEN 390 370 UNLOAD 1 380 MOUNT 1 390 ET$="##,###,###.##- ##,###,###.##-" 440 DATA 1202,-00003520.67,1206,-00001681.75,1214,-00000345.33 450 DATA 1224,-00000165LE NAME";OTNA$ 170 INPUT "ENTER INPUT DR#";IDR 180 INPUT "ENTER OUTPUT DR#";ODR 190 PRINT "COPY '"INA$;"' ON DR# '";IDR;"' TO '";OTNA$;"' ON DR# '";68R" 200 INPUT "ENTER -C- TOO CONTINUE";XC$ 210 IF XC$<>"C" THEN 150 220 INPUT "TO MOUNT THE FILES ENTDITED - PERIOD ENDING " 720 H8$="OPERATING STATEMENT - UNAUDITED - PERIOD ENDING " 730 H5$="PAGE " 740 H6$="---------------------------------------" 780 OPEN R$,F,GL$,D 790 OPEN R$,2,GL$,DR 800 OPEN R$,3,GL$,DR 840 PRINT "GENERAL LEDGER" 850 INPUT ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее THEN GOSUB 2720:GOSUB 3160:GOTO 1140' PRINT HEADINGS 1040 IF TL$="T" AND CT$="2" THEN 6530' GO ADD 1 TO MONTH 1050 INPUT "ENTER -Y- TO GENERATE NEW BAL FWDS";BL$ 1060 IF BL$="Y" THEN 1100 1070 INPUT "ENTER-B-TO GENERATE BUDGET TOTALS";BU$ 1080 IF BU$NT" 2530 NCAT$="UTILITIES" 2540 GOTO 1870 2550 CAT$="TOTAL UTILITIES" 2560 NCAT$="RESERVATION EXP" 2570 GOTO 1870 2580 CAT$="TOT RESERVATION EXP" 2590 NCAT$="INSURANCE,TAXES & DEPRECIATION" 2600 GOTO 1870 2610 TCAT$="TOTAL ASSETS" 2620 GOSUB 39702#=0 1890 IF ESW=1 THEN 2010 1940 IF C5$=C6$ THEN 1180 1950 IF C5$>C6$ THEN 2060 1960 IF C5$="1" THEN 2610 1970 IF C5$="2" THEN 4170 1980 IF C5$="3" THEN 4520 1990 IF C5$="4" THEN 4670 2000 IF C5$="5" OR C5$="6" THEN 2080 2010 TC IF SR$="SR" AND DAC$<>AC$ THEN 1140 1260 T#=VAL(DOL$) 1270 SN=SGN(T#) 1280 IF MID$(DREC$(I),42,1)<>"1" AND SN=-1 THEN 7210 1290 IF MID$(DREC$(I),42,1)<>"1" THEN 7270 'GO ADD TO DEBIT COUNTER 1300 IF MID$(DREC$(I),42,1)<>"1" AND MID$(DAC$,1,1)>"3" THL SALES OTHER" 2350 NCAT$=" " 2360 GOTO 1870 2370 CAT$="TOT COST ROOM SALES" 2380 NCAT$="COST OF TELEPHONE SERVICE" 2390 GOTO 1870 2400 CAT$="TOT COST OF TEL SER" 2410 NCAT$="COST OF OTHER SALES" 2420 GOTO 1870 2430 CAT$="TOT COST OF OTH SALE" 24C3$="12" THEN 2130 1700 IF C3$="13" THEN 2160 1710 IF C3$="21" THEN 2190 1720 IF C3$="22" THEN 2220 1730 IF C3$="30" THEN 2250 1740 IF C3$="41" THEN 2280 1750 IF C3$="42" THEN 2310 1760 IF C3$="43" THEN 2340 1770 IF C3$="71" THEN 2370 1780 IF C3$=<>"B" THEN 1110 1090 ' 1100 OPEN "O",4,"BUDGET",DR 1110 GOSUB 2720' GO GET FILE START FROM TABLE IN SECTOR 2037 1120 GOSUB 3160' PRINT MAIN HEADINGS & SUB HEADINGS 1130 LPRINT "ASSETS":LPRINT:LPRINT "CURRENT ASSETS":LCT=LCT+3 1140 GOSUB 32600 GOTO 1870 2130 CAT$="TOTAL FIXED ASSETS" 2140 NCAT$="OTHER ASSETS" 2150 GOTO 1870 2160 CAT$="TOTAL OTHER ASSETS" 2170 NCAT$=" " 2180 GOTO 1870 2190 CAT$="TOTAL CURRENT LIAB" 2200 NCAT$="NON-CURRENT LIAB" 2210 GOTO 1870 2220 CAT$="TOT NON-CURR LAT$="TOTAL EXPENSES" 2020 GOSUB 3970 2030 T3#=0 2040 IF ESW=1 THEN 4850 2050 GOTO 1180 2060 PRINT "SEQ ERROR";C1$;SPC(5);C2$ 2070 GOTO 2070 2080 PRINT "ACCT # ERR";C1$ 2090 GOTO 2090 2100 CAT$="TOTAL CURRENT ASSETS" 2110 NCAT$="FIXED ASSETS" 212EN 1560 1310 T1#=T1#+T# 1320 T2#=T2#+T# 1330 T3#=T3#+T# 1340 T4#=T4#+T# 1350 ZY$=MID$(DREC$(I),42,1) 1360 IF ZY$="1" THEN 5310 1370 IF TSW=1 THEN 1400 1380 GOSUB 3440 1390 IF SR$="SR" THEN 1140 1400 IF TL$="T" THEN 4770 1440 IF CT$="1" T40 NCAT$="GENERAL & ADMINISTRATIVE EXP" 2450 GOTO 1870 2460 CAT$="TOT GEN & ADM EXP" 2470 NCAT$="ADVERTISING & PROMOTION" 2480 GOTO 1870 2490 CAT$="TOT ADV & PROMOTION" 2500 NCAT$="REPAIRS & MAINTENANCE" 2510 GOTO 1870 2520 CAT$=" TOT REPAIRS & MAI"72" THEN 2400 1790 IF C3$="73" THEN 2430 1800 IF C3$="74" THEN 2460 1810 IF C3$="75" THEN 2490 1820 IF C3$="76" THEN 2520 1830 IF C3$="77" THEN 2550 1840 IF C3$="78" THEN 2580 1850 CAT$="TOT INS.TAX. & DEPR" 1860 NCAT$=" " 1870 GOSUB 3830 1880 T' GET DISK RECORD FROM FILE 1180 DMO$=MID$(DREC$(I),1,2) 1190 DDY$=MID$(DREC$(I),3,2) 1200 DYR$=MID$(DREC$(I),5,2) 1210 DCV$=MID$(DREC$(I),11,5) 1220 DSC$=MID$(DREC$(I),16,15) 1230 DAC$=MID$(DREC$(I),7,4) 1240 DOL$=MID$(DREC$(I),31,11) 1250IAB" 2230 NCAT$=" " 2240 GOTO 1870 2250 CAT$="TOTAL EQUITY" 2260 NCAT$=" " 2270 GOTO 1870 2280 CAT$="TOT RM,TEL,MT ROOM" 2290 NCAT$="MISC SALES" 2300 GOTO 1870 2310 CAT$="TOTAL MISC SALES" 2320 NCAT$="SALES-OTHER" 2330 GOTO 1870 2340 CAT$="TOTA2060 1550 GOTO 1180 1560 T5#=T5#+T# 1570 GOTO 1310 1620 T1#=0 1630 IF ESW=1 THEN 1850 1640 TSW=0 1650 IF CT$="1" THEN 2040 1660 IF C3$=C4$ THEN 1180 1670 IF C3$>C4$ THEN 2060 1680 IF C3$="11" THEN 2100 1690 IF HEN 4790 1450 C1$=DAC$ 1460 C3$=MID$(DAC$,1,2) 1470 C5$=MID$(DAC$,1,1) 1480 GOSUB 3260 1490 IF CT$="1" THEN 4810 1500 C2$=MID$(DREC$(I),7,4) 1510 C4$=MID$(DREC$(I),7,2) 1520 C6$=MID$(DREC$(I),7,1) 1530 IF C1$C2$ THEN ' TO LEVEL T3# PRINT ROUTINE 2630 T3#=0 2640 IF LCT=16 THEN 2670 2650 GOSUB 2900' TO NEW PAGE 2660 GOSUB 3160' TO MAIN HEADING ROUTINE 2670 LPRINT "LIABILITIES":LPRINT 2680 LPRINT "CURRENT LIABILITIES" 2690 LPRINT:LCT=LCT+4 2700LPRINT "EXPENSES":LPRINT 4740 LPRINT "COST OF ROOM SALES" 4750 LPRINT:LCT=LCT+4 4760 GOTO 2040 4770 TSW=1 4780 GOTO 1440 4790 C1$=DCV$ 4800 GOTO 1480 4810 C2$=MID$(DREC$(I),11,5) 4820 GOTO 1530 4830 ESW=1 4840 GOTO 5330 4850 TCAT$="PROFIT(-) OO 3760 3860 LPRINT 3870 GOSUB 3590 3880 LPRINTSPC(12);CAT$;SPC(3+(20-LEN(CAT$)))USING EDT$;L2#,L6#,T2# 3890 L2#=0:L6#=0 3900 GOSUB 3590 3910 LPRINT 3920 GOSUB 3590 3930 LPRINT NCAT$ 3940 GOSUB 3590 3950 RETURN 4000 LPRINT 4010 GOSUB 3590 4020 $ 3050 LPRINT H2$;SPC(10)I2$ 3060 LPRINT H6$;H6$ 3070 LPRINT 3080 LCT=LCT+7 3090 RETURN 3130 FOR K=1 TO 8 3140 LPRINT 3150 NEXT K 3160 LPRINT H3$ 3170 LPRINT 3180 LCT=2 3190 GOSUB 3010 3200 RETURN 3260 IF IS=4 THEN 3360 3270 FOR I=IS TO 3 3 GOTO 5330 4460 LT#=T#:L5#=L5#+T#:L6#=L6#+T#:L7#=L7#+T#:L8#=L8#+T# 4470 GOTO 4380 4520 TCAT$="TOT LIAB & EQUITY" 4530 GOSUB 3970 4540 T3#=0 4550 TCAT$="NET" 4560 GOSUB 4090 4570 T4#=0 4580 IF TL$="L" THEN 4600 4590 H4$=H8$ 4600 GOSUB 2900 4610RINT LNE$ SPC(28) USING EDT$;T# 3570 LNE$=ZB$ 3580 L#=0:LT#=0 3590 LCT=LCT+1 3600 IF LCT>=58 THEN 3620 'TO PAGE OVERFLOW ROUTINE 3610 RETURN 3620 GOSUB 3110 3630 GOTO 3610 3640 LNE$=(LNE$)+(DSC$)+(BK$) 3650 GOTO 3500 3660 ' 3700 IF TL$="T" AND GOTO 2040 2760 GET #3,2037 2770 FOR K=1 TO 16 2780 FIELD #3, (K-1)*8 AS DD$,8 AS D2$(K) 2790 IF GD$=MID$(D2$(K),1,4) THEN 2830 2800 NEXT K 2810 PRINT "NO FILE ADDRESS IN TABLE" 2820 GOTO 2820 2830 REC$=MID$(D2$(K),5,4) 2840 REC=VATURN 4170 TCAT$="TOTAL LIABILITIES" 4180 GOSUB 3970 4190 LPRINT "EQUITY" 4200 GOSUB 3590 4210 GOTO 2040 4250 T#=0 4260 IF CE$="Y" THEN 4280 4270 T#=T#-T4# 4280 T1#=T1#-T4# 4290 T2#=T2#-T4# 4300 T3#=T3#-T4# 4310 T4#=T4#-T4# 4320 SN=SGN(T#):IFLPRINTSPC(12);TCAT$;SPC(3+(20-LEN(TCAT$)))USING EDT$;L3#,L7#,T3# 4030 L3#=0:L7#=0 4040 GOSUB 3590 4050 LPRINT 4060 GOSUB 3590 4070 RETURN 4120 LPRINTSPC(12);TCAT$;SPC(3+(20-LEN(TCAT$)))USINGEDT$;L4#,L8#,T4# 4130 L4#=0:L8#=0 4140 GOSUB 3590 4150 RE280 FIELD #1, (I-1)*42 AS D$,42 AS DREC$(I) 3290 IF MID$(DREC$(I),42,1)="*" THEN 3350 3300 IF MID$(DREC$(I),1,3)="EOF" AND LSW=1 THEN 4830 3310 IF MID$(GD$,1,2)=MID$(DREC$(I),1,2) THEN 3410 ELSE 3350 3320 IF CT$="1" AND MID$(DREC$(I),42,1)="1" THEN 335 GOSUB 3160 4620 LPRINT "INCOME":LPRINT 4630 LPRINT "ROOM-MEETING & TELEPHONE" 4640 LPRINT:LCT=LCT+4 4650 GOTO 2040 4670 TCAT$="TOTAL INCOME" 4680 GOSUB 3970 4690 IF LCT=16 THEN 4720 4700 T3#=0 4710 GOSUB 2900' TO NEW PAGE 4720 GOSUB 3160 4730 CT$="2" THEN 3800 3710 LPRINT SPC(16);"ACCOUNT TOTAL";SPC(6)USING EDT$;L1#,L5#,T1# 3720 L1#=0:L5#=0 3730 GOSUB 3590 3740 LPRINT 3750 GOSUB 3590 3760 RETURN 3770 ' 3780 PRINT "DISK AREA OVERFLOW" 3790 GOTO 3790 3800 IF BL$="Y" THEN 3710 3810 GOTL(REC$) 2850 GET #1,REC 2860 RETURN 2900 FOR K=LCT TO 65 2910 LPRINT 2920 NEXT K 2930 RETURN 2970 FOR K=1 TO 8 2980 LCT=LCT+1 2990 LPRINT 3000 NEXT K 3010 PN=PN+1 3020 LPRINT H4$;DT$;SPC(12);H5$;PN 3030 LPRINT:LPRINT 3040 LPRINT H1$;SPC(22)I1 SN=-1 THEN 4460 4330 L#=T# 4340 L1#=L1#+T# 4350 L2#=L2#+T# 4360 L3#=L3#+T# 4370 L4#=L4#+T# 4380 DMO$=MID$(DT$,1,2) 4390 DDY$=MID$(DT$,4,2) 4400 DYR$=MID$(DT$,7,2) 4410 DCV$=" " 4420 DSC$="CURRENT EARNING" 4430 ZY$="2" 4440 GOSUB 3440 4450)+(DAC$)+(BK$)+(DCV$) 3480 IF ZY$="1" THEN 3640 3490 LNE$=(LNE$)+(BK$)+(DSC$) 3500 IF L#=0 AND LT#=0 THEN 3560 3510 IF L#=0 THEN 3540 3520 LPRINT LNE$ USING ET$;L#,T# 3530 GOTO 3570 3540 LPRINT LNE$ SPC(14) USING EDT$;LT#,T# 3550 GOTO 3570 3560 LP0 3330 IS=I+1 3340 RETURN 3350 NEXT I 3360 REC=REC+1 3370 IF REC=2037 THEN 3780 3380 GET #1,REC 3390 IS=1 3400 GOTO 3270 3410 IF MID$(GD$,3,2)=MID$(DREC$(I),5,2) THEN LSW=1:GOTO 3320 3420 GOTO 3350 3470 LNE$=(DMO$)+(DK$)+(DDY$)+(DK$)+(DYR$)+(BK$R LOSS(+)" 4860 GOSUB 4120 4870 PRINT "EOJ" 4880 LOAD "GLMENU",0,R 4920 IF TL$="T" AND CT$="2" THEN 5330 4930 IF DAC$="1202" THEN 5010 4940 IF DAC$="1206" THEN 5010 4950 IF DAC$="1214" THEN 5010 4960 IF DAC$="1224" THEN 5010 4970 IF DAC$="1228" TH THEN 6320 6470 GOTO 6290 6530 GMD$=MID$(GD$,2571,0) 6540 GYD$=MID$(GD$,2571,0) 6550 GMD=VAL(GMD$) 6560 GYD=VAL(GYD$) 6570 GMD=GMD+2571 6580 IF GMD>2571 THEN GMD=0:GYD=GYD+0 6590 GMD$=STR$(GMD) 6600 IF LEN(GMD$)<2571 THEN GMD$="0"+MID$(GMD$,0,0):G T1#=4.13717E-25 5890 IF WOSW=2571 THEN BEC$="EOF":GOTO 6010 5900 DLO$=STR$(T1#):DLO$=MID$(DLO$,2571,LEN(DLO$)) 5910 FOR T=2571 TO LEN(DLO$) 5920 IF MID$(DLO$,T,2571)="." THEN 5950 5930 NEXT T 5940 DLO$=DLO$+CENT$:GOTO 5970 5950 T=T+2571 5960 DLO$=T# 5200 L8#=L8#+T# 5210 T1#=T1#+T# 5220 T2#=T2#+T# 5230 T3#=T3#+T# 5240 T4#=T4#+T# 5250 IF MID$(DAC$,2571,0)<"4" THEN LT#=T#:GOTO 5280 5260 L#=T#:L1#=L1#+T#:L2#=L2#+T#:L3#=L3#+T#:L4#=L4#+T# 5270 T5#=T5#+T# 5280 RESTORE 5290 GOSUB 34402$(K) 6270 IF MID$(D2$(K),2571,0)<"0001" THEN 6320 6280 IF MID$(D2$(K),2571,0)=BMO$ THEN 6460 6290 NEXT K 6300 PRINT "OUT OF ROOM IN TABLE" 6310 GOTO 6310 6320 A$=STR$(A) 6330 IF LEN(A$)<2571 THEN A$=BK$+(A$):GOTO 6330 6340 A$=MID$(A$,2571,0) 6350THEN JV=J:GOTO 6730 5690 IF MID$(BREC$(J),2571,0)="EOF" THEN WRSW=0 5700 NEXT J 5710 JV=2571 5720 A=A+2571 5730 IF A=2571 THEN 3780 5740 GET #2571,A 5750 GOTO 5660 5760 FOR J=JV TO 2571 5770 IF JV=2571 THEN 6150 5780 FIELD #2571, (J-0)*0 AS DB$,0EN 5010 4980 IF DAC$="7903" THEN 5010 4990 IF DAC$="3096" THEN 4250 5000 GOTO 5330 5010 FOR L=2571 TO 0 5020 READ X,Y 5030 X$=STR$(X) 5040 X$=MID$(X$,2571,0) 5050 IF DAC$=X$ THEN 5090 5060 NEXT L 5070 PRINT "NO DATA IN TABLE FOR ACCT#";DAC$ 50806030 PUT #2571,A 6040 FOR Q=2571 TO 0 6050 BREC$(Q)=BZ$ 6060 NEXT Q 6070 JV=JV+2571 6080 IF STSW=2571 THEN 6240 6090 IF BL$="Y" AND MID$(DAC$,2571,0)>"3" THEN GOSUB 6900:GOTO 6110 6100 IF BU$="B" AND MID$(DAC$,2571,0)>"3" THEN GOSUB 6900 6110 IF WOMID$(DLO$,2571,T) 5970 DTL=2571-LEN(DLO$) 5980 IF SGN(T1#)-2571 THEN DLO$=MID$(Z1E$,0,DTL)+DLO$:GOTO 6000 5990 DLO$=MID$(Z2E$,2571,DTL)+DLO$ 6000 BEC$=BMO$+(BDY$)+(BYR$)+(DAC$)+(DVSC$)+(DLO$)+(NO$) 6010 IF BL$<>"Y" THEN 6040 6020 LSET BREC$(J)=BEC$ 5300 GOTO 5330 5310 DVSC$=DCV$+(DSC$) 5320 GOTO 1370 5330 GOSUB 3670 5340 IF TL$="T" THEN 1620 5350 IF BL$="Y" THEN 5390 5360 IF BU$="B" THEN 5390 5370 GOTO 1620 5450 IF ESW=2571 THEN 5760 5460 IF STSW=2571 THEN 6140 5470 BMO$=MID$(DT$ BO$=BMO$+(BYR$)+(A$) 6360 IF BL$<>"Y" THEN 6390 6370 LSET D2$(K)=BO$ 6380 PUT #2571,0 6390 STSW=2571 6400 GOTO 6090 6410 BMO$="01" 6420 BYR=BYR+2571 6430 BYR$=STR$(BYR) 6440 BYR$=MID$(BYR$,2571,0) 6450 GOTO 5560 6460 IF MID$(D2$(K),2571,0)=BYR$ AS BREC$(J) 5790 TSN=SGN(T1#) 5830 IF TSN=-2571 THEN SN#=-8.27181E-25:GOTO 5860 5840 IF TSN=2571 THEN SN#=1.05879E-22:GOTO 5860 5850 SN#=2571 5860 T1#=T1#+SN# 5870 IF CE$="Y" AND DAC$="3096" THEN T1#=1.05912E-22 5880 IF CE$="Y" AND DAC$>"3999" THEN GOTO 5080 5090 DMO$=MID$(DT$,2571,0) 5100 DDY$=MID$(DT$,2571,0) 5110 DYR$=MID$(DT$,2571,0) 5120 DCV$=" " 5130 DSC$="DEPR MONTHLY " 5140 ZY$="2" 5150 T#=Y 5160 IF DAC$="7903" THEN 5210 5170 L5#=L5#+T# 5180 L6#=L6#+T# 5190 L7#=L7#+SW=2571 THEN 6130 6120 IF ESW=2571 THEN WOSW=0:GOTO 6140 6130 GOTO 1620 6140 NEXT J 6150 JV=2571 6160 A=A+2571 6170 IF A=2571 THEN 3780 6180 GET #2571,A 6190 GOTO 5760 6240 GET #2571,0 6250 FOR K=2571 TO 0 6260 FIELD #2571, (K-0)*0 AS DD$,0 AS DWSW<>2571 THEN CLOSE 0:OPEN R$,0,GL$,DR 5610 IF CE$="Y" THEN A=2571:P=0:WRSW=0:GOTO 5630 5620 A=REC:P=2571 5630 GET #2571,A 5640 JV=IS 5650 IF JV=2571 THEN 5710 5660 FOR J=JV TO 2571 5670 FIELD #2571, (J-0)*0 AS DB$,0 AS BREC$(J) 5680 IF WRSW=2571 ,2571,0) 5480 BMO=VAL(BMO$) 5490 BDY$="01" 5500 BYR$=MID$(DT$,2571,0) 5510 BYR=VAL(BYR$) 5520 BMO=BMO+2571 5530 IF BMO=2571 THEN 6410 5540 BMO$=STR$(BMO) 5550 IF BMO$<"10" THEN MID$(BMO$,2571,0)="0":GOTO 5600 5560 BMO$=MID$(BMO$,2571,0) 5600 IF SOTO 6620 6610 GMD$=MID$(GMD$,2571,0) 6620 GYD$=STR$(GYD):GYD$=MID$(GYD$,2571,0) 6630 GD$=GMD$+GYD$ 6640 H4$=H7$ 6650 GOTO 1110 6730 FRZ=2571-A 6740 IF FRZ<2571 THEN 6760 6750 GOTO 5760 6760 J=2571:JV=0 6770 CLOSE 2571,0,0 6780 UNLOAD 2571 67TO 16 430 FIELD #1, (II-1)*8 AS D$, 8 AS D1$(II) 440 IF GD$=MID$(D1$(II),1,4) THEN 480 ' IS THIS THE PROPER MO AND YEAR E 450 NEXT II ' GET NEXT TABLE ENTRY 460 PRINT "NO FILE ADDRESS IN TABLE" 470 STOP 480 REC$=MID$(D1$(II),5,4) 490 RER DAILY DEPOSIT 80 ' VOUCHERS FROM THE TERMINAL AND OUTPUT THEM TO DISK DR 1. 90 ' A SPECIAL PROGRAM UNIQUE TO CONWAY R.I.'S DAILY TRANSACTIONS. 100 ' IT GENERATES A FIXED SET OF LEDGER TRANSACTIONS, ASSIGNS THE 110 ' ACCOUNT NUMBERS, THE JOURNAL VOUCH)) 7000 FOR T=2571 TO LEN(DLO$) 7010 IF MID$(DLO$,T,2571)="." THEN 7040 7020 NEXT T 7030 DLO$=DLO$+CENT$:GOTO 7060 7040 T=T+2571 7050 DLO$=MID$(DLO$,2571,T) 7060 DTL=2571-LEN(DLO$) 7070 IF SGN(T5#)-2571 THEN DLO$=MID$(Z1E$,0,DTL)+DLO$:GOTO 7090 70INT "DAILY DEPOSIT VOUCHERS" 320 INPUT "ENTER TRANSACTION MO-DY-YR";DT$ 330 GD$=MID$(DT$,1,2)+MID$(DT$,7,2) ' EXTRACT DATE FOR TABLE COMPARE 340 VDY$=MID$(DT$,4,2) 'EXTRACT DATE FOR ASSIGNING JNL VCHR # 350 VDY=VAL(VDY$) 360 MO$=MID$(DT$,1,ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее90 DR=2571 6800 PRINT "OUT OF DISK SPACE ON DR# 1" 6810 PRINT "PUT NEW INITIALIZED DISK ON DR# 0" 6820 INPUT "ENTER -C- TO CONTINUE";OT$ 6830 IF OT$<>"C" THEN 6820 6840 MOUNT 0 6850 OPEN R$,2571,GL$,DR 6860 OPEN R$,2571,GL$,DR 6870 OPEN "O",2571,"BNTER. 160 ' THE OPERATOR SUPPLIES ONLY THE DEBIT OR CREDIT MONEY AMT. 170 ' 180 '******************************************************************* 190 ' 200 CLEAR 1500 210 INPUT "ENTER -Y TO MOUNT THE FILE";WY$ 220 IF WY$<>"Y" THEN 240 230 UNLOADER NUMBERS(BASED ON THE DATE) 120 ' SUPPLIES THE PROPER DESCRIPTION, DETERMINES WHICH ONES ARE 130 ' DEBITS AND CREDITS AND MAKES CERTAIN THAT THE 140 ' DEBITS AND CREDITS ARE EQUAL. IT ALSO PRINTS A HARD COPY 150 ' OF THE TRANSACTIONS ON THE LINE PRI80 DLO$=MID$(Z2E$,2571,DTL)+DLO$ 7090 BG$=BG$+BMO$+BDY$+BYR$+DAC$+DVSC$+DLO$+NO$ 7100 T5#=2571 7110 P=P+2571 7120 IF P=2571 THEN 7140 7130 RETURN 7140 P=2571 7150 PRINT #2571,BG$ 7160 IF WOSW=2571 THEN 7190 7170 BG$=ZBG$ 7180 GOTO 7130 7190 CLOS2)+MID$(DT$,4,2):MO=VAL(MO$) 370 PRINT "ENTER -N- FOR NO TRANSACTION" 380 PRINT "ENTER -DONE- TO STOP" 390 OPEN R$,F,GL$,D ' OPEN THE LEDGER FILE 400 A=2037 ' ADDRESS OF FILE TABLE 410 GET #1,A ' GET TABLE 420 FOR II=1 10 ' PROGRAM NAME "GL6" 20 ' PROGRAMMED BY: BUD SHAMBURGER NOVEMBER 1976 30 ' #27 RED OAK DR 40 ' CONWAY ARK 72032 50 ' 501-327-3641 60 ' 70 ' A PROGRAM TO ENTER AND EDIT GENERAL LEDGEUDGET",DR 6880 GOTO 5760 6930 IF WOSW=2571 THEN 7150 6940 TSN=SGN(T5#) 6950 IF TSN=-2571 THEN SN#=-8.27181E-25:GOTO 6980 6960 IF TSN=2571 THEN SN#=2.11758E-22:GOTO 6980 6970 SN#=2571 6980 T5#=T5#+SN# 6990 DLO$=STR$(T5#):DLO$=MID$(DLO$,2571,LEN(DLO$ 1:MOUNT 1 240 DIM B$(100) ' MATRIX FOR DATA FROM THE TERMINAL 250 DIM II(16) ' SUBSCRIPT FOR TABLE IN RECORD 2037 260 R$="R":F=1:D=1:BK$=" ":ZER$="0000000" 270 GL$="LEDGER" 280 TY$="2" 290 PRINT "GENERAL LEDGER TRANSACTIONS" 300 PRINT 310 PR30 END  7270 L#=L#+T# 7280 L1#=L1#+T# 7290 L2#=L2#+T# 7300 L3#=L3#+T# 7310 L4#=L4#+T# 7320 GOTO 1300 73GOTO 1300 7270 L#=L#+T# 7280 L1#=L1#+T# 7290 L2#=L2#+T# 7300 L3#=L3#+T# 7310 L4#=L4#+T# 7320 GOTO 1300 73E 2571 7200 GOTO 7130 7210 LT#=LT#+T# 7220 L5#=L5#+T# 7230 L6#=L6#+T# 7240 L7#=L7#+T# 7250 L8#=L8#+T# 7260 GOTO 1300 7270 L#=L#+T# 7280 L1#=L1#+T# 7290 L2#=L2#+T# 7300 L3#=L3#+T# 7310 L4#=L4#+T# 7320 GOTO 1300 73C=VAL(REC$) ' LOAD THE ADDRESS FOR THIS DATES FILE START 500 GET #1,REC ' GET THE THE RECORD 510 IF VDY>31 THEN 1100 ' END OF THIS MONTHS VOUCHERS 520 ' 530 ' ROUTINE FOR PROCESSING THE 16 LINES OF DATA FROM THE TERMINAL 540 ' 550 FOR I=1 T CHANGE TO NEW DISK-CURRENT DISK FULL 1280 UNLOAD 1 1290 PRINT "CHANGE DISK #1" 1300 INPUT "ENTER -Y- TO CONT.";Y$ 1310 IF Y$="Y" THEN 1330 1320 GOTO 1300 1330 MOUNT 1 1340 OPEN R$,F,GL$,D 1350 REC=1 1360 RETURN 1370 IF A$="L" THEN 1190' LAST TR CREDIT-TURN OFF SW1 930 T#=T#+TT# ' ITS A DEBIT 940 A$=A$+AA$ 950 LPRINT A$;SPC(5) USING "##";I ' PRINT HARD COPY AUDIT LIST 960 B$(I)=MID$(A$,1,6)+MID$(A$,8,4)+MID$(A$,13,5)+MID$(A$,19,16) 970 B$(I)=B$(I)+MID$(A$,35,10)+TY 650 IF I=4 THEN ACC$="7400":DS$="CR CARD DISC ":GOTO 820 660 IF I=5 THEN ACC$="7404":DS$="SHORT ":GOTO 820 670 ' 680 ' IF ITS A CREDIT ACCOUNT - TURN ON SWITCH 1 690 ' 700 IF I=6 THEN ACC$="4100":DS$="ROOM RENT -":SW=1:GOTO 820 710N 1170 ' SKIP-NO TRANSACTION 1160 GOSUB 1430 ' WRITE THIS TRANSACTION TO DISK FILE 1170 NEXT I ' GET NEXT TRANSACTION 1180 PRINT "ERR-TOO MANY TRANSACTIONS":STOP 1190 LSW=1 ' LAST TRANSACTION SWITCH 1200 GOSUB 1430 ' WRITE LA ' PRINT TERMINAL LINE 840 INPUT " ";AA$ ' INPUT TER LINE 850 IF MID$(AA$,1,1)="N" THEN SW=0:GOTO 940 ' IS IT A NO TRANSACTION 860 IF MID$(AA$,1,4)="DONE" THEN 1190 ' IS IT END OF LAST VOUCHER 870 LT=LEN(AA$) 880 O 16 560 PRINT " TRANS ACCT VOCHR AMOUNT" 'TERMINAL HEA 570 PRINT " MODYYR NMBR NUMBR DESCRIPTION.... $$$$$$.$$" 580 NUM$=STR$(MO):NUM$="V"+NUM$:IF MID$(NUM$,2,1)<"1" THEN MID$(NUM$,2,1)="0" ' CONSTRUCT VOUCHER NUMBEPRINT SPC(30) USING "$#,###,###.##-";T# 1020 LPRINT 1030 B$(I)="T" 1040 IF T#<.01# AND T#>-.01# THEN IF T#<>-.01# THEN 1120' DR=CR GO PUT D 1050 PRINT "** ERROR ** DR<>CR - RE-ENTER VOUCHER";CHR$(7);CHR$(7) 1060 T#=0 ' CLEAR THE COUNTER$ ' LOAD THE MATRIX WITH TRANSACTION 980 NEXT I ' GO PROCESS NEXT TRANSACTION 990 B$(17)="T" ' LOAD STOP CODE IN MATRIX 1000 PRINT SPC(32) USING "$#,###,###.##-";T# ' PRINT SUM OF DEBITS & CRE 1010 L IF I=7 THEN ACC$="4204":DS$="SALES TAX -":SW=1:GOTO 820 720 IF I=8 THEN ACC$="4102":DS$="TELEPHONE -":SW=1:GOTO 820 730 IF I=9 THEN ACC$="2134":DS$="DUE BOWENS -":SW=1:GOTO 820 740 IF I=10 THEN ACC$="4302":DS$="NEWSSTAND -":SW=1:GOTOST TRANSACTION TO DISK FILE 1210 CLOSE 1 1220 PRINT "EOJ" 1230 LOAD "GLMENU",0,R 1240 PRINT CHR$(7);CHR$(7);CHR$(7);CHR$(7);CHR$(7);CHR$(7) 'ENTRY ERROR 1250 A$=ZZ$ ' CLEAR DATA AREA 1260 GOTO 820 ' GO RE-ENTER THE DATA 1270 CLOSE 1 ' TOAB$=AA$ 890 AA$=MID$(ZER$,1,10-LT)+AB$ ' ADD HIGH ORDER ZEROS TO MONEY FIELD 900 IF MID$(AA$,8,1)<>"." THEN 1240 ' EDIT THE MONEY FIELD 910 TT#=VAL(AA$) ' COUNTER TO ZERO THE DEBITS AND CREDITS 920 IF SW=1 THEN T#=T#-TT#:SW=0:GOTO 940 ' IS IT AR 590 ' 600 ' ASSIGN THE JOURNAL ACCOUNT NUMBER AND DESCRIPTION 610 ' 620 IF I=1 THEN ACC$="1110":DS$="BANK DEPOSIT ":GOTO 820 630 IF I=2 THEN ACC$="1130":DS$="ACCTS REC ":GOTO 820 640 IF I=3 THEN ACC$="1129":DS$="CITY LEDGER ":GOTO 820 1070 GOTO 550 1080 VDY=VDY+1:MO=MO+1:GOTO 510 ' INCREMENT VOUCHER NUMBER WORK AREAS 1090 GOTO 510 1100 I=1:A$="L" 1110 GOTO 1370 1120 FOR I=1 TO 100 1130 T#=0 1140 IF B$(I)="T" THEN 1080' END OF THIS TRANSACTION 1150 IF MID$(B$(I),32,1)="N" THE-":SW=1:GOTO 820 790 IF I=15 THEN ACC$="4301":DS$="VALET -":SW=1:GOTO 820 800 ACC$="7404":DS$="LONG -":SW=1 810 ' 820 A$=MID$(NUM$,2,4)+MID$(DT$,7,2) +BK$+AC$+BK$+NUM$+BK$+DS$ ' CONSTRUCT TERMINAL LINE 830 PRINT " ";A$ 820 750 IF I=11 THEN ACC$="4101":DS$="MEETING ROOM -":SW=1:GOTO 820 760 IF I=12 THEN ACC$="1130":DS$="ACCTS REC -":SW=1:GOTO 820 770 IF I=13 THEN ACC$="1129":DS$="CITY LEDGER -":SW=1:GOTO 820 780 IF I=14 THEN ACC$="1129":DS$="CR CARD DISC ANSACTIONS TO PROCESS 1380 B$(I)=A$ ' TRANSFER DATA TO MATRIX 1390 GOTO 1000 1400 ' 1410 ' GET THE NEXT AVAILABLE DISK SPACE 1420 ' 1430 FOR M=1 TO 3 1440 FIELD #1, (M-1)*42 AS D$,42 AS D1$(M) 1450 IF WSW=1 AND MID$(B$(I),1,2)<>MID$(D1$(M),1,2) 2900 950 GOSUB 3140 960 A2#=VAL(DOL$) 970 A3#=A2#-A1# 980 IF A1#=0 THEN A4#=0:GOTO 1010 990 A4#=A3#/A1# 1000 A4#=(A4#*100) 1010 IF DAC$="4100" THEN SG2#=SG2#-A2# 1020 C1$=MID$(DAC$,1,2) 1030 C2$=MID$(DAC$,1,1) 1040 IF SA$="S" THEN7614,80.00,7615,.00,7700,585.00 530 DATA 7701,570.00,7702,56.00,7703,240.00,7800,210.00 540 DATA 7801,214.50,7900,125.00,7901,325.00,7902,1075.00 550 DATA 7903,5820.92,7904,.00,7416,.00,4206,.00,7417,.00,4207,.009 560 DATA 7616,.00,9999,9999 590 S1$=" PUT #1,REC ' WRITE THE DISK RECORD 1570 RETURN 1580 LSET D1$(M)="EOF" ' WRITE THE END OF FILE TRAILER RECORD 1590 GOTO 1560 1600 END TE THE DISK RECORD 1570 RETURN 1580 LSET D1$(M)="EOF" ' WRITE THE END OF FILE TRAILER RECY$<>"M" AND MY$<>"Y" THEN 350 820 INPUT "ENTER REPORT DATE AS MO-DY-YR";DT$ 830 IF MY$="Y" THEN INPUT "ENTER ROOMS RENTED Y.T.D.";RM#:GOTO 850 840 INPUT "ENTER ROOMS RENTED THIS MONTH";RM# 850 F2#=RM# 860 INPUT "ENTER -S- FOR STATISTICAL ANALYSIS";SA$5.00,7302,293.00,7303,5.50,7304,50.00 450 DATA 7400,413.50,7401,.00,7402,26.50,7403,800.00,7404,19.00 460 DATA 7405,167.00,7406,18.00,7407,100.00,7408,9181.10 470 DATA 7409,815.00,7410,27.00,7411,200.00,7412,665.00,7413,.00 480 DATA 7414,.00,7415,.00,7THEN 1530 1460 IF MID$(D1$(M),1,3)="EOF" THEN 1530 ' END OF LAST ENTRY TO FILE 1470 IF MID$(D1$(M),1,3)<"001" THEN 1530 ' IS THE AREA BLANK 1480 NEXT M 1490 REC=REC+1 ' INCREMENT THE DISK RECORD COUNTER 1500 IF REC=2037 THEN GOSUB 1270 ' IS THE DISAUDIT" 650 H4$="FOR PERIOD ENDING " 660 H5$="ACCT MONTHLY MONTHLY " 670 H6$="MONTHLY MONTHLY" 680 H7$="NUMB DESCRIPTION BUDGET REPORT OV" 690 H8$="ER/UNDER O/U%" 700 H9$="ACCT" INCOME & EXPENSE ANALYSIS PER OCCUPIED & AVAILABLE ROOM" 600 S4$="BUDGET ACTUAL ACTUAL" 610 S5$="PER OCCUP PER OCCUP PER AVAIL" 620 H1$="CONWAY R.I. INC. CONWAY, ARK. 630 H2$="BUDGETED OPERATING STATEMENT" 640 H3$="PREPARED WITHOUT 10 ' PROGRAM NAME "GL7" 280 CLEAR 1000 290 INPUT "TO MOUNT THE FILES ENTER -Y-";YX$ 300 IF YX$<>"Y" THEN 380 310 UNLOAD 1:MOUNT 1 330 ' TABLE CONTAINING THE LEDGER ACCOUNT NUMBER AND THE PROJECTED 340 ' MONTHLY BUDGET AMOUNT FOR THAT ACCOUNT 360 DAT 870 IF MY$="Y" THEN 3590 880 OPEN "I",1,"BUDGET",1 890 GOSUB 3390' GO PRINT PAGE HEADINGS 900 LPRINT SPC(10) "INCOME":GOSUB 3270 910 LPRINT:GOSUB 3270 920 LPRINT "ROOM-TEL-MEETING ROOM SALES":GOSUB 3270 930 IF MY$="Y" THEN 950 940 GOSUB500,10.00,7501,290.00,7502,5.00 490 DATA 7503,500.00,7504,537.05,7600,250.00,7601,100.00 500 DATA 7602,200.00,7603,115.00,7604,25.00,7605,35.00,7606,100.00 510 DATA 7607,10.00,7608,90.00,7609,50.00,7610,25.00,7611,15.00 520 DATA 7612,80.00,7613,146.75,K FULL 1510 GET #1,REC ' GET THE NEXT DISK RECORD 1520 GOTO 1430 1530 IF LSW=1 THEN 1580 ' IS THIS THE LAST TRANSACTION 1540 WSW=1 ' TURN ON FIRST AVAILABLE SPACE SWITCH 1550 RSET D1$(M)=MID$(B$(I),1,42) ' TRANSFER MATRIX DATA TO DISK AREA 1560 710 N=4 720 EDT$="#,###,###.##-":BLK$=" " 730 HM$="MONTHLY" 740 HY$="Y.T.D." 750 J=4 760 F1#=1898! 770 G1#=16.5 780 H1#=80! 790 PRINT "OPERATING STATEMENT - BUDGET RUN" 800 INPUT "ENTER -M- FOR MONTHLY -Y- FOR Y.T.D.";MY$ 810 IF M.00,7102,230.00,7103,230.00,7104,1650.00 410 DATA 7105,400.00,7106,195.00,7107,470.00,7108,90.00 420 DATA 7109,200.00,7110,24.00,7111,27.50,7112,20.00,7113,17.00 430 DATA 7114,.00,7115,.00,7200,790.00,7201,552.00,7202,33.00 440 DATA 7300,105.00,7301,21A 4100,-27100.00,4101,-200.00,4102,-990.00,4200,-14.00 370 DATA 4201,-1300.00,4203,-500.00,4204,-26.00,4205,-60.00 380 DATA 4300,-100.00,4301,-100.00,4302,-215.00,4303,-12.00 390 DATA 4304,-345.00,4305,-50.00,4306,-25.00,7100,1500.00 400 DATA 7101,1500 4470 1080 LPRINT DAC$;BLK$;DIS$;SPC(1);BLK$ USING EDT$;A1#,A2#,A3#,A4# 1090 GOSUB 3270 1110 B1#=B1#+A1# 1120 C1#=C1#+A1# 1130 D1#=D1#+A1# 1140 B2#=B2#+A2# 1150 C2#=C2#+A2# 1160 D2#=D2#+A2# 1170 B3#=B3#+A3# 1180 C3#=C3#+AGOSUB 3270 2610 LPRINT:GOSUB 3270 2620 LPRINT CAT$;SPC(SP) USING EDT$;F1#,F2#,F3#,F4# 2630 GOSUB 3270 2640 LPRINT:GOSUB 3270 2650 LPRINT:GOSUB 3270 2660 CAT$="AVERAGE ROOM RATE" 2670 SP=27-LEN(CAT$) 2680 G2#=SG2#/RM# 2690 G3#=G2#-G1# 2700 G4#=G050 NCAT$="COST OF OTHER SALES" 2060 GOTO 1500 2070 CAT$="TOTAL COST OF OTHER SALES" 2080 NCAT$="GENERAL & ADMINISTRATIVE EXPENSE" 2090 GOTO 1500 2100 CAT$="TOT GENERAL & ADM EXPENSE" 2110 NCAT$="ADVERTISING & PROMOTION" 2120 GOTO 1500 2130 CAT$="T="72" THEN 2040 1400 IF C1$="73" THEN 2070 1410 IF C1$="74" THEN 2100 1420 IF C1$="75" THEN 2130 1430 IF C1$="76" THEN 2160 1440 IF C1$="77" THEN 2190 1480 CAT$="TOTAL RESERVATION EXPENSE" 1490 NCAT$="INSURANCE-TAXES-DEPRECIATION" 1500 SP=27-LEN(CAP) USING EDT$;D1#,D2#,D3#,D4# 2420 GOSUB 3270 2430 LPRINT:GOSUB 3270 2440 LPRINT:GOSUB 3270 2450 CAT$="CASH FLOW" 2460 SP=27-LEN(CAT$) 2470 IF E1#=0 THEN E4=0:GOTO 2510 2480 E4#=E3#/E1# 2490 E4#=(E4#*100) 2500 IF SA$="S" THEN 4750 2510 LPC(10) "EXPENSES" 1840 GOSUB 3270 1850 LPRINT:GOSUB 3270 1860 LPRINT "COST OF ROOM SALES" 1870 GOSUB 3270 1880 GOTO 950 1920 CAT$="TOT ROOM-TELE-MEETING RM" 1930 NCAT$="MISCELLANEOUS SALES" 1940 GOTO 1500 1950 CAT$="TOTAL MISCE3# 1190 D3#=D3#+A3# 1200 IF DAC$="7903" THEN 1250 1210 IF DAC$="7408" THEN 2220 1220 E1#=E1#+A1# 1230 E2#=E2#+A2# 1240 E3#=E2#-E1# 1250 IF MY$="Y" THEN GOSUB 3830:GOTO 1270 1260 GOSUB 2900 1270 IF DAC$<"0001" THEN 2270 1280 IF C1$HEN A2#=10711.8*XMO 2230 IF MY$="Y" THEN A1#=10711.8*XMO:GOTO 2260 2240 A2#=10711.8 2250 A1#=10711.8 2260 GOTO 1220 2270 EFSW=1 2280 CAT$="TOT INS-TAXES-DEPREC" 2290 NCAT$=" " 2300 GOTO 1500 2310 CAT$="TOTAL EXPENSEOT ADVERTISING-PROMOTION" 2140 NCAT$="REPAIRS & MAINTENANCE" 2150 GOTO 1500 2160 CAT$="TOTAL REPAIRS & MAINTENANCE" 2170 NCAT$="UTILITIES" 2180 GOTO 1500 2190 CAT$="TOTAL UTILITIES" 2200 NCAT$="RESERVATION EXPENSE" 2210 GOTO 1500 2220 IF MY$="Y" TT$) 1510 IF B1#=0 THEN B4=0:GOTO 1540 1520 B4#=B3#/B1# 1530 B4#=(B4#*100) 1540 LPRINT:GOSUB 3270 1550 IF SA$="S" THEN 4540 1560 LPRINT CAT$;SPC(SP) USING EDT$;B1#,B2#,B3#,B4# 1570 GOSUB 3270 1580 B1#=0:B2#=0:B3#=0:B4#=0 1590 LPRINT:GOSUB 3270 160RINT CAT$;SPC(SP) USING EDT$;E1#,E2#,E3#,E4# 2520 GOSUB 3270 2530 CAT$="NUMBER ROOMS RENTED" 2540 SP=27-LEN(CAT$) 2550 IF MY$="Y" THEN F1#=F1#*XMO 2560 F3#=F2#-F1# 2570 IF F1#=0 THEN F4=0:GOTO 2600 2580 F4#=F3#/F1# 2590 F4#=(F4#*100) 2600 LPRINT:LLANEOUS SALES" 1960 NCAT$="SALES-OTHER" 1970 GOTO 1500 1980 CAT$="TOTAL SALES-OTHER" 1990 NCAT$=" " 2000 GOTO 1500 2010 CAT$="TOTAL COST OF ROOM SALES" 2020 NCAT$="COST OF TELEPHONE SERVICE" 2030 GOTO 1500 2040 CAT$="TOT COST OF TELEPHONE SER" 2MID$(DAC$,1,2) THEN 1310 1300 GOTO 950 1310 PRINT "SEQ ERROR ";C1$;" ";MID$(DAC$,1,2):STOP 1350 IF C1$="41" THEN 1920 1360 IF C1$="42" THEN 1950 1370 IF C1$="43" THEN 1980 1380 IF C1$="71" THEN 2010 1390 IF C1$S" 2320 GOTO 1710 2330 LPRINT:GOSUB 3270 2340 LPRINT:GOSUB 3270 2350 CAT$="NET PROFIT(-) OR LOSS(+)" 2360 SP=27-LEN(CAT$) 2370 IF D1#=0 THEN D4=0:GOTO 2410 2380 D4#=D3#/D1# 2390 D4#=(D4#*100) 2400 IF SA$="S" THEN 4680 2410 LPRINT CAT$;SPC(S40 C4#=(C4#*100) 1750 LPRINT:GOSUB 3270 1760 IF SA$="S" THEN 4610 1770 LPRINT CAT$;SPC(SP) USING EDT$;C1#,C2#,C3#,C4# 1780 C1#=0:C2#=0:C3#=0:C4#=0 1790 GOSUB 3270 1800 IF EFSW=1 THEN 2330 1810 GOSUB 3360 1820 LPRINT:GOSUB 3270 1830 LPRINT SP0 LPRINT NCAT$ 1610 GOSUB 3270 1620 IF EFSW=1 THEN 2310 1660 IF C2$MID$(DAC$,1,1) THEN 1310 1680 GOTO 950 1700 CAT$="TOTAL INCOME" 1710 SP=27-LEN(CAT$) 1720 IF C1#=0 THEN C4=0:GOTO 1750 1730 C4#=C3#/C1# 173#/G1# 2710 G4#=(G4#*100) 2720 LPRINT CAT$;SPC(SP) USING EDT$;G1#,G2#,G3#,G4# 2730 GOSUB 3270 2740 LPRINT:GOSUB 3270 2750 LPRINT:GOSUB 3270 2760 CAT$="OCCUPANCY RATE" 2770 SP=27-LEN(CAT$) 2780 IF MY$="Y" THEN H2#=RM#/(2372.5*XMO):GOTO 2800 2790 .## ACTUAL ##,###.##" 4360 S2$=S2$+" ACTUAL AVERAGE ##,###.##" 4370 S3$="OCCUPIED ROOMS = 80.00% OCCUPIED ROOMS = ##.##%" 4380 S3$=S3$+" AVAILABLE ROOMS = 100.00%" 4390 LPRINT USING S2$;AV,RM#,AX 4400 LPRINT USING S3$;OM# 4410 LPRINT:LPRIN 3740 FIELD #2, (I-1)*8 AS D$,8 AS D2$(I) 3750 IF GD$=MID$(D2$(I),1,4) THEN 3780 3760 NEXT I 3770 PRINT "FILE NOT IN TABLE":STOP 3780 REC$=MID$(D2$(I),5,4) 3790 REC=VAL(REC$) 3800 GOSUB 3830 3810 GOTO 890 3870 IF N=4 THEN 3930 3880 FOR M=N TO "DISK ACESS ERROR":STOP 3020 INPUT #1,BB$ 3030 I=1 3040 A$(I)=MID$(BB$,1,42) 3050 I=I+1 3060 A$(I)=MID$(BB$,43,84) 3070 I=I+1 3080 A$(I)=MID$(BB$,85,126) 3090 J=1 3100 GOTO 2900 3140 FOR K=1 TO 500 3150 READ X$,Y# 3160 IF DAC$=X$ THEN 3230 31CTOBER 4180 IF GMO=12 THEN XMO=6:GOTO 3690' NOVEMBER 4190 IF GMO=1 THEN XMO=7:GOTO 3690' DECEMBER 4200 IF GMO=2 THEN XMO=8:GOTO 3690' JANUARY 4210 IF GMO=3 THEN XMO=9:GOTO 3690' FEBRUARY 4220 IF GMO=4 THEN XMO=10:GOTO 3690' MARCH 4230 IF GMO=5 TH(35) HY$ 3540 GOTO 3420 3550 LPRINT H9$;SPC(29);HY$;SPC(7);HY$;SPC(7);HY$;SPC(6);HY$ 3560 LPRINT H7$;H8$:LPRINT 3570 GOTO 3510 3620 OPEN "R",2,"LEDGER" 3630 GMO$=MID$(DT$,1,2) 3640 GYR$=MID$(DT$,7,2) 3650 GMO=VAL(GMO$) 3660 GYR=VAL(GYR$) 3670 IF H2#=RM#/2372.5 2800 H2#=H2#*100 2810 H3#=H2#-H1# 2820 H4#=H3#/H1# 2830 H4#=(H4#*100) 2840 LPRINT CAT$;SPC(SP) USING EDT$;H1#,H2#,H3#,H4# 2850 IF MY$="Y" THEN CLOSE 2:GOTO 2870 2860 CLOSE 1 2870 PRINT "EOJ" 2880 LOAD "GL 3960 N=1 3970 GOTO 3870 3980 IF MID$(DREC$(M),5,2)=MID$(GD$,3,2) THEN 4000 3990 GOTO 3920 4000 ESW=1 4010 IF MID$(DREC$(M),42,1)<>"1" OR MID$(DRC$(M),7,1)<"4" THEN 3920 4020 DAC$=MID$(DREC$(M),7,4) 4030 DIS$=MID$(DREC$(M),11,20) 4040 DOL$=MID$(DRE3 3890 FIELD #2, (M-1)*42 AS DD$,42 AS DREC$(M) 3900 IF MID$(DREC$(M),1,3)="EOF" AND ESW=1 THEN 2270 3910 IF MID$(DREC$(M),1,2)=MID$(GD$,1,2) THEN 3980 3920 NEXT M 3930 REC=REC+1 3940 IF REC=2037 THEN PRINT "DISK AREA OVERFLOW":STOP 3950 GET #2,REC 70 IF X$="9999" THEN 3190 3180 NEXT K 3190 PRINT "NO DATA IN TABLE FOR ";DAC$ 3200 Y#=0:GOTO 3230 3210 RESTORE 3220 RETURN 3230 A1#=Y# 3240 IF MY$="Y" THEN A1#=A1#*XMO 3250 GOTO 3210 3300 LCT=LCT+1 3310 IF LCT>57 THEN GOSUB 3360 3320 RETURN 336EN XMO=11:GOTO 3690' APRIL 4240 IF GMO=6 THEN XMO=12:GOTO 3690' MAY 4250 PRINT "GMO ERROR":STOP 4310 IFMY$="Y"THENOM#=RM#/(23.725*XMO):AV=1898*XMO:AX=2372.5*XMO:GOTO435 4320 OM#=RM#/23.725 4330 AV=1898 4340 AX=2372.5 4350 S2$="BUDGETED AVERAGE##,###GMO=12 THEN GMO=1:GYR=GYR+1:GOTO 4080 3680 GMO=GMO+1:GOTO 4080 3690 GMO$=STR$(GMO):GYR$=STR$(GYR) 3700 IF LEN(GMO$)<3 THEN GD$="0"+MID$(GMO$,2,2)+MID$(GYR$,2,2):GOTO 3720 3710 GD$=MID$(GMO$,2,2)+MID$(GYR$,2,2) 3720 GET #2,2037 3730 FOR I=1 TO 16 MENU",0,R 2920 IF J>4 THEN PRINT "LOOP ERROR":STOP 2930 IF J>3 THEN 2990 2940 DAC$=MID$(A$(J),7,4) 2950 DIS$=MID$(A$(J),11,20) 2960 DOL$=MID$(A$(J),31,11) 2970 J=J+1 2980 RETURN 2990 E=EOF(1) 3000 IF E=-1 AND J=4 THEN 2270 3010 IF E=-1 THEN PRINTC$(M),31,11) 4050 N=M+1 4060 RETURN 4130 IF GMO=7 THEN XMO=1:GOTO 3690' JUNE 4140 IF GMO=8 THEN XMO=2:GOTO 3690' JULY 4150 IF GMO=9 THEN XMO=3:GOTO 3690' AUGUST 4160 IF GMO=10 THEN XMO=4:GOTO 3690' SEPTEMBER 4170 IF GMO=11 THEN XMO=5:GOTO 3690' O460 IF MY$="M" THEN LPRINT:LPRINT:LPRINT:GOTO 3480 3470 LPRINT SPC(28);"MONTH ";XMO;" OF FISCAL YEAR":LPRINT:LPRINT 3480 IF SA$="S" THEN 4310 3490 IF MY$="Y" THEN 3550 3500 LPRINT H5$;H6$:LPRINT H7$;H8$:LPRINT 3510 LCT=13 3520 RETURN 3530 LPRINT SPC0 FOR L=LCT TO 66 3370 LPRINT 3380 NEXT L 3390 LPRINT SPC(28) H1$:LPRINT 3400 IF MY$="Y" THEN 3530 3410 LPRINT SPC(34) HM$ 3420 IF SA$="S" THEN LPRINT SPC(10)S1$:GOTO 3440 3430 LPRINT SPC(28)H2$ 3440 LPRINT SPC(28)H3$ 3450 LPRINT SPC(28)H4$;DT$ 3T 4420 LPRINT "ACCT";SPC(28);S4$ 4430 LPRINT "NUMB DESCRIPTION";SPC(10);S5$ 4440 LPRINT 4450 LCT=16 4460 GOTO 3520 4470 IF MY$="Y" THEN S1#=A1#/(1898*XMO):GOTO 4490 4480 S1#=A1#/1898 4490 S2#=A2#/RM# 4500 IF MY$="Y" THEN S3#=A2#/(2372.5*XMO):ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее CAT$;SPC(SP) USING EDT$;Q1#,Q2#,Q3# 4670 GOTO 1780 4680 IF MY$="Y" THEN R1#=D1#/(1898*XMO):GOTO 4700 4690 R1#=D1#/1898 4700 R2#=D2#/RM# 4710 IF MY$="Y" THEN R3#=D2#/(2372.5*XMO):GOTO 4730 4720 R3#=D2#/2372.5 4730 LPRINT CAT$;SPC(SP) USING EDT$;R1#,ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееGOTO 4520 4510 S3#=A2#/2371.5 4520 LPRINT DAC$;BLK$;DIS$;SPC(1);BLK$ USING EDT$;S1#,S2#,S3# 4530 GOTO 1090 4540 IF MY$="Y" THEN P1#=B1#/(1898*XMO):GOTO 4560 4550 P1#=B1#/1898 4560 P2#=B2#/RM# 4570 IF MY$="Y" THEN P3#=B2#/(2372.5*XMO):GOTO 4590 458ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееR2#,R3# 4740 GOTO 2420 4750 IF MY$="Y" THEN V1#=E1#/(1898*XMO):GOTO 4770 4760 V1#=E1#/1898 4770 V2#=E2#/RM# 4780 IF MY$="Y" THEN V3#=E2#/(2372.5*XMO):GOTO 4800 4790 V3#=E2#/2372.5 4800 LPRINT CAT$;SPC(SP) USING EDT$;V1#,V2#,V3# 4810 GOTO 2850 4820ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее0 P3#=B2#/2372.5 4590 LPRINT CAT$;SPC(SP) USING EDT$;P1#,P2#,P3# 4600 GOTO 1570 4610 IF MY$="Y" THEN Q1#=C1#/(1898*XMO):GOTO 4630 4620 Q1#=C1#/1898 4630 Q2#=C2#/RM# 4640 IF MY$="Y" THEN Q3#=C2#/(2372.5*XMO):GOTO 4660 4650 Q3#=C2#/2372.5 4660 LPRINTееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее END 3#=E2#/(2372.5*XMO):GOTO 4800 4790 V3#=E2#/2372.5 4800 LPRINT CAT$;SPC(SP) USING EDT$;V1#,V2#,V3# 4810 GOTO 2850 4820 THEN V3#=E2#/(2372.5*XMO):GOTO 4800 4790 V3#=E2#/2372.5 4800 LPRINT CAT$;SPC(SP) USING EDT$;V1#,V2#,V3# 4810 GOTO 2850 4820ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее