home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / cpmug / cpmug090.ark / GLJOPOST.BAS < prev    next >
BASIC Source File  |  1984-04-29  |  8KB  |  230 lines

  1.      rem This is the General Journal Posting Program
  2.  
  3. %INCLUDE ALL.BAS
  4.      dim n(2,20),k$(3,20)
  5.      first=8:last=18
  6.  
  7. fa$="DATE    /...5../    /...5...10...15...20.../                    "
  8. fa$=fa$+"      PAGE  ####"
  9. fb$="                    *** GENERAL JOURNAL ***"
  10. fb1$="                    -----------------------"
  11. fc$=" REF   #    DATE    DESCRIPTION                 ACCOUNT #"
  12. fc$=fc$+"    AMOUNT      NET"
  13. fd$="########  /...5../  /...5...10...15...20.../ ##########"
  14. fd$=fd$+"  ###,###.##-"
  15. fd1$="          /...5../  /...5...10...15...20.../ ##########"
  16. fd1$=fd1$+"  ###,###.##-"
  17. fd2$="########  /...5../  /...5...10...15...20.../           "
  18. fd2$=fd2$+"  ###,###.##-"
  19. fe$="                                             ##########"
  20. fe$=fe$+"  ###,###.##-"
  21. fe1$="                                             ##########"
  22. fe1$=fe1$+"  ###,###.##- ###,###.##-"
  23. ff$="                              /...5...10...1/"
  24. ff$=ff$+"        ##,###,###.##-*"
  25.  
  26. fg$="DATE    /...5../    /...5...10...15...20.../                    "
  27. fg$=fg$+"      PAGE  ####"
  28. fh$="                    *** GENERAL LEDGER ***"
  29. fh1$="                    ----------------------"
  30. fi$=" ACCOUNT #  DESCRIPTION                       REF #    "
  31. fi$=fi$+"BAL.FWRD.      CURRENT        BALANCE"
  32. fj$="##########  /...5...10...15...20...25...3/         ##,###,###.##-"
  33. fk$="           /.../  /...5...10...15...20.../ ########            "
  34. fk$=fk$+" ##,###,###.##-"
  35. fl$="                                             "
  36. fl$=fl$+"                   ##,###,###.##-* ##,###,###.##-"
  37.  
  38. 1000 PRINT clear$:PRINT
  39. 1002 PRINT "BEFORE PROCEEDING, IT IS A GOOD PRACTICE TO BACK UP"
  40. 1005 PRINT "BOTH THE GENERAL LEDGER FILE AND THE GENERAL JOURNAL FILE"
  41. 1010 PRINT "BY MAKING COPIES USING THE DISKCOPY FACILITY OF YOUR DOS."
  42. 1015 PRINT:PRINT"IF YOU ARE UNFAMILIAR WITH THE PROCESS, ASK YOUR"
  43. 1020 PRINT "SYSTEM SUPERVISOR FOR HELP.":PRINT
  44. 1025 PRINT "IF THIS HAS BEEN DONE; TYPE Y TO CONTINUE!"
  45. 1030 INPUT line temp$
  46. 1035 IF left$(temp$,1)<>"y" and left$(temp$,1)<>"Y" THEN CHAIN "master11"
  47.  
  48. 1540 PRINT clear$:PRINT
  49. 1545 PRINT "PUT THE GENERAL LEDGER DISK IN DRIVE B":PRINT
  50. 1550 PRINT "PUT THE GENERAL JOURNAL DISK IN DRIVE A":PRINT
  51. 1555 PRINT "TYPE RETURN WHEN READY":INPUT line temp$
  52.      initialize
  53. 2000 PRINT clear$:PRINT
  54. 2005 PRINT "LOADING ACCOUNT NUMBER TABLES":PRINT
  55. 2010 PRINT "*** PLEASE WAIT ***"
  56. 2020 open "b:glref" as 1
  57.      read #1;z2
  58.     zn%=z2+2
  59.      dim h(zn%),ref%(zn%)
  60.      for z=1 to z2
  61.      read #1;h(z)
  62.      next z
  63.      close 1
  64. 3070 N(2,1)=8:N(2,2)=24:N(2,3)=24:N(2,4)=1
  65. 4000 REM THIS IS THE ACTUAL POSTING PROGRAM
  66. 4010 open "b:gl" recl 138 as 1
  67.      open "a:gljo" recl 250 as 2
  68. 4015 P9=100:PAGE=0
  69. 4030 GOSUB 20000
  70. 4100 LPRINTER
  71. 4500 I=1
  72. 4505 read #2,i;N(0,1),N(0,2),Q$,N(0,7),N(0,8),N(0,9),\
  73.      N(0,10),N(0,11),N(0,12),N(0,13),N(0,14),N(0,15),N(0,16),\
  74.      N(0,17),N(0,18),N(0,19),FLAG$
  75. 4510 IF N(0,2)=0 THEN GOTO 10000 rem Get out when finished
  76. 4515 IF FLAG$="P" THEN 4540
  77. 4525 IF P9>60 THEN GOSUB 9000
  78. 4530 GOSUB 5000
  79. 4532 IF P9>60 THEN GOSUB 9000
  80. 4534 GOSUB 5100
  81. 4536 IF P9>60 THEN GOSUB 9000
  82. 4540 I=I+1:GOTO 4505
  83. 5000 REM SUBROUTINE TO PAST AND PRINT TOTALS
  84. 5002 IF N(0,2)=0 THEN 5050
  85. 5003 FOR Z4=1 TO Z2
  86. 5004 IF N(0,2)=H(Z4) THEN read #1,z4;n(1,1),n(1,2),r$,n(1,4),n(1,5),\
  87.      n(1,6),n(1,7),n(1,8),n(1,9),n(1,10):goto 5006
  88. 5005 NEXT Z4
  89. 5006 FOR X=4 TO 6:N(1,X)=N(1,X)+N(0,7):NEXT X
  90. 5050 RETURN
  91.  
  92. 5100 NU.LEFT%=0:NU.TRAN%=0:NET.AMT=0
  93.     FOR B=FIRST TO LAST STEP 2
  94.     IF N(0,B)<>0 THEN NU.TRAN%=NU.TRAN%+1:\
  95.     NET.AMT=NET.AMT+N(0,B+1)
  96.     NEXT B
  97. 5110 IF N(0,7)=0 THEN PRINT USING FD2$;N(0,1),LEFT$(Q$,8),\
  98.     MID$(Q$,9,24),N(0,7):P9=P9+1:GOTO 5235
  99. 5115 FOR J=first to last STEP 2
  100. 5120 IF N(0,J)=0 THEN 5220
  101. 5125 FOR Z4=1 TO Z2
  102. 5130 IF N(0,j)=H(Z4) THEN read #1,z4;n(1,1),n(1,2),r$,n(1,4),n(1,5),\
  103.      n(1,6),n(1,7),n(1,8),n(1,9),n(1,10):goto 5140
  104. 5135 NEXT Z4
  105. 5140 IF NU.TRAN%>1 THEN GOSUB 5400 ELSE GOTO 5142
  106.     GOTO 5145
  107. 5142 PRINT USING FD$;N(0,1),LEFT$(Q$,8),MID$(Q$,9,24),N(0,J),N(0,J+1)
  108. 5145 P9=P9+1
  109. 5170 FOR X=4 TO 6:N(1,X)=N(1,X)+N(0,J+1):NEXT X
  110. 5220 NEXT J
  111. 5225 IF N(0,7)=0 THEN PRINT USING FD2$;N(0,1),LEFT$(Q$,8),\
  112.       MID$(Q$,9,24),N(0,7):P9=P9+1
  113. 5235 RETURN
  114. 5400 IF NU.LEFT%=1 THEN PRINT USING FE1$;N(0,J),N(0,J+1),NET.AMT:\
  115.     NU.LEFT%=NU.LEFT%-1:RETURN
  116. 5420 IF NU.LEFT%>1 THEN PRINT USING FE$;N(0,J),N(0,J+1):\
  117.     NU.LEFT%=NU.LEFT%-1:RETURN
  118. 5430 PRINT USING FD$;N(0,1),LEFT$(Q$,8),MID$(Q$,9,24),\
  119.     N(0,J),N(0,J+1):NU.LEFT%=NU.TRAN%-1
  120. 5440 RETURN
  121.  
  122. 9000 P9=0:PAGE=PAGE+1
  123. 9005 PRINT CHR$(12)
  124. 9010 PRINT USING FA$;D$(4),MID$(CO.NAME$,25,24),PAGE
  125. 9015 PRINT FB$
  126. 9020 PRINT FB1$
  127. 9025 PRINT FC$
  128. 9030 PRINT:P9=P9+6
  129. 9095 RETURN
  130. 10000 dr$="TOTAL DEBITS":cr$="TOTAL CREDITS"
  131. 10010 PRINT USING FF$;dr$,DEBIT
  132. 10020 PRINT USING FF$;cr$,CREDIT
  133. 10030 GOSUB 30000
  134. 10040 console
  135. 10050 CLOSE 1:CLOSE 2
  136. 10100 PRINT "PUT DISK #1 BACK IN DRIVE A - TYPE <cr> TO CONTINUE"
  137. 10105 INPUT line temp$
  138.     if size("master11.int")<1 then 10100
  139. 10110    lprinter
  140. 10115 print chr$(12):for z=1 to 100:next z:print chr$(12) 
  141. 10120    console
  142. 10195 chain"master11"
  143. 20000 console:PRINT clear$:PRINT
  144. 20010 PRINT "*** VALIDATING ACCOUNT NUMBERS ***"
  145. 20020 PRINT:PRINT "PLEASE WAIT"
  146. 20030 I=1
  147. 20040 read #2,i;N(0,1),N(0,2),Q$,N(0,7),N(0,8),N(0,9),\
  148.      N(0,10),N(0,11),N(0,12),N(0,13),N(0,14),N(0,15),N(0,16),\
  149.      N(0,17),N(0,18),N(0,19),FLAG$
  150. 20050 IF N(0,2)=0 THEN 29975
  151. 20055 IF FLAG$="P" THEN 21010
  152. 20062 FOR Z4=1 TO Z2
  153.      IF N(0,2)=H(Z4) THEN 20070
  154.       NEXT Z4
  155. 20064 J=2:GOTO 20500
  156. 20070 CASH.OUT=CASH.OUT+N(0,7):ACCT.NUM=N(0,2)
  157. 20072 IF N(0,7)<0 THEN CREDIT=CREDIT+N(0,7):REF%(Z4)=REF%(Z4)+1
  158. 20074 IF N(0,7)>0 THEN DEBIT=DEBIT+N(0,7):REF%(Z4)=REF%(Z4)+1
  159. 20076 FOR J=first to last STEP 2
  160. 20080 FOR Z4=1 TO Z2
  161. 20085 IF N(0,J)=0 THEN 21000
  162. 20090 IF N(0,J)=H(Z4) THEN 21000
  163. 20100 NEXT Z4
  164. 20500    lprinter
  165.     print:print n(0,j);" in record ";i;" is not a VALID account number!"
  166.     abort = 1
  167.     console
  168.     IF J=2 THEN 20076
  169. 21000 IF N(0,J+1)<0 THEN CREDIT=CREDIT+N(0,J+1):REF%(Z4)=REF%(Z4)+1
  170. 21002 IF N(0,J+1)>0 THEN DEBIT=DEBIT+N(0,J+1):REF%(Z4)=REF%(Z4)+1
  171. 21004 NEXT J
  172. 21010 I=I+1
  173. 21020 GOTO 20040
  174. 29975 PRINT clear$:PRINT
  175.     if abort = 1 then print "*** POSTING ABORTED !!! ***":GOTO 10050
  176. 29980 PRINT "*** POSTING ***"
  177. 29985 PRINT:PRINT "PLEASE WAIT"
  178. 29995 RETURN
  179. 30000 P9=100:PAGE=0
  180. 30005 IF P9>60 THEN GOSUB 31000
  181. 30010 OPEN "A:GLJOSIZE" AS 20:READ #20;LIMIT,DUMMY:CLOSE 20
  182.     LIMIT=LIMIT-1
  183. 30100 FOR I=1 TO Z2
  184. 30200 IF REF%(I)=0 THEN 30795
  185. 30300 READ #1,I;N(1,1),N(1,2),R$,N(1,4),N(1,5),N(1,6),N(1,7),\
  186.     N(1,8),N(1,9),N(1,10)
  187. 30305 PRINT USING FJ$;N(1,2),R$,N(1,6):P9=P9+1
  188. 30310 CURRENT=0
  189. 30500 FOR K=1 TO LIMIT
  190. 30510 read #2,K;N(0,1),N(0,2),Q$,N(0,7),N(0,8),N(0,9),\
  191.       N(0,10),N(0,11),N(0,12),N(0,13),N(0,14),N(0,15),N(0,16),\
  192.       N(0,17),N(0,18),N(0,19),FLAG$
  193. 30512 IF FLAG$="P" THEN 30580
  194. 30515 IF N(0,2)=N(1,2) AND N(0,7)<>0 THEN PRINT USING FK$;LEFT$(Q$,5),\
  195.     MID$(Q$,9,24),N(0,1),N(0,7):FOR X=4 TO 6:N(1,X)=N(1,X)+N(0,7):NEXT X:\
  196.     CURRENT=CURRENT+N(0,7):P9=P9+1:REF%(I)=REF%(I)-1
  197. 30520 IF P9>60 THEN GOSUB 31000
  198. 30530 IF REF%(I)=0 THEN K=LIMIT:GOTO 30580
  199. 30550 FOR J1=FIRST TO LAST STEP 2
  200. 30555 IF N(0,J1)=N(1,2) AND N(0,J1+1)<>0 THEN PRINT USING FK$;LEFT$(Q$,5),\
  201.     MID$(Q$,9,24),N(0,1),N(0,J1+1):FOR X=4 TO 6:N(1,X)=N(1,X)+N(0,J1+1):\
  202.     NEXT X:CURRENT=CURRENT+N(0,J1+1):P9=P9+1:REF%(I)=REF%(I)-1
  203. 30560 IF P9>60 THEN GOSUB 31000
  204. 30566 IF REF%(I)=0 THEN K=LIMIT:GOTO 30580
  205. 30570 NEXT J1
  206. 30580 NEXT K
  207. 30600 PRINT USING FL$;CURRENT,N(1,6):P9=P9+1
  208. 30650 PRINT #1,I;N(1,1),N(1,2),R$,N(1,4),N(1,5),N(1,6),N(1,7),\
  209.     N(1,8),N(1,9),N(1,10)
  210. 30655 PRINT:PRINT:P9=P9+2
  211. 30660 IF P9>60 THEN GOSUB 31000
  212. 30795 NEXT I
  213. 30800 FOR I=1 TO LIMIT
  214. 30810 read #2,I;N(0,1),N(0,2),Q$,N(0,7),N(0,8),N(0,9),\
  215.       N(0,10),N(0,11),N(0,12),N(0,13),N(0,14),N(0,15),N(0,16),\
  216.       N(0,17),N(0,18),N(0,19),FLAG$
  217. 30815 FLAG$="P"
  218. 30820 print #2,I;N(0,1),N(0,2),Q$,N(0,7),N(0,8),N(0,9),\
  219.       N(0,10),N(0,11),N(0,12),N(0,13),N(0,14),N(0,15),N(0,16),\
  220.       N(0,17),N(0,18),N(0,19),FLAG$
  221. 30825 NEXT I
  222. 30995 RETURN
  223. 31000 PRINT CHR$(12):P9=0:PAGE=PAGE+1
  224. 31005 PRINT USING FG$;D$(4),MID$(CO.NAME$,25,24),PAGE
  225. 31010 PRINT FH$
  226. 31015 PRINT FH1$
  227. 31020 PRINT FI$
  228. 31025 PRINT:P9=P9+6
  229. 31095 RETURN
  230.