home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug044.ark / G_L010.BAS < prev    next >
BASIC Source File  |  1985-02-10  |  6KB  |  171 lines

  1.  
  2.     REMARK    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  3.     REMARK    +    GENERAL LEDGER DIRECT POSTING ENTRY/PRINT    +
  4.     REMARK    +        VERS. OF 3.00 PM    8/8/79        +
  5.     REMARK    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  6.     DIM G2$(5),G3(5),D(7)
  7. %INCLUDE CURSOR
  8.     GOTO 6000
  9. %INCLUDE SUBS1
  10. %INCLUDE GENINFO
  11. %INCLUDE ACCTFILE
  12. %INCLUDE POSTFILE
  13. %INCLUDE BINSERCH
  14. %INCLUDE G/L-INFO
  15.  
  16.  
  17. 825    IF LINE.COUNT%<55 THEN RETURN                    REMARK    LINE PRINTER ROUTINE
  18.     PAGE.COUNT%=PAGE.COUNT%+1
  19.     PRINT CHR$(12);TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE";
  20.     X0=G3(1):GOSUB 680.5
  21.     PRINT
  22.     PRINT TAB((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE";PAGE.COUNT%
  23.     PRINT
  24.     FOR I%=1 TO 3
  25.     PRINT"ACCOUNT SOURCE DATE     REF     AMOUNT";
  26.     IF I%<3 THEN PRINT">-----<";
  27.     NEXT I%
  28.     PRINT:PRINT
  29.     LINE.COUNT%=6
  30.     RETURN
  31.  
  32.  
  33. 4020    IF EXTERNAL.POSTING.EXTENT% + DIRECT.POSTING.EXTENT% < \    REMARK    STOP PROGRAM IF POSTING FILES ARE FULL
  34.         MAXIMUM.POSTING.RECORDS% THEN RETURN
  35.     PRINT CURSOR.HOME$:PRINT:PRINT"FILE FULL - RUN G/L UPDATE"
  36.     PRINT "KEY <RETURN> TO EXIT"
  37.     X1=148:X2=1:X3=0:X4=0:GOSUB 345
  38.     GOTO 6340
  39.  
  40.  
  41. 5000    X1=335:GOSUB 210                        REMARK    ENTER MONTH AND DAY FOR POSTING DATE FIELD
  42.     PRINT TAB(18)
  43.     A1=0
  44.     X1=336:X2=4:X3=0:X4=9999:GOSUB 345                REMARK    ENTER DATE
  45.     IF X0=0 THEN 5040
  46.     P3=X0/100
  47.     A1=INT(X0/100)                            REMARK    CHECK FOR VALID MONTH
  48.     IF A1<1 OR A1>12 THEN X2$="BAD DATE":GOSUB 615:GOTO 5000
  49.     A1=X0-A1*100                            REMARK    CHECK FOR VALID DAY
  50.     IF A1<1 OR A1>31 THEN X2$="BAD DATE":GOSUB 615:GOTO 5000
  51. 5040    X1=335:GOSUB 210                        REMARK    DISPLAY MONTH/DAY
  52.     PRINT USING "##/##";INT(P3),(P3-INT(P3))*100
  53.     RETURN 
  54.  
  55.  
  56. 5060    X1=398:X2=6:X3=0:X4=999999:GOSUB 345                REMARK    ENTER REFERENCE NUMBER FIELD
  57.     P4=X0
  58.     RETURN 
  59.  
  60.  
  61. 5080    X1=457:X2=11:X3=-9999999.99:X4=9999999.99:GOSUB 345        REMARK    ENTER POSTING FIELD AMOUNT
  62.     P5=X0
  63.     X1=491:GOSUB 210                        REMARK    DISPLAY NEW ACCOUNT BALANCE
  64.     PRINT USING MASKA$;D(1)+P5
  65.     RETURN 
  66.  
  67.  
  68.  
  69. 6000    MASKA$=" #########.##"                        REMARK    START OF MAIN PROGRAM
  70.     MASKB$="#####.#   ##  ##/##  ######-#######.##"
  71.     MASKC$="### TOTAL DIRECT POSTINGS $$#######.##"
  72. 6010    MAXIMUM.POSTING.RECORDS%=3600
  73.     OPEN "G/I0F010.DAT" AS 1,"G/L0F110.DAT" RECL 157 AS 2,\        REMARK    OPEN FILES
  74.     "G/L0F030.DAT" RECL 36 AS 3,\
  75.     "G/L0F130.DAT" AS 5, "CRT" RECL 1100 AS 19
  76.     FILE.NO%=1:GOSUB 700                        REMARK    GET GENERAL INFORMATION FILE
  77.     FILE.NO%=5:GOSUB .314                        REMARK    GET G/L INFORMATION FILE
  78.     GOSUB 4020                            REMARK    CHECK POSTING FILES' RECORD LENGTHS
  79. 6040    P2=3                                REMARK    SET ACCOUNT TYPE FIELD FOR DIRECT POSTINGS
  80.     X0=2:GOSUB 260                            REMARK    LOAD CRT MASK
  81.     X2=1:X3=0:X4=2:X2$="ENTER OPERATION (0=EXIT, 1=POST, 2=PRINT)"    REMARK    REQUEST OPERATION CODE
  82.     GOSUB 665
  83.     ON X0+1 GOTO 6340,6060,6200                    REMARK    BRANCH TO APPROPRIATE PROGRAM AREA
  84.  
  85.  
  86.                                     REMARK    ENTER DIRECT POSTINGS
  87. 6060    X1=264:X2=7:X3=0:X4=99999.9:GOSUB 345                REMARK    ENTER ACCOUNT NUMBER
  88.     P1=X0
  89.     IF X0=0 THEN 6040
  90.     RECORD.COUNT%=ACCOUNT.FILE.EXTENT%
  91.     Y2=2
  92.     K1=P1
  93.     GOSUB 10.60                            REMARK    CHECK ACCOUNT FILE FOR RECORD
  94.     IF H=-1 THEN X2$="NOT ON FILE":GOSUB 615:GOTO 6060
  95.     FILE.NO%=2:RECORD.NO%=L:GOSUB 3500                REMARK    RETREIVE ACCOUNT DATA
  96.     P3=(INT(G3(1)/100))/100                        REMARK  SET POSTING DATE TO TODAY'S DATE
  97.     P4=0:P5=0
  98.     X1=272:GOSUB 210                        REMARK    DISPLAY ACCOUNT DATA
  99.     PRINT L1$;TAB(64)
  100.     GOSUB 5040
  101.     IF L4%=2 THEN X0$="BALANCE SHEET"\
  102.     ELSE X0$="INCOME   STMT"
  103.     X1=348:GOSUB 210
  104.     PRINT X0$;", ";
  105.     IF L5%=2 THEN X0$="CREDIT"\
  106.     ELSE X0$="DEBIT"
  107.     PRINT X0$;" "
  108.     X1=44:GOSUB 215
  109.     PRINT USING MASKA$;D(1)
  110.     GOSUB 5060                            REMARK    ENTER REFERENCE
  111.     GOSUB 5080                            REMARK    ENTER AMOUNT
  112. 6140    X2=1:X3=0:X4=4:X2$="ENTER FIELD TO CHANGE (0=NONE; 4=CANCEL)"    REMARK    ALLOW CHANGES TO ENTRIES
  113.     GOSUB 665
  114.     IF X0=0 THEN 6160
  115.     IF X0=4 THEN X0=2:GOSUB 260:GOTO 6060                REMARK    CANCEL THE POSTING
  116.     ON X0 GOSUB 5000,5060,5080                    REMARK    BRANCH TO CHANGE APPROPRIATE FIELD
  117.     GOTO 6140
  118. 6160    FILE.NO%=3
  119.     RECORD.NO% = DIRECT.POSTING.EXTENT% + 1
  120.     GOSUB 3650                            REMARK    SAVE THE POSTING
  121.     X2$="RECORDED":GOSUB 615
  122.     DIRECT.POSTING.EXTENT% = DIRECT.POSTING.EXTENT% + 1
  123.     CLOSE 5
  124.     OPEN "G/L0F130.DAT" AS 5
  125.     FILE.NO%=5
  126.     GOSUB .315                            REMARK    SAVE NEW EXTENT ON INFORMATION FILE
  127.     GOSUB 4020                            REMARK    CHECK POSTING FILES' RECORD LENGTHS
  128.     X0=2:GOSUB 260                            REMARK    REFRESH CRT MASK
  129.     GOTO 6060
  130.  
  131.  
  132. 6200    N=0:N1=0                            REMARK    PRINT SECTION - INITIALIZE VARIABLES
  133.     H1%=3
  134.     LINE.COUNT%=60
  135.     PAGE.COUNT%=0
  136.     LPRINTER
  137.     X4$="DIRECT GENERAL LEDGER POSTINGS":A1=110
  138.     GOSUB 825
  139.     FILE.NO%=3
  140.     IF DIRECT.POSTING.EXTENT%=0 THEN GOTO 6040            REMARK  CHECK FOR EMPTY FILE
  141.     FOR RECORD.NO%=1 TO DIRECT.POSTING.EXTENT%            REMARK    START PRINT ROUTINE
  142.     GOSUB 3600                            REMARK    RETRIEVE NEXT POSTING
  143.     H1%=H1%+1
  144.     IF H1%=4 THEN\                            REMARK    THREE POSTINGS PRINTED PER LINE.
  145.                                     REMARK    START FOURTH POSTING AT NEW LINE
  146.         PRINT:\
  147.         LINE.COUNT%=LINE.COUNT%+1:\
  148.         X4$="DIRECT GENERAL LEDGER POSTINGS":A1=110:\
  149.         GOSUB 825:H1%=1
  150.     PRINT USING MASKB$;P1,P2,INT(P3),100*(P3-INT(P3)),P4,P5;    REMARK    PRINT POSTING DATA
  151.     IF H1%<3 THEN PRINT">-----<";
  152.     N=N+1
  153.     N1=N1+P5
  154.     NEXT RECORD.NO%
  155.  
  156.     PRINT:PRINT:PRINT TAB(35)
  157.     PRINT USING MASKC$;N,N1                        REMARK    PRINT TOTALS
  158.     GOTO 6040
  159.  
  160.  
  161.  
  162.                                     REMARK    END PROGRAM
  163. 6340    X2=1:X3=0:X4=1:X2$="DO YOU WANT A DIRECT POSTING LISTING?"    REMARK    ENCOURAGE PRINTING ANY POSTINGS JUST ENTERED
  164.     GOSUB 665
  165.     IF X0=1 THEN 6200
  166.     PRINT CLEAR.SCREEN$;"G/L DIRECT POSTING LOADING MENU"
  167.     CHAIN "G/L000"                            REMARK    RELOAD MENU
  168. 
  169.     FILE.NO%=3
  170.     IF DIRECT.POSTING.EXTENT%=0 THEN GOTO 6040            REMARK  CHECK FOR EMPTY FILE
  171.     FOR RECORD.NO%=1 TO DIRECT.POSTING.E