IMD 1.15: 15/05/2007 13:26:52 fog hak 003   مممممممممم  مممممممممم  مممممممممم  مA/P080 BAS A/P090 BASX !"#$A/P110 BAS#%&'A/P120 BASI()*+,DISK DOC-مممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممممم%NOLIST REMARK *********************************************** REMARK * READ A/P INFORMATION FILE & EXTENTS * REMARK *********************************************** 3310 READ #X0;P(1),P(2),P(3),P(4),P(5),\ TRANSACTION.RCD.COUNT%,AP.INVمOICE.EXTENT,AP.VENDFILE.EXTENT,SORT% RETURN 3350 PRINT #X0;P(1),P(2),P(3),P(4),P(5),\ TRANSACTION.RCD.COUNT%,AP.INVOICE.EXTENT,AP.VENDFILE.EXTENT,SORT% RETURN %LIST -FOG/HAK003A/P-INFOBASA/P02B BAS)A/P030 BAS_ A/P040 BASV A/P050 BAS)A/P060 BAS4A/P070 BASQ  م REMARK # VERS. OF 10.00 AM 6/19/79 # REMARK ######################################################### DIM G3(5),G2$( REMARK # VERS. OF 10.00 AM 6/19/79 # REMARK ######################################################### DIM G3(5),G2$(م5),M$(5),B1(6),B(6,5),C(27),D(27),P(6) DEF FNF(X9%)=X9%-INT(X9%/10)*10 REMARK STRIP OFF TENS DIGIT %INCLUDE CURSOR GOTO 6000 %INCLUDE SUBS1 %INCLUDE GENINFO %INCLUDE READINV %INCLUDE A/P-INFO DATA "INVOICE","DELETE","MODIFY","CR MEMO","DB MEمMO" DATA "NEW","DEL","MOD" 825 IF LINE.COUNT%<55 AND PAGE.COUNT%>0 THEN RETURN REMARK LINE PRINTER ROUTINE PAGE.COUNT%=PAGE.COUNT%+1 PRINT CHR$(12); PRINT TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE "; X0=G3(1):GOSUB 680.5 PRINT PRINTم TAB((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE";PAGE.COUNT% PRINT PRINT "R# VENDOR INV DESCR BUYER CK REG INV DATE "; PRINT "PAY DATE AMOUNT DISCOUNT FREIGHT TAXES TOTAL" PRINT LINE.COUNT%=6 RETURN 5000 PRINT TAB(6)  VERIFY OPTIONS ENTRY IF X0<>1THEN 6010 LINE.COUNT%=60 B0=1 PAGE.COUNT%=0 LPRINTER FOR TRANSACTION.INDEX%=F TO F2 REMARK START PRINT LOOP FILE.NO=5:X0%=TRANSACTION.INDEX%:GOSUB 3000 REMARK RETRIEVE TRANSACTION RECORD IF W2%=1 THEN  MASKC$=" #####.#" MASKD$=" ######" MASKE$="######" OPEN "CRT" RECL 1100 AS 19, "G/I0F010.DAT" AS 3, "A/P0F130.DAT" AS 1,\ "A/P0F020.DAT" RECL 580 AS 5 Y9=3: GOSUB 700 REMARK RETRIEVE GENERAL INFORMATION FILE DATA X0=1: GOSUB 3310 W3%=W1% \ REMARK SET COMPOSITE TRANSACTION TYPE AND OPERATION ELSE W3%=W2% IF G<>0 AND G<>FNF(W3%) THEN 6180 REMARK CHECK TRANSACTION FOR PROPER GROUP B0=FNF(W3%) IF W3%=2 OR W3%=4 THEN \ REMARK ACCUMULATE TRANSACTION TO TOTALS B(B0,1 REMARK RETRIEVE A/P INFORMATION FILE DATA IF TRANSACTION.RCD.COUNT%=0 THEN \ PRINT CLEAR.SCREEN$;:\ X2$="NO TRANSACTIONS ON FILE":\ GOSUB 615:\ GOTO 6220 X9=5 X0=5:GOSUB 260 REMARK DISPLAY REPORT OPTIONS MASK 6010 FOR I%=1 TO )=B(B0,1)-C(23):\ B(B0,5)=B(B0,5)-C(23)\ ELSE\ FOR I%=1 TO 4:\ B(B0,I%)=B(B0,I%)+C(22+I%):\ B(B0,5)=B(B0,5)+C(22+I%):\ NEXT I% B1(B0)=B1(B0)+1 IF S=2 THEN 6180 REMARK IF REQUESTED, PRINT TRANSACTION DETAIL X4$="A/P TRANSACTIONS":A1=16 REMARK ZERO REPORT TOTALS B1(I%)=0 FOR J%=1 TO 5 B(I%,J%)=0 NEXT J%,I% X1=269:X2=1:X3=0:X4=2:GOSUB 345 REMARK ENTER REPORT TYPE IF X0=0 THEN 6220 S=X0 X1=333:X2=1:X3=0:X4=5:GOSUB 345 REMARK ENTER REPORT GROUP G=X0 X1=40815:GOSUB 825 PRINT USING MASKA$;TRANSACTION.INDEX%; PRINT " ";W1$;TAB(13); PRINT USING MASKE$;W0; PRINT TAB(22);W2$;TAB(34);W3$;TAB(37); PRINT USING MASKE$;D(25); PRINT TAB(46); X0=D(23):GOSUB 680.5 PRINT TAB(55); X0=D(24):GOSUB 680.5 P:X2=3:X3=1:X4=999:GOSUB 345 REMARK ENTER START RECORD NUMBER F=X0 X1=472:X2=3:X3=F:X4=999:GOSUB 345 REMARK ENTER END RECORD NUMBER F2=X0 IF F2>TRANSACTION.RCD.COUNT% THEN F2=TRANSACTION.RCD.COUNT% X1=586:X2=1:X3=0:X4=1:GOSUB 345 REMARK RINT TAB(63); PRINT USING MASKB$;C(23);C(24);C(25);C(26);C(23)+C(24)+C(25)+C(26); RESTORE FOR I%=1 TO FNF(W2%)+5 READ X0$ NEXT I% PRINT " ";X0$;" "; RESTORE FOR I%=1 TO W1% READ X0$ NEXT I% PRINT X0$; IF W2%>=10 THEN PRINT "*"; PR;"AMT"; REMARK PRINT G/L OR JOB DISTRIBUTION FOR I%=I1% TO I2% IF C(I%)<>0 THEN PRINT USING MASKB$;C(I%); NEXT I% PRINT LINE.COUNT%=LINE.COUNT%+2 RETURN 6000 MASKA$="###" REMARK START OF MAIN PROGRAM MASKB$=" #######.##"   SACTION PRINT LOADING MENU" CHAIN"A/P000" REMARK LOAD MENU 6330 PRINT:PRINT" TOTAL";TAB(11); REMARK PRINT TOTALS FOR ONE GROUP ONLY PRINT USING MASKA$;B1(B0); RESTORE FOR I%=1 TO B0 READ X0$ NEXT I% PRINT " ";X0$;" TRANSACT I1%=12:I2%=22:GOSUB 5000 6170 PRINT LINE.COUNT%=LINE.COUNT%+2 6180 NEXT TRANSACTION.INDEX% LINE.COUNT%=LINE.COUNT%+14-11*SGN(G) REMARK PRINT TOTALS X4$="A/P TRANSACTION REPORT":A1=115:LINE.COUNT%=60:GOSUB 825 IF G<>0 THEN B0=G:GOTO 6330 IONS";TAB(63); PRINT USING MASKB$; B(B0,1);B(B0,2);B(B0,3);B(B0,4);B(B0,5) PRINT:PRINT GOTO 6010 TALS FOR ONE GROUP ONLY PRINT USING MASKA$;B1(B0); RESTORE FOR I%=1 TO B0 READ X0$ NEXT I% PRINT " ";X0$;" TRANSACT 6190 PRINT:PRINT:PRINT"TOTALS"; REMARK PRINT TOTALS FOR ALL GROUPS B3=0 RESTORE FOR B0=1 TO 5 READ X0$ PRINT TAB(11); PRINT USING MASKA$;B1(B0); PRINT " ";X0$;" TRANSACTIONS";TAB(63); B3=B3+B1(B0) FOR I%=1 TO 5 PRINT USING MASKB$م;B(B0,I%); B(6,I%)=B(6,I%)+B(B0,I%) NEXT I% PRINT NEXT B0 PRINT:PRINT:PRINT"TOTAL";TAB(11); PRINT USING MASKA$;B3; PRINT " TRANSACTIONS"; PRINT TAB(63); FOR I%=1 TO 5 PRINT USING MASKB$;B(6,I%); NEXT I% PRINT PRINT PRINT "BEمGINNING REC #", PRINT USING MASKD$;F PRINT "ENDING REC #", PRINT USING MASKD$;F2 PRINT "TOTAL IN FILE", PRINT USING MASKD$;TRANSACTION.RCD.COUNT% PRINT GOTO 6010 6220 CONSOLE REMARK END PROGRAM PRINT CLEAR.SCREEN$;"A/P TRANمINT PRINT " G/L #"; FOR I%=1 TO 11 IF C(I%)<>0 THEN PRINT USING MASKC$;D(I%); NEXT I% PRINT I1%=1:I2%=11:GOSUB 5000 IF C(12)=0 THEN 6170 PRINT " JOB #"; FOR I%=12 TO 22 IF C(I%)<>0 THEN PRINT USING MASKD$;D(I%); NEXT I% PRINT   N IF J%=2 AND TRAN.KEY$<>INV.KEY$ THEN RETURN REMARK RECORD SHOULD NOT BE AND IS NOT ON FILE 4140 X4$="A/P UPDATE REPORT":A1=60:GOSUB 825 REMARK PRINT TRANSACTION ON ERROR REPORT B1(2,A%)=B1(2,A%)+1 PRINT USING MASKA$;R%;W1$;W0; PRINT TAB(23)27),G2$(5),G3(5),B1(2,6),Y(2),M$(5) DIM P(5) DEF FNF(X9)=X9-INT(X9/10)*10 REMARK STRIP OFF TENS DIGIT GOTO 6000 DATA "INVOICE","DELETE","MODIFY","CREDIT MEMO","DEBIT MEMO" %INCLUDE SUBS1 %INCLUDE GENINFO %INCLUDE A/P-INFO %INCLUDE BINSEARC ;W2$;TAB(37); RESTORE FOR I%=1 TO A% READ A$ NEXT I% PRINT A$; IF J%=1 THEN PRINT TAB(50);"NOT ON FILE" IF J%=2 THEN PRINT TAB(50);"DUPLICATE" IF J%=3 THEN PRINT TAB(50);"DOUBLE TRANSACTION" J%=0 LINE.COUNT%=LINE.COUNT%+1 RETURN  %INCLUDE READINV %INCLUDE WRITEINV %INCLUDE READVEND %INCLUDE WRITEVND .314 RETURN REMARK THESE LINE NUMBERS FOR G/L SUBROUTINES .315 RETURN 3650 RETURN 825 IF LINE.COUNT%<55 THEN RETURN REMARK LINE PRINTER ROUTINE PAGE.COUNT%=PA4200 IF I2<12 THEN \ REMARK ACCUMULATE G/L DISTRIBUTION TOTAL B8=B8+C(I2):\ RETURN:\ REMARK SKIP IF G/L NOT IMPLEMENTED P1=D(I2):\ P4=W0:\ P5=C(I2):\ REMARK ALSO, ADD TO G/L POSTING FILE EXTERNAL.POSTING.EXTENT%=EXTERNAL.PGE.COUNT%+1 PRINT CHR$(12);TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE "; X0=G3(1):GOSUB 680.5 PRINT PRINT TAB((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE";PAGE.COUNT% PRINT IF LINE.COUNT%<>100 THEN\ PRINT " R# VENDOR INV # DESCRIPTION TRANSOSTING.EXTENT%+1:\ FILE.NO%=5:RECORD.NO%=EXTERNAL.POSTING.EXTENT%:GOSUB 3650\ ELSE\ B9=B9+C(I2) REMARK OR, ACCUMULATE JOB DISTRIBUTION TOTAL RETURN 4300 PRINT USING MASKB$;P1; REMARK PRINT G/L POSTING, AND ADD TO G/L POSTING FILE ACTION ERROR" PRINT LINE.COUNT%=6 RETURN REMARK CHECK EXISTENCE OF INVOICE RECORD FOR TRANSACTION 4100 IF J%=1 AND TRAN.KEY$=INV.KEY$ THEN \ REMARK RECORD SHOULD BE AND IS ON FILE INVOICE.POINTER%=INVOICE.POINTER%+1:\ RETUR PRINT " ";D$;TAB(30); PRINT USING MASKC$;P5 RETURN REMARK SKIP WITHOUT G/L PROGRAMS P4=0 EXTERNAL.POSTING.EXTENT%=EXTERNAL.POSTING.EXTENT%+1 FILE.NO%=5:RECORD.NO%=EXTERNAL.POSTING.EXTENT%:GOSUB 3650 RETURN REMARK ACCUMU REMARK ################################################# REMARK # A/P UPDATE PROGRAM (A/P030) # REMARK # VERS. OF 11.20 AM 6/25/79 # REMARK ################################################# %INCLUDE CURSOR DIM C(27),D(27),B(6,5),C5(27),D5(  ETRIEVE G/I FILE DATA X0=6:GOSUB 3310 REMARK RETRIEVE A/P INFORMATION FILE DATA P2=1 REMARK SET G/L POSTING SOURCE CODE P3=(INT(G3(1)/100))/100 REMARK SET G/L POSTING DATE INVOICE.POINTER%=1 6010 MAX.POSTING.RECORDS = 3600 6020 (25)<>0 THEN \ D1=-(C(23)+C(24)+C(25)+C(26))*F:\ B2=B2+D1:\ B7=B7+D1 RETURN REMARK RETRIEVE EXISTING INVOICE DATA 5300 READ #3,INVOICE.POINTER%-1; XX$,XX,YY$,ZZ$,W1%,F5,D5(1),D5(2),D5(3),\ D5(4),D5(5),D5(6),D5(7),D5(8),D5(9),D5MAX.INVOICE.RECORDS = 100 E$=" " W0$=" " GOTO 6040 REMARK SKIP UNLESS G/L PROGRAMS IMPLEMENTED OPEN "G/L0F020.DAT" RECL 36 AS 5,"G/L0F130.DAT" AS 8 GOSUB .314 6040 PRINT CLEAR.SCREEN$;"A/P UPDATE" IF SORT%=0 THEN \ PRINT:PRINT:PRINT:\(10),D5(11),D5(12),D5(13),\ D5(14),D5(15),D5(16),D5(17),D5(18),D5(19),D5(20),D5(21),D5(22),D5(23),\ D5(24),D5(25),D5(26),D5(27),C5(1),C5(2),C5(3),C5(4),C5(5),C5(6),\ C5(7),C5(8),C5(9),C5(10),C5(11),C5(12),C5(13),C5(14),C5(15),C5(16),\ C5(17),C5(18) PRINT"THE TRANSACTION FILE IS NOT SORTED. TRANSACTION":\ PRINT"PRINT MUST BE RUN BEFORE PROCEEDING WITH THE UPDATE" PRINT CURSOR.HOME$ PRINT "KEY RETURN TO BEGIN; ENTER 'END' TO EXIT" INPUT LINE A$ IF SORT%=0 AND A$="END" THEN CHAIN "A/P02A,C5(19),C5(20),C5(21),C5(22),C5(23),C5(24),C5(25),\ C5(26),C5(27) RETURN 5400 IF W1%=4 THEN F=-F REMARK CHANGE SIGN OF "F" ON CREDIT MEMOS RETURN REMARK START OF MAINLINE CODE 6000 MASKA$="### / / ######" MASKB$="#####" IF SORT%=0 THEN GOTO 6040 IF A$="END" THEN GOTO 6680 PRINT "PROCESSING...DO NOT INTERRUPT" PRINT LINE.COUNT%=66 LPRINTER 6080 IF EXTERNAL.POSTING.EXTENT%+DIRECT.POSTING.EXTENT% > \ REMARK CHECK FOR G/L POSTING FILE OVERFLOW MAX.POSTING.R.#" MASKC$=" ########.##" MASKD$="###" OPEN "G/I0F010.DAT" AS 1, "A/P0F110.DAT" RECL 162 AS 2,\ "A/P0F120.DAT" RECL 580 AS 3, "A/P0F020.DAT" RECL 580 AS 4,\ "A/P0F130.DAT" AS 6 CREATE "WORKFILE.DAT" RECL 580 AS 7 Y9=1:GOSUB 700 REMARK RECORDS THEN E$="G/L" IF R% THEN \ REMARK RESAVE THE TRANSACTION MARKED 'USED' W2%=W2%+10:\ FILE.NO=4:X0%=R%:GOSUB 3050 IF E$<>" " THEN GOSUB 6740:GOTO 6540 R%=R%+1 REMARK INCREMENT TRANSACTION FILE COUNTER IF R%>TRANSACTION.RCD.CLATE TRANSACTION AMOUNTS TO G/L POSTING TOTALS 5000 IF W1%=4 THEN B(A%,1)=B(A%,1)+F*(C(23)+C(24)):RETURN REMARK FOR CREDIT MEMOS FOR A1=1 TO 4 REMARK FOR INVOICES OR DEBIT MEMOS IF C(22+A1)<>0 THEN B(A%,A1)=B(A%,A1)+F*C(22+A1) NEXT A1 IF D  1%=-1 AND INV.KEY$=TRAN.KEY$ THEN 6080 6095 FILE.NO=4:X0%=R%:GOSUB 3000 REMARK RE-LOAD TRANSACTION DATA 6100 CONSOLE PRINT CURSOR.HOME$:PRINT:PRINT:PRINT"UPDATING: ";W1$;" ";W0 LPRINTER IF W2%>9 THEN 6080 REMARK IF TRANSACTION IS VOID, SKI NEW.KEY$=TRAN.KEY$ THEN \ REMARK IF DUPLICATE TRANSACTION, PRINT ON ERROR REPORT J%=3:\ GOSUB 4140:\ GOTO 6080 TRAN.KEY$=NEW.KEY$ IF AP.INVOICE.EXTENT=0 THEN INV.KEY$="ZZZZZZZZZZZZ" IF INV.KEY$="ZZZZZZZZZZZZ" THEN 6100 REMARK IF THE P IT IF W2%=1 THEN A%=W1%\ REMARK SET COMPOSITE TRANSACTION TYPE AND OPERATION ELSE A%=W2% ON A% GOTO 6160,6360,6400,6160,6160 REMARK BRANCH ON TRANSACTION TYPE AND OPERATION REMARK NEW INVOICE, CREDIT MEMO, OR DEBIT MEMO 616LAST INVOICE RECORD HAS BEEN READ, BRANCH K$=TRAN.KEY$ GOSUB 1060 REMARK LOCATE NEXT INVOICE RECORD IF INVOICE.POINTER% > AP.INVOICE.EXTENT THEN \ INVOICE.POINTER% = INVOICE.POINTER% - 1 IF INVOICE.POINTER%=L THEN 6090 REMARK IF NEXT IN0 J%=2:GOSUB 4100 REMARK MAKE SURE INVOICE DOES NOT ALREADY EXIST F=1 IF J%=0 THEN 6080 REMARK IF INVOICE ALREADY EXISTS, GET NEXT TRANSACTION 6180 GOSUB 6900 REMARK SAVE TRANSACTION ON WORKFILE B1(1,A%)=B1(1,A%)+1 GOSUB 5400 VOICE HAS NOT CHANGED, BRANCH FOR I%=INVOICE.POINTER% TO L-1 FILE.NO=3:X0%=I%:GOSUB 3000 REMARK COPY UNCHANGED INVOICES TO WORKFILE INVOICE.POINTER%=INVOICE.POINTER%+1 IF W1%=-1 THEN 6085 GOSUB 6900 6085 NEXT I% IF E$<>" " THEN GOSUB 6740: REMARK CHANGE SIGNS, IF CREDIT MEMO FOR I%=1 TO 22 IF C(I%)<>0 THEN C(I%)=C(I%)*F:I2=I%:GOSUB 4200 REMARK POST G/L EXPENSE ACCOUNT DISTRIBUTIONS NEXT I% 6260 GOSUB 5000 REMARK ACCUMULATE OTHER G/L ACCOUNT POSTINGS IF B7=0 THEN 6080 GOTO 6540 IF L>AP.INVOICE.EXTENT THEN INV.KEY$="ZZZZZZZZZZZZ":GOTO 6095 6090 FILE.NO=3:X0%=INVOICE.POINTER%:GOSUB 3000 REMARK READ NEXT INVOICE FROM INVOICE FILE XYZ$=W1$+" ":ZYX$="000000"+STR$(W0) INV.KEY$=LEFT$(XYZ$,6)+RIGHT$(ZYX$,6) IF WREMARK IF NO CHANGE IN VENDOR TOTALS, GET NEXT TRANSACTION IF W0$=" " THEN 6280 IF W0$=W1$ THEN 6320 REMARK IF VENDOR HAS CHANGED... X0$=W1$ W1$=W0$ Y9=2:X0=VENDOR.POINTER:GOSUB 3250 REMARK SAVE LAST VENDOR'S DATA W1$=X0$ 6280 XYZ$=W1$OUNT% THEN 6540 REMARK BRANCH AT END OF TRANSACTION FILE FILE.NO=4:X0%=R%:GOSUB 3000 REMARK RETRIEVE TRANSACTION RECORD Y2=3 RECORD.COUNT=AP.INVOICE.EXTENT XYZ$=W1$+" ":ZYX$="000000"+STR$(W0) NEW.KEY$=LEFT$(XYZ$,6)+RIGHT$(ZYX$,6) IF  LATE TRANSACTION TOTALS TO G/L POSTING AMOUNTS GOSUB 6900 REMARK SAVE TRANSACTION ON WORKFILE B1(1,A%)=B1(1,A%)+1 IF W1%=4 THEN \ FOR I%=1 TO 22:\ C(I%)=-C(I%):\ C5(I%)=-C5(I%):\ NEXT I% FOR I%=1 TO 22 REMARK ADJUST G/L DIST RETRIEVE NEXT VENDOR'S DATA VENDOR.POINTER=L:\ W0$=W1$ 6320 Y(2)=Y(2)-B7:D=D(23) 6340 B7=0 GOTO 6080 REMARK OPERATION IS DELETE 6360 J%=1:GOSUB 4100 REMARK MAKE SURE INVOICE ALREADY EXISTS F=-1 IF J%=0 THEN 6080 REMRIBUTIONS IF THEY HAVE BEEN MODIFIED IF D(I%)=D5(I%) THEN 6480 I2=I%:GOSUB 4200 D(I%)=D5(I%) C(I%)=-C5(I%) GOTO 6520 6480 C(I%)=C(I%)-C5(I%) IF C(I%)<>0 THEN I2=I%:GOSUB 4200 6520 NEXT I% FOR I%=1 TO 4 REMARK BACK OUT OLD INVOICE AMOUARK IF INVOICE DOES NOT EXIST, GET NEXT TRANSACTION GOSUB 5300 REMARK RETRIEVE INVOICE DATA IF FNF(F5)=2 OR D5(25)<>0 THEN 6380 REMARK DO NOT DELETE AN ALREADY DELETED OR CLOSED INVOICE IF W1%<>4 OR C(24)=0 THEN 6180 6380 J%=2 GOSUB 4140 NTS FROM TOTALS C(22+I%)=C5(22+I%) NEXT I% D(25)=D5(25) F=-1 GOSUB 5400 GOTO 6260 REMARK END OF PROGRAM - PRINT TOTALS 6540 IF INVOICE.POINTER% >= AP.INVOICE.EXTENT THEN 6555 FOR I%=INVOICE.POINTER% TO AP.INVOICE.EXTENT REM REMARK PRINT TRANSACTION ON ERROR REPORT GOTO 6080 REMARK OPERATION IS MODIFY 6400 J%=1:GOSUB 4100 REMARK MAKE SURE INVOICE ALREADY EXISTS IF J%=0 THEN 6080 REMARK IF IT DOES NOT, GET NEXT TRANSACTION F=1 GOSUB 5300 ARK COPY THE REST OF THE INVOICE FILE TO THE WORKFILE FILE.NO=3:X0%=I%:GOSUB 3000 INVOICE.POINTER%=INVOICE.POINTER%+1 IF W1%<>-1 THEN GOSUB 6900 NEXT I% 6555 IF E$<>" " THEN GOTO 6560 DELETE 4 REMARK ERASE TRANSACTION FILE CREATE "A/P0F0 REMARK RETRIEVE INVOICE DATA IF FNF(F5)=2 THEN 6180 REMARK IF THE INVOICE IS DELETE-FLAGGED,\ THE TRANSACTION EFFECTIVELY BECOMES A NEW INVOICE GOSUB 5400 REMARK REVERSE SIGN, IF CREDIT MEMO GOSUB 5000 REMARK ACCUMU20.DAT" RECL 580 AS 4 TRANSACTION.RCD.COUNT%=0 6560 CLOSE 7 REMARK CLOSE WORKFILE BEFORE RENAMING DELETE 3 REMARK ERASE INVOICE FILE A=RENAME ("A/P0F120.DAT","WORKFILE.DAT") CLOSE 6 OPEN "A/P0F130.DAT" AS 6 AP.INVOICE.EXTENT=OUTPU+" " Y2=2 K$=LEFT$(XYZ$,6) RECORD.COUNT=AP.VENDFILE.EXTENT GOSUB 1060 REMARK LOCATE NEXT VENDOR'S DATA IF H=-1 OR VAR1=0 THEN:\ W0$=" ":\ PRINT W1$;"NOT ON VENDOR FILE":\ GOTO 6340\ ELSE\ Y9=2:X0=L:GOSUB 3200:\ REMARK   AS 8 FILE.NO%=8:GOSUB .315 6680 CONSOLE PRINT CLEAR.SCREEN$;"A/P UPDATE LOADING MENU" CHAIN "A/P000" 6740 CONSOLE PRINT "PROGRAM TERMINATED DUE TO ";E$; PRINT " FILE FILLED TO LIMIT." PRINT "ENTER 'RETURN' TO CONTINUE" 6741 IF CONSTAT% TH PRINT " FREIGHT TAXES TOTAL ERRORS" RESTORE FOR B0=1 TO 5 READ X0$ PRINT TAB(12); PRINT USING MASKD$;B1(1,B0); PRINT " "; PRINT X0$;" TRANSACTIONS";TAB(55); B6=B6+B1(1,B0) B5=0 FOR I%=1 TO 4 PRINT USING MASKC$;B(BEN PRINT:RETURN ELSE GOTO 6741 6900 OUTPUT.COUNT%=OUTPUT.COUNT%+1 REMARK SUBROUTINE TO ADD A RECORD TO THE WORKFILE IF OUTPUT.COUNT% + AP.INVOICE.EXTENT - INVOICE.POINTER% >= \ MAX.INVOICE.RECORDS - 1 THEN E$="INVOICE" FILE.NO=7 X0%=OUTPUT0,I%); B(6,I%)=B(6,I%)+B(B0,I%) B5=B5+B(B0,I%) NEXT I% PRINT USING MASKC$;B5; PRINT " ";B1(2,B0) NEXT B0 PRINT:PRINT:PRINT TAB(12); PRINT USING MASKD$;B6; PRINT " TRANSACTIONS";TAB(55); FOR I%=1 TO 4 PRINT USING MASKC$;B(6,I%); .COUNT% GOSUB 3050 RETURN F OUTPUT.COUNT% + AP.INVOICE.EXTENT - INVOICE.POINTER% >= \ MAX.INVOICE.RECORDS - 1 THEN E$="INVOICE" FILE.NO=7 X0%=OUTPUT B4=B4+B(6,I%) NEXT I% PRINT USING MASKC$;B4 PRINT:PRINT:PRINT TAB(9);"G/L POSTINGS":PRINT REMARK PRINT G/L TOTALS, AND ADD TO G/L POSTING FILE W0=0 P1=2:P5=B2:D$="CASH":GOSUB 4300 P1=2020:P5=B4+B2:D$="ACCT PAYABLE":GOSUB 4300 PRINT TAB(9) REMARK ****************************************\ * A/P040.BAS A/P CHECK CALCULATE *\ * 6/18/79 5:10 PM *\ **************************************** DIM G2$(5),G3(5),C(27),D(27),M$(5),A$(25),A1$(25,25),P(6),Y(2) D;"ALL OTHERS";TAB(30); PRINT USING MASKC$;B8 PRINT:PRINT:PRINT "TOTAL JOB POSTINGS";TAB(30); PRINT USING MASKC$;B9 GOTO 6680 REMARK IF G/L NOT IMPLEMENTED, SKIP CLOSE 8 REMARK SAVE CHANGED G/L EXTENT INFORMATION OPEN "G/L0F130.DAT"ATA 0,3,3,6,8,11,13,16,19,21,24,26 %INCLUDE CURSOR DEF FNA(Z)=100 *(Z/100 - INT(Z - 100)) GOTO 6000 %INCLUDE SUBS1 %INCLUDE GENINFO %INCLUDE BINSEARC %INCLUDE READVEND %INCLUDE WRITEVND %INCLUDE READINV %INCLUDE WRITEINV %INCLUDE A/P-INFO 365T.COUNT% X0=6:GOSUB 3350 LPRINTER LINE.COUNT%=100 B6=0:B4=0 IF W0$<>" " THEN W1$=W0$:Y9=2:X0=VENDOR.POINTER:GOSUB 3250 REMARK SAVE FINAL VENDOR'S DATA X4$="A/P UPDATE REPORT":A1=115:GOSUB 825 PRINT:PRINT:PRINT TAB(61);"AMOUNT DISCOUNT ";    REMARK IF BLANK VENDOR #, BRANCH GOSUB 5450 X1=456:GOSUB 210 PRINT "ENTERING INVOICES TO PAY FOR VENDOR ";A$(K1);TAB(64) 4220 REMARK ********** ENTER UP TO 25 INVOICE NUMBERS & ALLOW CHANGES ********** FOR K2=1 TO 25 GOSUB 5480 IF X0=0 THENT(I/100)) DAY=100*((I-YEAR)/10000-INT((I-YEAR)/10000)) MONTH=(I-(100*DAY-YEAR))/10000 IF MONTH=0 OR MONTH > 12 THEN A4=0:RETURN RESTORE FOR I%=1 TO MONTH:READ A4:NEXT I% REMARK READ DATA TABLE A4=A4+YEAR*365+INT(YEAR/4)+1+(MONTH-1)*28+DAN K2=25 NEXT K2 4240 GOSUB 5500 IF X0=0 THEN 4280 K2=X0+I*5 GOSUB 5480 GOTO 4240 4280 REMARK ********** RE-DISPLAY GRID WITH ALL VENDOR #'S ENTERED SO FAR FOR CHECK CALCULATION ********** GOSUB 5450 PRINT CURSOR.HOME$:PRINT:PRINT TAB(64Y IF INT(YEAR/4) <> YEAR/4 THEN RETURN IF MONTH <= 2 THEN A4=A4-1 RETURN REMARK ******************************************************* 4150 REMARK ********** DAYS BETWEEN TWO DATES SUBROUTINE **********\ THIS ROUTINE CALCULATES DAYS BETW):PRINT TAB(64) X1=465:GOSUB 210 PRINT "ENTERING VENDOR NUMBERS TO PAY" PRINT K2=0 FOR I1%=1 TO 5 PRINT LEFT$(X9$,3); FOR I%=1 TO 5 K2=K2+1 IF LEN(A$(K2)) <> 0 THEN \ PRINT LEFT$(X9$,4);:\ PRINT USING "/2345/";A$(K2); NEXT I% PREEN DATES IN I3 AND\ J2. ANSWER (IN DAYS) IS PASSED BACK IN A. I=I3:GOSUB 4000 A=A4 I=J2:GOSUB 4000 A=A-A4 RETURN REMARK ***************************************************** 4200 REMARK ********** INVOICE NUMBER ENTRY **********\ INT NEXT I1% RETURN 5000 IF F=0 AND W5 <= 0 AND W1% = 4 THEN RETURN REMARK IF DETAIL RECORD IS A LONE CREDIT MEMO, REMARK RETURN WITHOUT WRITING A RECORD. IF F=0 THEN GOTO 5160 REMARK IF DETAIL PROCESSING FLAG IS SET, WRITE DETA ENTER INVOICE NUMBERS FOR THE K1'ST CHECK. XYZ$=X0$+" " X0$=LEFT$(XYZ$,6) A$(K1)=X0$ REMARK SAVE VENDOR NUMBER FOR J%=1 TO 25 A1$(K1,J%)="" REMARK SET INVOICE NUMBERS TO NULL STRINGS NEXT J% IF LEN(X0$)=0 THEN GOTO 4280 IL CHECK RECORD. IF W9=0\ REMARK IF NO DETAIL RECORDS WERE WRITTEN FOR THIS CHECK, OR W5 <= 0 THEN \ REMARK OR CHECK AMOUNT IS NOT POSTIIVE, CHECKS%=HDR%:HDR%=0:\ REMARK SKIP WRITING HEADER AND RESET LOGICAL EOF RETURN PRINT #4, 0 RETURN REMARK THESE LINES FOR G/L SUBROUTINES .314 RETURN .315 RETURN 4000 REMARK ********* DATE SUBTRACTION ROUTINE *********\ (THIS ROUTINE SUBTRACTS THE DATE IN I FROM THE\ IMAGINARY DATE "00/00/00") YEAR=100*((I/100)-I  6:GOSUB .315 RETURN 5450 REMARK RE-DISPLAY GRID CONTENTS ON CRT X1=448:GOSUB 210 PRINT TAB(64) PRINT FOR I%=1 TO 5 PRINT USING "#";I%;:PRINT")";TAB(64) NEXT I% RETURN 5480 X1=572+14*INT((K2-1)/5)+10*K2:X2=6:X3=0:X4=999999 REMA110 Y(2)=Y(2)+W5 REMARK ADD CHECK AMOUNT TO VENDOR ACTIVITY TOTAL L2=L2-W5 REMARK SUBTRACT CHECK AMOUNT FROM G/L CASH ACCOUNT D=A8 GOSUB 3250 REMARK RE-WRITE THE VENDOR RECORD 5130 F=0:W5=0:W9=0 W7=W7+1 RETURN 5160 RK ENTER INVOICE NUMBER IN GRID GOSUB 345 IF X%=3 THEN GOTO 6700 REMARK IF CTRL-C WAS DEPRESSED, EXIT PROGRAM IF X0=0 THEN RETURN X0$="000000"+X0$ REMARK RIGHT-ADJUST INVOICE NUMBER A1$(K1,K2)=RIGHT$(X0$,6) RETURN 5500 X2=1:X3=0: REMARK WRITE CHECK DETAIL RECORD IF HDR%=0 THEN HDR%=CHECKS%:CHECKS%=CHECKS%+1 W9=W9+1 REMARK INCREMENT DETAIL COUNTER PRINT #4,CHECKS%; W2$,W1%,D(23),W0,C(23),C(24),C(25),C(26) CHECKS%=CHECKS%+1 REMARK INCREMENT TOTAL CHECK FILE REX4=5 X2$="ENTER ROW TO CHANGE (0 IF NONE)" GOSUB 665 IF X0=0 THEN RETURN I=X0-1 X2=1:X3=0:X4=5 X2$="ENTER COLUMN TO CHANGE" GOSUB 665 IF X0=0 THEN 5500 RETURN 5600 X1=572+14*INT((K-1)/5)+10*K:X2=6:X3=0:X4=0:GOSUB 345 REMARK ENTER VCORD COUNT. CLOSE 4 OPEN "A/P0F030.DAT" RECL 86 AS 4 RETURN 5210 W2%=0 REMARK RESAVE INVOICE RECORD D(24)=A8 D(25)=W7 X0=INVOICES%:GOSUB 3050 RETURN 5230 RETURN REMARK SKIP UNLESS G/L PROGRAMS IMPLEMENTED X0=4 P1=ENDOR NUMBER IF X%=3 THEN GOTO 6700 REMARK EXIT PROGRAM IF CTRL-C DEPRESSED RETURN REMARK START OF MAIN PROGRAM 6000 MAX.CHECKS%=100 REMARK SET PROCESSING LIMIT FOR CHECKS CTRL.C%=1 Y9=1 OPEN "G/I0F010.DAT" AS 1, "A/P02020 P2=1 P3=INT(D1/100)/100 P4=0 P5=L2 FILE.NO%=5:RECORD.NO%=EXTERNAL.POSTING.EXTENT%+1:GOSUB 3650 P1=2 RECORD.NO%=RECORD.NO%+1:GOSUB 3650 EXTERNAL.POSTING.EXTENT%=EXTERNAL.POSTING.EXTENT%+2 CLOSE 6 OPEN "G/L0F130.DAT" AS 6 FILE.NO%=F110.DAT" RECL 162 AS 2,\ "A/P0F120.DAT" RECL 580 AS 3, "A/P0F130.DAT" AS 4,\ "CRT" RECL 1100 AS 19 GOSUB 700 REMARK GET SYSTEM GENERAL INFORMATION X0=4:GOSUB 3310 REMARK READ A/P INFO FILE CLOSE 1,4 FILE.NO=3 REMARK SET FILE HDR%; K1$, W7, W5, A8, W9 HDR%=0 XYZ$=W1$+" " K$=LEFT$(XYZ$,6) RECORD.COUNT=AP.VENDFILE.EXTENT Y2=2 GOSUB 1060 REMARK SEARCH FOR VENDOR RECORD IF H=-1 OR VAR1=0 THEN 5130 X0=L:Y9=2:GOSUB 3200 REMARK READ THE VENDOR RECORD 5  CHECK REG # X1=369:GOSUB 210:PRINT W7 REMARK DISPLAY NEXT CHECK REG # K=0 6100 REMARK ********** ENTER VENDOR/INVOICE GRID ********** IF K >= 25 THEN GOTO 6140 K=K+1 GOSUB 5600 REMARK ENTER VENDOR NUMBER IN GRID IF LEN(X0$) = 0 OSTINGS%\ THEN\ X2$="G/L POSTING FILE FULL":\ GOSUB 615:\ GOTO 6700 6040 X2=5:X3=0:X4=0:X2$="'CLEAR' OR 'SAVE' LAST CHECK RUN ('END' TO EXIT)?" GOSUB 665 IF X0$="END" THEN 6700 IF X0$="CLEAR" THEN GOTO 6059 IF X0$ <> "SAVE" THEN GOTO 6040 AND K=1 THEN \ REMARK IF FIRST GRID ENTRY IS A BLANK VENDOR, X1=411:X2=6:X3=0:X4=0:GOSUB 345:\ REMARK PROMPT FOR VENDOR NUMBER RANGE. A2$=X0$:\ X1=432:X2=6:X3=0:X4=0:GOSUB 345:\ X0$=X0$+" ":\ A3$=LEFT$(X0$,6):\ A$(1)="":\  IF END #4 THEN 6059 REMARK SET DESTINATION FOR EOF OPEN "A/P0F030.DAT" RECL 86 AS 4 IF END #4 THEN 6060 6045 READ #4; LINE X0$ CHECKS%=CHECKS% + 1 GOTO 6045 6059 IF CHECKS%=0 THEN CREATE "A/P0F030.DAT" RECL 86 AS 4 6060 IF CHECKS%=0 THEN REMARK RESET FIRST GRID VENDOR TO NULL VALUE GOTO 6180 IF LEN(X0$) > 0 THEN \ REMARK IF VENDOR # WAS ENTERED, PROCESS INVOICE GRID. K1=K:GOSUB 4200:\ GOTO 6100 6140 GOSUB 5500 IF X0 > 0 THEN \ REMARK IF VALID FIELD NUMBER ENTERECHECKS%=1 IF CHECKS% > 1 THEN CHECKS% = CHECKS% -1 6070 PRINT CURSOR.HOME$:PRINT TAB(64):PRINT TAB(64) K=0 X1=269:GOSUB 673 REMARK ENTER CHECK DATE A8=X0 I3=G3(1):J2=A8:GOSUB 4150 IF ABS(A) >= 7 THEN \ REMARK IF TOO FAR AHEAD OR BEHID, ALLOW CHANGES TO GRID K=X0+5*I:\ GOSUB 5600:\ K1=K:\ GOSUB 4200:\ GOTO 6140 6180 X2=1:X3=0:X4=1 X2$="ENTRY CORRECT?" GOSUB 665 IF X0 <> 1 THEN 6060 6200 PRINT CURSOR.HOME$ PRINT PRINT "PROCESSING . . . DO NOT INTERRUPT" F9ND TODAY'S DATE X2$="TOO FAR AHEAD/BEHIND":\ REMARK THEN REJECT CHECK DATE ENTERED. GOSUB 615:\ GOTO 6070 6080 X1=339:X2=6:X3=0:X4=999999:GOSUB 345 REMARK ENTER NUMBER OF HANDWRITTEN CHECKS W7=P(5)+X0 REMARK ADD THIS NUMBER TO NEXT =1 REMARK SET FLAG FOR PROGRAM START 6220 IF LEN(A$(1)) > 0 THEN K=0:GOTO 6240 REMARK IF GRID WAS USED, BRANCH TO GET FIRST VENDOR RECORD.COUNT=AP.INVOICE.EXTENT Y2=3 XYZ$=A2$+" " A2$=LEFT$(XYZ$,6) K$=A2$+"000000" GOSUB 1060 NUMBER FOR A/P0F120.DAT X0=6:GOSUB 260 REMARK GET CRT MASK #6 GOTO 6040 OPEN "G/L0F020.DAT" RECL 36 AS 5 OPEN "G/L0F130.DAT" AS 6 REMARK OPEN G/L INFO FILE FILE.NO%=6:GOSUB .314 MAX.POSTINGS%=1000 IF EXTERNAL.POSTING.EXTENT% > MAX.P  23)+C(24)=0 THEN 6300 REMARK THEN GET THE NEXT INVOICE RECORD. IF W5=0 THEN 6300 6420 IF D(25) <> 0 THEN GOTO 6300 IF LEN(K1$)=0 THEN 6500 IF K1$=W1$ THEN 6520 6440 F=1 GOSUB 5000 IF CHECKS% > MAX.CHECKS% THEN\ PRINT "CHECK FILE FULL":\ K1$=A$(K) REMARK SET CURRENT VENDOR NUMBER IN K1$ K1=0 6260 K1=K1+1 IF K1=26 THEN 6440 IF LEN(A1$(K,K1)) = 0 THEN 6440 REMARK IF NO MORE INVOICES FOR THIS VENDOR,\ REMARK THEN WRITE CHECK HEADER RECORD 6280 XYZ$=K1$+" ":ZYX PRINT "PRINT ALL CHECKS":\ PRINT "RERUN CALCULATE":\ PRINT "PRESS TO EXIT":\ INPUT "";LINE X0$:\ GOTO 6660 IF LEN(A$(1)) > 0 THEN 6240 REMARK IF PROCESSING BY GRID, GET NEXT VENDOR ENTRY IF W1$ > A3$ THEN 6680 REMARK IF$="000000"+A1$(K,K1) K$=LEFT$(XYZ$,6)+RIGHT$(ZYX$,6) RECORD.COUNT=AP.INVOICE.EXTENT Y2=3 GOSUB 1060 REMARK SEARCH INVOICE FILE IF H=-1 THEN GOTO 6260 REMARK IF INVOICE NOT FOUND, GET NEXT GRID ENTRY X0%=L GOTO 6340 6300 IF LEN(A$( CALCULATING CHECKS BY RANGE, GET NEXT INVOICE 6500 K1$=W1$ 6520 X1=448:GOSUB 210 PRINT "PROCESSING ";W1$,W0;TAB(63) IF W1%<>4 THEN 6580 REMARK APPLY CREDIT MEMO TO POSITIVE CHECK AMOUNT. C1=C(23)+C(24) IF C1>W5 THEN C1=W5 W5=W5-C1 C(24)1)) > 0 THEN 6260 IF K1$ > A3$ THEN GOTO 6680 REMARK IF CURRENT VENDOR IS PAST VENDOR RANGE,\ THEN BRANCH TO END OF PROGRAM. 6320 INVOICES%=INVOICES% + 1 IF INVOICES% > AP.INVOICE.EXTENT THEN GOTO 6680 REMARK IF END OF FILE, END PROCE=C(24)-C1 REMARK TOTAL USED STORED AS NEGATIVE BALANCE C(25)=C(25)+C1 GOSUB 5210 C(23)=-C1 REMARK ADJUST FIELDS SO CREDIT AMOUNTS WILL C(24)=0:C(25)=0 REMARK APPEAR IN PROPER CHECK DETAIL FIELDS GOTO 6600 6580 W5=W5+C(23)+C(24)SSING. X0%=INVOICES% 6340 GOSUB 3000 REMARK READ INVOICE RECORD IF W2%-INT(W2%/10)*10 = 2 THEN 6300 REMARK IF INVOICE RECORD WAS DELETE-FLAGGED, IF W1% <> 4 THEN 6420 REMARK OR INVOICE IS A CREDIT MEMO AND CHECK AMOUNT IS $0.00, IF C(+C(25)+C(26) GOSUB 5210 6600 F=0 GOSUB 5000 GOTO 6300 6660 IF F9=0 THEN 6700 6680 F=1 GOSUB 5000 GOSUB 5230 P(5)=W7 OPEN "A/P0F130.DAT" AS 7 X0=7 GOSUB 3350 REMARK SAVE A/P INFORMATION RECORD F9=0 CREATE "A/P0F030.PST" AS 1  REMARK SEARCH INVOICE FILE FOR FIRST RECORD IN RANGE. INVOICES%=L-1 GOTO 6320 REMARK BRANCH TO "VENDOR RANGE" ROUTINE 6240 K=K+1 IF K=26 THEN GOTO 6680 IF LEN(A$(K)) = 0 THEN GOTO 6680 REMARK IF NO MORE VENDORS IN GRID, EXIT PROGRAM   مم REMARK ********************************************\ * A/P050.BAS CHECK REGISTER PROGRAM *\ * 6/18/79 5:00 PM *\ ******************************************** DIM W(5),W5(6),W3$(7),W2(4),M$(5),P(6),G2$(5),G3(5م),Y(2) %INCLUDE CURSOR GOTO 6000 %INCLUDE SUBS1 %INCLUDE GENINFO %INCLUDE BINSEARC %INCLUDE READVEND %INCLUDE A/P-INFO 825 REMARK ********* TOP OF FORM AND REPORT HEADINGS SUBROUTINE ********* IF LINE.COUNT% <55 AND PAGE.COUNT%>0م THEN RETURN REMARK IF NOT TOP OF NEW PAGE, OR FIRST PAGE, RETURN. PAGE.COUNT%=PAGE.COUNT%+1 PRINT CHR$(12);TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE "; X0=G3(1):GOSUB 680.5 REMARK PRINT REPORT DATE FROM GENERAL INFORMATION FILE. PRINT م PRINT TAB((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE";PAGE.COUNT% PRINT PRINT TAB(8);"DATE INV NO. DESCRIPTION AMOUNT DISCOUNT"; PRINT " FREIGHT TAXES NET AMT CHECK NO." REMARK PRINT REPORT HEADINGS PRINT LINE.COUNT PRINT #1;L2 6700 CONSOLE PRINT CLEAR.SCREEN$;"A/P CHECK CALCULATE LOADING MENU" CHAIN "A/P000" REMARK CLOSE FILES AND LOAD MENU   "A/P0F030.DAT" RECL 86 AS 3, "A/P0F130.DAT" AS 4, "A/P0F030.PST" AS 5 READ #5;W8 Y9=1:GOSUB 700 REMARK OPEN AND READ GENERAL INFORMATION FILE X0=4:GOSUB 3310 REMARK GET A/P INFORMATION FILE CLOSE 1,4 DELETE 5 RECORD.COUNT=AP.VENDFIL 5000 REMARK ********** PRINT CHECK HEADER INFORMATION ********** X4$="A/P CHECK REGISTER":A1=90:GOSUB 825 PRINT USING MASKD$;W7 REMARK PRINT CHECK REGISTER NUMBER PRINT W1$;" ";M$(2);TAB(55);"DATE "; REMARK PRINT VENDOR E.EXTENT Y9=2:Y2=Y9 Y1=3 6020 CONSOLE LINE.COUNT%=66 PAGE.COUNT%=0 PRINT CLEAR.SCREEN$;"A/P CHECK REGISTER" PRINT:PRINT:PRINT:PRINT"FIRST CHECK REG. #" PRINT "LAST CHECK REG. #" 6060 X1=275:X2=6:X3=0:X4=999999:GOSUB 345 REMARK ENTER FIRSNUMBER, NAME X0=A8:GOSUB 680.5 REMARK PRINT CHECK DATE PRINT TAB(95);"----------" LINE.COUNT%=LINE.COUNT%+1 RETURN 5040 REMARK ********** PRINT CHECK TOTALS ********** PRINT TAB(10); PRINT USING MASKC$;W9; REMARK PRIT CHECK REGISTER NUMBER IF X0=0 THEN 6440 REMARK IF FIRST CHECK REGISTER NUMBER IS ZERO,\ EXIT THE PROGRAM. F=X0 X1=339:X2=6:X3=F:X4=999999:GOSUB 345 REMARK ENTER LAST CHECK REGISTER NUMBER TO INCLUDE E=X0 6080 X2=1:X3=0:X4=1:X2NT NUMBER OF ITEMS ON CHECK PRINT " ITEM"; IF W9>1 THEN PRINT"S"; FOR I%=1 TO 5 IF W(I%)=0 THEN 5080 PRINT TAB(24+(I%*11)); PRINT USING MASKB$;W(I%); REMARK PRINT CHECK TOTALS W5(I%)=W5(I%)+W(I%) W(I%)=0 5080 NEXT I% PRINT:PRINT L$="ENTRY CORRECT?":GOSUB 665 IF X0 <> 1 THEN 6060 REMARK IF '1' WAS NOT ENTERED (I.E., INCORRECT ENTRY),\ THEN RE-START ENTRY OF CHECK REGISTER NUMBERS. LPRINTER WIDTH 131 CHECKS%=0 IF END #3 THEN 6360 REMARK IF END OF CHECK FIINE.COUNT%=LINE.COUNT%+2 RETURN 6000 MASKA$="######" MASKB$=" #######.##" MASKC$="##" MASKD$="REGISTER ###### " IF END #3 THEN 6440 REMARK EXIT IF THE CHECK FILE IS EMPTY OPEN "G/I0F010.DAT" AS 1,"A/P0F110.DAT" RECL 162 AS 2,\ LE, BRANCH TO TOTALS 6120 CHECKS%=CHECKS%+1 READ #3,CHECKS%; W1$,W7,W5,A8,W9 REMARK READ CHECK HEADER RECORD IF W7 > E THEN 6360 REMARK IF REGISTER NUMBER IS PAST PRINT RANGE,\ THEN BRANCH TO THE TOTALS ROUTINE. IF W7 < F \ %=6 IF W(5) > 0\ REMARK IF TOP-OF-PAGE WAS REACHED WHILE PRINTING CHECK DETAIL, THEN\ REMARK THEN PRINT A MESSAGE TO THAT EFFECT ON THE NEW PAGE. PRINT USING MASKD$;W7,:\ PRINT W1$;" CONTINUED":\ LINE.COUNT%=LINE.COUNT%+1 RETURN   %*11)); PRINT USING MASKB$;W5(I%); REMARK PRINT CHECK REGISTER TOTALS NEXT I% PRINT 6380 PRINT:PRINT:PRINT"G/L P0STINGS OF LATEST CHECK RUN" PRINT "TOTAL AMOUNT "; PRINT USING MASKB$;W8; 6420 PRINT " POSTED TO CASH & A/P" GOTO 6020 644VAR1=0 THEN M$(2)="NOT ON FILE" \ REMARK IF RECORD NOT FOUND, SET VENDOR NAME TO ERROR MESSAGE. ELSE X0=L:GOSUB 3200 GOSUB 5000 6240 FOR B%=1 TO W9 CHECKS%=CHECKS%+1 READ #3,CHECKS%; W2$,W1%,D8,W0,W2(1),W2(2),W2(3),W2(4) REMARK READ CHECK DETAI0 CONSOLE PRINT CLEAR.SCREEN$;"A/P CHECK REGISTER LOADING MENU" CHAIN "A/P000" NGS OF LATEST CHECK RUN" PRINT "TOTAL AMOUNT "; PRINT USING MASKB$;W8; 6420 PRINT " POSTED TO CASH & A/P" GOTO 6020 644L RECORD X4$="A/P CHECK REGISTER":A1=90:GOSUB 825 REMARK PRINT REPORT HEADING IF FIRST RECORD OR END OF PAGE. 6250 PRINT TAB(7); X0 = D8:GOSUB 680.5 PRINT TAB(17); PRINT USING MASKA$;W0; REMARK PRINT INVOICE NUMBER 6260 PRINT TAB(26);W2$م; FOR J% = 1 TO 4 IF W2(J%) = 0 THEN 6280 PRINT TAB(24+J%*11); PRINT USING MASKB$;W2(J%); REMARK PRINT DETAIL AMOUNT FIELD W(J%) = W(J%)+W2(J%) REMARK ADD DETAIL AMOUNTS TO CHECK TOTALS W(5) = W(5)+W2(J%) 6280 NEXT J% PRINT TAB(79);م PRINT USING MASKB$;W2(1)+W2(2)+W2(3)+W2(4); IF W1% = 4 THEN PRINT " CR"; REMARK IF CREDIT MEMO, PRINT "CR" PRINT LINE.COUNT%=LINE.COUNT%+1 NEXT B% GOSUB 5040 GOTO 6120 6360 PRINT:PRINT:PRINT "TOTALS"; FOR I%=1 TO 5 PRINT TAB(24+(IمREMARK IF REGISTER NUMBER IS BELOW RANGE, THEN\ REMARK ADVANCE FILE POINTER TO NEXT CHECK HEADER RECORD. CHECKS%=CHECKS%+W9:GOTO 6120 6125 XYZ$=W1$+" " K$=LEFT$(XYZ$,6) GOSUB 1060 REMARK SEARCH FOR VENDOR RECORD IF H = -1 OR   N1<>0 THEN GOSUB 4160:A1=A1-N1*1000 PRINT "THOUSAND**" 4070 PRINT TAB(5);"**"; REMARK HUNDREDS " " " N1=INT(A1/100) IF N1<>0 THEN GOSUB 4160:PRINT "HUNDRED ";:A1=A1-N1*100 4080 N1=INT(A1) REMARK DOLLARS IF N1<>0 THEN GOSUB 4160:PR),G2$(5),C(27),D(27),Y(2) %INCLUDE CURSOR DATA "ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN" REMARK DATA TABLE USED IN CHECK AND DATE CALCULATIONS DATA "EIGHT","NINE","TEN","ELEVEN","TWELVE" DATA "THIRTEEN","FOURTEEN","FIFTEEN","SIXTEEN" DATA "INT "DOLLARS ";:GOTO 4110 IF INT(A2)>0 THEN PRINT "DOLLARS "; 4110 A1=A1-N1 REMARK CALCULATE CENTS IF A2>=1 THEN PRINT "AND"; IF A1=0 THEN PRINT " NO "; \ ELSE PRINT A1*100; PRINT "CENTS**"; RETURN 4160 IF N1 >= 21 THEN 4161 SEVENTEEN","EIGHTEEN","NINETEEN","TWENTY" DATA "THIRTY","FORTY","FIFTY","SIXTY","SEVENTY" DATA "EIGHTY","NINETY" DATA "JANUARY","FEBRUARY","MARCH","APRIL","MAY","JUNE","JULY" DATA "AUGUST","SEPTEMBER","OCTOBER","NOVEMBER","DECEMBER" GOTO 6000 %IREMARK ROUTINE TO CONVERT AMOUNT IN N1 TO ENGLISH LANGUAGE RESTORE FOR I%=1 TO N1:READ X0$:NEXT I%:GOTO 4180 4161 RESTORE FOR I%=1 TO INT(((N1-20)/10)+20) READ X0$ NEXT I% PRINT X0$; A3=N1-INT(N1/10)*10 IF A3=0 THEN PRINT" ";: RETURN PRINCLUDE SUBS1 %INCLUDE GENINFO %INCLUDE BINSEARC %INCLUDE READVEND %INCLUDE A/P-INFO 4000 A2=A1 REMARK ROUTINE TO GENERATE ENGLISH VERSION OF CHECK AMOUNT.\ AMOUNTS OVER $1000.00 PRINT ON FIRST LINE; BELOW THAT, ON THE SECOND. NT "-"; RESTORE FOR I%=1 TO A3 READ X0$ NEXT I% 4180 PRINT X0$; PRINT " "; RETURN 4200 A1=A8:GOSUB 4400 REMARK PRINT BODY OF CHECK A1=W5:GOSUB 4000 REMARK GENERATE ENGLISH CHECK AMOUNT 4240 PRINT TAB(65); PRINT USING "**## IF A1<1000 THEN PRINT:GOTO 4070 4040 N1=INT(A1/100000) REMARK HUNDRED-THOUSANDS PRINT TAB(5);"**"; IF N1>99 THEN RETURN IF N1<>0 THEN GOSUB 4160:PRINT "HUNDRED ";:A1=A1-N1*100000 4050 N1=INT(A1/1000) REMARK THOUSANDS OF DOLLARS IF #####.##";W5 REMARK PRINT CHECK WITH ASTERISK FILL PRINT:PRINT:PRINT:PRINT 4250 FOR I%=2 TO 5 PRINT TAB(12);M$(I%) REMARK PRINT NAME/ADDRESS LINE OF PAYEE NEXT I% FOR I%=1 TO 9 REMARK PRINT LINE FEEDS TO CHECK STUB PORTION PRINT  REMARK ***********************************************\ * A/P060.BAS ACCOUNTS PAYABLE CHECK WRITER *\ * 6/18/79 5:15 PM *\ *********************************************** DIM W3$(7),W2(4),M$(5),P(6),W(5),G3(5   FILE RECORD.COUNT=AP.VENDFILE.EXTENT Y9=2:Y2=Y9 6010 L1$="*VOID*" CHECKS%=0 CONSOLE 6020 PRINT CLEAR.SCREEN$;"A/P CHECK WRITER" PRINT:PRINT:PRINT:PRINT PRINT "FIRST CHECK REG. #" PRINT "LAST CHECK REG. #" 6025 X1=339:X2=6:X3=0:X4=999999:G1)+W(3)+W(4);W(2);: \ PRINT TAB(65);: \ PRINT USING MASKC$;W(5) PRINT:PRINT PRINT " REG. NO.";W7;TAB(25);M$(2);TAB(53);"PAGE";C6%;"OF";C9% PRINT CHR$(12) RETURN 4370 A1=A8:GOSUB 4400 REMARK ROUTINE TO PRINT A DUMMY CHECK FOR MULTI-PAGEOSUB 345 REMARK ENTER FIRST REGISTER # TO PRINT F=X0 IF F=0 THEN 6180 X1=403:X2=6:X3=F:X4=999999:GOSUB 345 REMARK ENTER LAST REGISTER # TO PRINT E=X0 X2=1:X3=0:X4=1:X2$="ENTRY CORRECT?":GOSUB 665 REMARK ENTER '1' IF ENTRY OK; OTHERWISE,  CHECKS. PRINT PRINT TAB(5);L1$;TAB(65);L1$;L1$ PRINT:PRINT:PRINT:PRINT GOTO 4250 4400 X1=INT(A1/10000) REMARK PRINT DATE (STORED IN A1) IN ENGLISH, AND PRINT REGISTER # X2=INT((A1-X1*10000)/100) X3=INT(A1-(X1*100+X2)*100) RESTORE FORRE-PROMPT IF X0=0 THEN 6025 IF END #3 THEN 6010 6050 CHECKS%=CHECKS%+1 READ #3,CHECKS%;W1$,W7,W5,A8,W9 REMARK READ CHECK HEADER RECORD IF W7 > E THEN 6010 REMARK IF REGISTER # IS BEYOND RANGE, END PRINTING; RE-START 6060 IF W7 < F THEN C I%=1 TO 27+X1 READ X0$ NEXT I% PRINT TAB(70-LEN(X0$));X0$;X2;" ";X3 PRINT TAB(62);"REG. NO.";W7 RETURN 6000 MASKA$="######" MASKB$=" #######.##" MASKC$="$$######.##" MASKD$="$$######.## LESS $$####.## DISC" IF END #3 THEN 6180 REMHECKS%=CHECKS%+W9:GOTO 6050 REMARK IF REGISTER # IS BELOW RANGE, ADD DETAIL RECORD COUNT\ TO FILE POINTER AND GET NEXT CHECK HEADER. 6065 XYZ$=W1$+" " K$=LEFT$(XYZ$,6):GOSUB 1060 REMARK SEARCH VENDOR FILE IF H=-1 OR VAR1=0 THEN \ARK EXIT IF THE CHECK FILE IS EMPTY OPEN "G/I0F010.DAT" AS 1,"A/P0F110.DAT" RECL 162 AS 2,\ "A/P0F030.DAT" RECL 86 AS 3, "A/P0F130.DAT" AS 4 Y9=1:GOSUB 700 REMARK READ GENERAL INFORMATION FILE X0=4:GOSUB 3310 REMARK READ A/P INFORMATION M$(2)="*** VOID ***":M$(3)="":M$(4)="":M$(5)="":W5=0 \ REMARK IF RECORD NOT FOUND, VOID THE CURRENT PAYEE & CHECK ELSE X0=L:GOSUB 3200 REMARK IF FOUND, READ FROM A/P0F110.DAT 6080 CONSOLE X1=768:GOSUB 210 PRINT "REG. NUMBER";W7 REMAR NEXT I% RETURN 4320 C6%=C6%+1 REMARK SKIP TO BOTTOM OF THE CURRENT CHECK STUB.\ IF LAST STUB PAGE, PRINT TOTALS. FOR I%=1 TO 14-C8% PRINT NEXT I% C8%=0 IF C5%=0 THEN PRINT TAB(15);"TOTAL";TAB(33);: \ PRINT USING MASKD$;W(  DIT MEMO, PRINT "CR" PRINT NEXT B% GOSUB 4320 IF C5%=0 THEN 6050 GOSUB 4370 REMARK IF MORE PAGES TO PRINT, PRINT A DUMMY CHECK AND SKIP TO STUB GOTO 6130 6180 PRINT CLEAR.SCREEN$;"A/P CHECK WRITER LOADING MENU" CHAIN "A/P000" ALS NEXT I% C5%=W9 C8%=0:C6%=0 C9%=INT((W9-1)/6)+1 REMARK CALCULATE NUMBER OF PAGES AND DETAIL ITEMS TO PRINT\ ON NEXT PAGE OF CHECK STUB 6130 IF C5%<7 THEN C4%=C5%:C5%=0 \ ELSE C5%=C5%-6:C4%=6 6150 FOR B%=1 TO C4% CHECKS%=CHمECKS%+1 READ #3,CHECKS%; W2$,W1%,D8,W0,W2(1),W2(2),W2(3),W2(4) REMARK READ CHECK DETAIL RECORD C8%=C8%+1 PRINT TAB(3); X0=D8:GOSUB 680.5 REMARK PRINT INVOICE DATE ON DETAIL RECORD PRINT TAB(15); PRINT USING MASKA$;W0; REMARK PRINT INمVOICE NUMBER PRINT TAB(25);W2$;TAB(35); REMARK PRINT PURCHASE ORDER REFERENCE IF W2(2) <> 0 THEN PRINT USING MASKD$;W2(1)+W2(3)+W2(4),W2(2); REMARK PRINT AMT, DISCOUNT (IF DISCOUNT <> 0) PRINT TAB(65); PRINT USING MASKC$;W2(1)+W2(2)+W2(3)+W2(4م); REMARK PRINT TOTAL AMOUNT FOR I%=1TO 4 W(I%)=W(I%)+W2(I%) REMARK ADD DETAIL AMOUNTS TO CHECK TOTAL W(5)=W(5)+W2(I%) NEXT I% IF W1%=5 THEN PRINT " DB"; REMARK IF DEBIT MEMO, PRINT "DB" IF W1%=4 THEN PRINT " CR"; REMARK IF CREمK PRINT CURRENT REGISTER #, PAYEE AND CHECK AMOUNT PRINT M$(2);TAB(64) PRINT "AMOUNT"; PRINT USING MASKB$;W5 LPRINTER 6100 GOSUB 4200 REMARK EXECUTE SUBROUTINE TO PRINT BODY OF CHECK FOR I%=1 TO 5 W(I%)=0 REMARK ZERO OUT CHECK TOT  NE.COUNT%<55 THEN RETURN REMARK LINE PRINTER ROUTINE PAGE.COUNT%=PAGE.COUNT%+1 PRINT CHR$(12);TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE "; X0=G3(1):GOSUB 680.5 PRINT PRINT TAB((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE";PAGE.COUNT% PRINT IF TمOTAL.FLAG%<>2 THEN \ PRINT " VENDOR INV # DESCR. BUY INV DATE PAY DATE";: \ PRINT" CK REG (G/L #)"; PRINT TAB(69);"AMOUNT DISCOUNT";TAB(92);"OTHER NET DUE "; GOSUB 5660 REMARK PRINT AGING HEADINGS PRINT LINE.COUNT%=6 RETUR REMARK #################################################### REMARK # ACCOUNTS PAYABLE LEDGER PROGRAM # REMARK # (A/P070) VERS OF 10.00 AM 6/20/79 # REMARK #################################################### %INCN 5020 PRINT A6$;TAB(8);L5$;TAB(21); REMARK PRINT ONE TOTAL LINE PRINT USING MASKA$;I3 RETURN 5040 YEAR = FNA(I) REMARK COMPUTE # OF DAYS BETWEEN DATE "I" AND 00/00/00 DAY=100*((I-YEAR)/10000-INT((I-YEAR)/10000)) MONTH=(I-(100*LUDE CURSOR A4$="----" FOR I%=1 TO 4:A4$=A4$+A4$:NEXT I% DEF FNA(Z)=100*((Z/100)-INT(Z/100)) REMARK ZERO OUT TENS AND ONES DIGITS MASKA$=" ######" MASKB$="#####.#" MASKC$=" #######.##" MASKD$=" #######.##" MASKE$="###" DIM W(4),W1.(4)DAY+YEAR))/10000 IF MONTH=0 OR MONTH>12 THEN A4=0:RETURN RESTORE FOR I%=1 TO MONTH READ A4 NEXT I% A4=A4+YEAR*365+INT(YEAR/4)+1+(MONTH-1)*28+DAY IF INT(YEAR/4)<>YEAR/4 THEN RETURN IF MONTH<=2 THEN A4=A4-1 RETURN 5140 X4$=L4$:A1=115:,A1(5),W2.(4),A2(6),M$(5),Y(2),C(27),D(27),G3(5),\ G2$(5),P(5) GOTO 6000 DATA 0,3,3,6,8,1,13,16,19,21,24,26 %INCLUDE SUBS1 %INCLUDE BINSEARC %INCLUDE GENINFO %INCLUDE READVEND %INCLUDE READINV %INCLUDE WRITEINV %INCLUDE A/P-INFO 825 IF LIGOSUB 825 REMARK PRINT ONE DETAIL LINE IF W9>1 AND LINE.COUNT%<7 THEN \ PRINT M$(2);" - CONTINUED": \ LINE.COUNT%=LINE.COUNT%+1 PRINT TAB(3);W1$;TAB(9); PRINT USING MASKA$;W0; PRINT TAB(17);W2$;TAB(27);W3$;TAB(31); X0=D(23):GOSUB 680.5 م   MULTIPLE GENERAL LEDGER NUMBERS PRINT TAB(7);"G/L"; FOR I1%=1 TO 11 IF C(I1%)<>0 THEN PRINT " ";:PRINT USING MASKB$;D(I1%); NEXT I1% PRINT PRINT TAB(7);"AMT"; FOR I1%=1 TO 11 IF C(I1%)<>0 THEN PRINT USING MASKD$;C(I1%); NEXT I1% PRT%+1 IF C3<>0 THEN PRINT TAB(C3);"X"; REMARK AGING PRINT TAB(126); IF W1%=1 THEN X0$="INV" IF W1%=4 THEN X0$="CR" IF W1%=5 THEN X0$="DB" PRINT X0$ RETURN 5400 X4$=L4$:A1=115:GOSUB 825 REMARK LOCATE, RETRIEVE AND PRINT VENDOR DATAINT LINE.COUNT%=LINE.COUNT%+2 RETURN 5620 IF A9=0 THEN RETURN REMARK PRINT AND ZERO ACCOUNT TOTALS PRINT "--ACCOUNT TOTALS---";LEFT$(A4$,44); PRINT USING MASKD$;W2.(1);W2.(2);W2.(3);W2.(4); PRINT LEFT$(A4$,23) PRINT A9=0:W2.(1)= Y2=2 RECORD.COUNT = AP.VENDFILE.EXTENT XYZ$=W1$+" " K$=LEFT$(XYZ$,6) GOSUB 1060 IF H=-1 OR VAR1=0 THEN \ M$(2)="NO VENDOR INFORMATION": \ Y(1)=0:Y(2)=0 \ ELSE \ Y9=2:X0=L:GOSUB 3200 PRINT M$(2);TAB(40);"(YEAR TO DATE"; PRI0:W2.(2)=0:W2.(3)=0:W2.(4)=0 LINE.COUNT%=LINE.COUNT%+2 RETURN 5660 PRINT USING MASKE$;P(1);P(2);P(3);P(4); REMARK PRINT COLUMN HEADINGS FOR AGING PRINT" >" RETURN 6000 OPEN "G/I0F010.DAT" AS 1, "A/P0F110.DAT" RECL 162 AS 2, \ REMANT USING MASKC$;Y(2); PRINT ") (LAST YEAR"; PRINT USING MASKC$;Y(1); PRINT ")" LINE.COUNT%=LINE.COUNT%+1 RETURN 5460 IF W9=0 THEN RETURN REMARK PRINT AND ZERO OVERALL REPORT TOTALS IF W9>1 OR S=1 THEN \ PRINT " TOTAL";TAB(25);:RK MAIN PROGRAM STARTS HERE "A/P0F120.DAT" RECL 580 AS 3, "A/P0F130.DAT" AS 4, \ "CRT" RECL 1100 AS 19 Y9=1:GOSUB 700 REMARK RETREIVE G/I FILE DATA I=G3(1):GOSUB 5040 REMARK COMPUTE # OF DAYS BETWEEN TODAY & 00/00/00 D3=A4 X0=4:GOSUB \ PRINT USING MASKE$;W9;: \ PRINT " INVOICES";: \ PRINT TAB(64);: \ PRINT USING MASKD$;W(1);W(2);W(3);W(4): \ PRINT: \ LINE.COUNT%=LINE.COUNT%+2 W9=0:W(1)=0:W(2)=0:W(3)=0:W(4)=0 RETURN 5540 IF D1=0 THEN RETURN REMARK PRINT 3310 REMARK RETREIVE A/P GENERAL INFORMATION 6040 FOR I%=1 TO 4 REMARK CLEAR TOTAL AND INVOICE FILE VARIABLES A1(I%)=0:A2(I%)=0:W(I%)=0:W1.(I%)=0:W2.(I%)=0 NEXT I% DELETE.COUNT%=0:INVOICE.RECORD.NO=0:TOTAL.FLAG%=0 A1(5)=0:A2(5)=0:A2(6 PRINT " "; X0=D(24):GOSUB 680.5 D1=C(2)+C(3)+C(4)+C(5)+C(6)+C(7)+C(8)+C(9)+C(10)+C(11) PRINT USING MASKA$;D(25); IF D1=0 THEN PRINT " ";:PRINT USING MASKB$;D(1); PRINT TAB(64); PRINT USING MASKD$;C(23);C(24);C(25);C0; LINE.COUNT%=LINE.COUN   Y2=3: \ RECORD.COUNT=AP.INVOICE.EXTENT: \ K$=W7$+"000000":\ GOSUB 1060: \ INVOICE.RECORD.NO=L-1 \ ELSE\ INVOICE.RECORD.NO=0 IF INVOICE.RECORD.NO<0 OR INVOICE.RECORD.NO>AP.INVOICE.EXTENT-1 THEN\ X2$="VENDOR NUMBER OUT OF RANGE": \ ,6120,6080 6060 CONSOLE REMARK END PROGRAM ROUTINE PRINT CLEAR.SCREEN$;"A/P LEDGER LOADING MENU" CHAIN "A/P000" 6080 R=1 REMARK CLOSED ITEM LISTING CHOSEN L4$="A/P LEDGER CLOSED ITEM LISTING" X1=355:X2=1:X3=0:X4=1:GOSUB 345  GOSUB 615: \ GOTO 6040 6260 INVOICE.RECORD.NO = INVOICE.RECORD.NO + 1 IF INVOICE.RECORD.NO > AP.INVOICE.EXTENT THEN 6680 FILE.NO=3:X0%=INVOICE.RECORD.NO:GOSUB 3000 REMARK GET INVOICE RECORD IF S=3 AND W1$<>W7$ THEN 6680 REMARK IF TYPE IS  REMARK ENTER WHETHER TO DELETE CLOSED ITEMS R1=X0 6120 X1=398:X2=1:X3=1:X4=3:GOSUB 345 REMARK ENTER REPORT TYPE ON X0 GOTO 6180,6160,6140 6140 S=3 REMARK ONE-VENDOR-ONLY TYPE CHOSEN X1=410:X2=6:X3=0:X4=0:GOSUB 345 REMARK ENTER ONE-VENDOR, BRANCH WHEN PAST THAT VENDOR IF W2%=2 THEN DELETE.COUNT% = DELETE.COUNT% + 1: GOTO 6300 IF D(25)<>0 THEN CLOSED.COUNT%=CLOSED.COUNT%+1:GOTO 6300 IF W1%<>4 THEN OPEN.COUNT%=OPEN.COUNT%+1:GOTO 6300 IF C(23)+C(24)=0 THEN CLOSED.COUNT%=CLOSVENDOR NUMBER XYZ$=X0$+" " W7$=LEFT$(XYZ$,6) GOTO 6180 6160 S=1 6180 X1=534:GOSUB 673 REMARK ENTER START DATE I=X0:GOSUB 5040 REMARK FIND # OF DAYS BETWEEN START DATE AND 00/00/00 B0=X0 B=A4 X1=598:GOSUB 673 REMARK ENTEED.COUNT%+1\ ELSE OPEN.COUNT%=OPEN.COUNT%+1 6300 I=D(24):GOSUB 5040 IF A4E THEN 6260 REMARK CHECK INVOICE DATE AGAINST START & END DATES IF W2%>9 THEN W2%=W2%-10 REMARK STRIP OFF TENS DIGIT, IF ANY, FROM OPERATION CODE IF R=1 THENR END DATE I=X0:GOSUB 5040 REMARK FIND # OF DAYS BETWEEN END DATE AND 00/00/00 E0=X0 E=A4 X2=1:X3=0:X4=1:X2$="ENTRY CORRECT?":GOSUB 665 IF X0=0 THEN 6040 LPRINTER IF S=3 THEN \ REMARK IF TYPE IS ONE-VENDOR-ONLY FIND THAT VENDOR  6400 REMARK IF CLOSED ITEM LISTING, BRANCH REMARK OPEN ITEM LISTING ROUTINES IF W2%=2 THEN \ REMARK SKIP DELETE-FLAGGED INVOICES ON OPEN ITEM LISTING GOTO 6260 IF W6$=W1$ THEN 6480 IF PAGE.COUNT%=0 THEN 6380 GOSUB 5460 )=0 L5$=" INVOICES" L4$="A/P LEDGER OPEN ITEM LISTING" CONSOLE X0=7:GOSUB 260 W8=0:W9=0:R1=0:R=0:S=0:PAGE.COUNT%=0:OPEN.COUNT%=0:CLOSED.COUNT%=0 LINE.COUNT%=62 X1=270:X2=1:X3=0:X4=2:GOSUB 345 REMARK ENTER REPORT FORMAT ON X0+1 GOTO 6060  A=D3-A4 REMARK AGE OPEN ITEMS I%=1 6580 IF A < P(I%) THEN 6600 I%=I%+1 IF I% < 5 THEN 6580 6600 A1(I%) = A1(I%)+C0 C3 = I%*3 + 108 IF W1%<>4 THEN A2(I%)=A2(I%)+C(24) IF S3=1 THEN GOSUB 5400:S3=0 6640 IF S=1 THEN 6260 REMARK IF RE(24)=0:C(25)=0:C(26)=0:GOTO 6540 IF D(25)=0 THEN 6260 REMARK SKIP OPEN ITEMS IF W1%<>4 THEN 6540 REMARK IF NOT A CREDIT MEMO, BRANCH C1=C(25) C2=D(25) IF C(23)+C(24)<=0 THEN W2%=2:GOTO 6460 IF C(25)=0 THEN 6260 D(25)=0:C(25)=0:W2%=0PORT TYPE IS SUMMARY, GET NEXT INVOICE GOSUB 5140 GOSUB 5540 IF R1=0 THEN 6260 REMARK IF NOT DELETING CLOSED ITEMS, GET NEXT INVOICE IF W2%=2 OR W1%<>4 THEN\ W1%=-1:\ FILE.NO=3:X0%=INVOICE.RECORD.NO:GOSUB 3050 GOTO 6260 6680 IF R= GOSUB 3050 REMARK RESAVE CREDIT MEMO 6460 C(23)=-C1 D(25)=C2 GOTO 6500 REMARK RESUME OPEN ITEM LISTING ROUTINES 6480 IF W1%<>4 THEN 6520 REMARK IF NOT A CREDIT MEMO, BRANCH IF C(23)+C(24)=0 THEN 6260 REMARK SKIP TOTALLY0 THEN GOSUB 5460:GOSUB 5620 REMARK - * * * TOTALS SECTION * * * - TOTAL.FLAG%=2 LINE.COUNT%=66 X4$=L4$:A1=115:GOSUB 825 PRINT:PRINT TAB(30);"TOTALS"; PRINT TAB(45); PRINT USING MASKA$;W8; PRINT " INVOICES";TAB(64); FOR I%=1 TO 4  USED CREDIT MEMOS C(23)=-C(23)-C(24) D(25)=0 6500 C(24)=0:C(25)=0:C(26)=0 GOTO 6540 6520 IF D(25)<>0 THEN 6260 REMARK SKIP CLOSED ITEMS 6540 C(25)=C(25)+C(26) REMARK ACCUMULATE TOTALS FOR I%=1 TO 3 W(I%)=W(I%)+C(22+I%) W1.(I%)=W1. PRINT USING MASKD$;W1.(I%); NEXT I% PRINT:PRINT:PRINT:PRINT IF R=1 THEN 6780 REMARK SKIP AGING SUMMARY FOR CLOSED ITEMS PRINT TAB(44);"AGING";TAB(71);"AMOUNT DISCOUNT" REMARK AGING SUMMARY PRINT FOR I%=1 TO 5 PRINT TAB(40); IF I(I%)+C(22+I%) W2.(I%)=W2.(I%)+C(22+I%) NEXT I% W8=W8+1 IF S<>3 THEN A9=1 IF R=0 THEN W9=W9+1 C0=C(23)+C(24)+C(25) W(4)=W(4)+C0 W1.(4)=W1.(4)+C0 W2.(4)=W2.(4)+C0 C3=0 IF R=1 THEN 6640 REMARK IF CLOSED ITEM LISTING, SKIP AGING <5 THEN \ PRINT "UNDER";: \ PRINT USING MASKE$;P(I%); \ ELSE \ PRINT "OVER ";: \ PRINT USING MASKE$;P(I%-1); PRINT " DAYS"; PRINT TAB(65); PRINT USING MASKC$;A1(I%);A2(I%) PRINT NEXT I% PRINT:PRINT:PRINT TAB(53);"TOTAL"; PRINT T IF LEFT$(W1$,2)<>LEFT$(W6$,2) THEN GOSUB 5620 6380 W6$=W1$ REMARK SET CURRENT VENDOR S3=1 GOTO 6480 REMARK CLOSED ITEM LISTING ROUTINES 6400 IF W2%=2 THEN \ REMARK ZERO INVOICE AMOUNTS ON DELETE-FLAGGED INVOICES C(23)=0:C  مTO "; X0=E0:GOSUB 680.5 PRINT:PRINT A6$="OPEN":I3=OPEN.COUNT%:GOSUB 5020 A6$="CLOSED":I3=CLOSED.COUNT%:GOSUB 5020 A6$="DELETED":I3=DELETE.COUNT%:GOSUB 5020 IF S=3 THEN I3=OPEN.COUNT%+CLOSED.COUNT%+DELETE.COUNT%\ ELSE I3=AP.INVOICE.EXTENT A6م$="TOTAL":GOSUB 5020 GOTO 6040 "DELETED":I3=DELETE.COUNT%:GOSUB 5020 IF S=3 THEN I3=OPEN.COUNT%+CLOSED.COUNT%+DELETE.COUNT%\ ELSE I3=AP.INVOICE.EXTENT A6مممممAB(65); FOR I%=2 TO 5 A1(1)=A1(1)+A1(I%) A2(1)=A2(1)+A2(I%) NEXT I% PRINT USING MASKC$;A1(1);A2(1) 6780 PRINT:PRINT PRINT "THIS REPORT INCLUDES INVOICES"; IF S=3 THEN PRINT" FOR VENDOR # ";W7$; PRINT" FROM "; X0=B0:GOSUB 680.5 PRINT "   ION TO THE FILE CHAIN "A/P000" N$;"A/P INFORMATION F/M LOADING MENU" CLOSE 1 OPEN "A/P0F130.DAT" AS 1 X0=1:GOSUB 3350 REMARK WRITE UPDATED INFORMAT CURSOR GOTO 6000 %INCLUDE SUBS1 %INCLUDE A/P-INFO 5000 IF F=5 THEN 5030 X1=219+F*64:X2=2:X3=1:X4=99:GOSUB 345 REMARK ENTER THE # OF DAYS FOR AGING PERIOD 'F' P(F)=X0 RETURN 5030 X1=535:X2=6:X3=1:X4=999999:GOSUB 345 REMARK ENTER THE مCHECK REGISTER NUMBER P(5)=X0 RETURN 6000 MASKA$="##" MASKB$="######" OPEN "A/P0F130.DAT" AS 1,"CRT" RECL 1100 AS 19 X0=8:GOSUB 260 REMARK DISPLAY THE CRT MASK X0=1:GOSUB 3310 REMARK RETRIEVE THE CURRENT INFORMATION FILE DATA م X1=256:GOSUB 210 REMARK DISPLAY THE CURRENT INFORMATION FILE DATA FOR I%=1 TO 4 X1=28:GOSUB 215 PRINT USING MASKA$;P(I%) NEXT I% X1=24:GOSUB 215 PRINT USING MASKB$;P(5) 6040 X2=1:X3=0:X4=5:X2$="ENTER FIELD TO CHANGE (0 IF NONE)" REMARK REMARK ********************************************\ * A/P VENDOR FILE MAINTENANCE (A/P090) *\ * 6/28/79 10:20 AM *\ ******************************************** DIM M$(5),S$(2),Y(2),Z(2),G2$(5),G3(5),P(6) YES=1 WRITTEN$=CHR$ ALLOW CHANGES TO INFORMATION FILE DATA GOSUB 665 F=X0 IF F=0 THEN 6100 GOSUB 5000 GOTO 6040 6100 PRINT CLEAR.SCREEN$;"A/P INFORMATION F/M LOADING MENU" CLOSE 1 OPEN "A/P0F130.DAT" AS 1 X0=1:GOSUB 3350 REMARK WRITE UPDATED INFORMAT(255) %INCLUDE CURSOR S$(1)="VENDOR ACTIVITY REPORT":S$(2)="LIST OF VENDORS" GOTO 6000 %INCLUDE SUBS1 %INCLUDE GENINFO %INCLUDE READVEND %INCLUDE WRITEVND %INCLUDE A/P-INFO 825 IF LINE.COUNT% < 55 AND PAGE.COUNT% > 0 THEN RETURN REMARK LINE REMARK ######################################################### REMARK # ACCOUNTS PAYABLE INFORMATION F/M (A/P080) # REMARK # VERS. OF 5/19/79 2.30 PM # REMARK ######################################################### DIM P(6) %INCLUDE  AILS, CHECK A/P0F111... RETURN 2060 H=0 IF RECORD.COUNT < 1 THEN H=-1:L=1:RETURN READ #Y2,1;VAR$,VAR1 IF K$ < VAR$ THEN H=-1:L=1:RETURN IF K$ = VAR$ THEN L=1:RETURN READ #Y2,RECORD.COUNT;VAR$,VAR1 IF K$ > VAR$ THEN H=-1:L=RECORD.COUNT+1:RETU"NAME"; IF F1=1 THEN PRINT TAB(32);"LAST ACTIVITY CURRENT YEAR LAST YEAR"\ ELSE\ PRINT TAB(38);"ADDRESS";TAB(117);"PHONE NO." PRINT LINE.COUNT%=6 RETURN 2000 REMARK ********************************************\ * VENDOR FILE SEARRN IF K$ = VAR$ THEN L=RECORD.COUNT:RETURN H=RECORD.COUNT L=0 2070 M=INT((L+H)/2) READ #Y2,M;VAR$,VAR1 IF VAR$=K$ THEN L=M:RETURN IF VAR$ > K$ THEN H=M IF VAR$ < K$ THEN L=M IF H=M+1 THEN H=-1:L=M+1:RETURN GOTO 2070 RETURN 5000 IF CH ROUTINE 12/78 MAM *\ * ======================================== *\ * THIS SUBROUTINE USES THE 'B' ALGORITHM *\ * FROM KNUTH'S SORTING AND SEARCHING BOOK. *\ * THE ROUTINE FIRST SEARCHES A/P0F110.DAT*\ * AND, IF NO MATCH IS FOUND FORF=1 OR F=2 OR F=3 OR F=4 THEN\ X1=331+64*F:X2=24:X3=0:X4=0:GOSUB 345:\ REMARK ENTER VENDOR NAME/ADDR M$(F+1)=X0$:RETURN IF F=5 THEN X1=658:GOSUB 673:D=X0:\ REMARK ENTER VENDOR'S LAST ACTIVITY DATE RETURN IF F=6 OR F=7 THEN\ X1=664+(F-5) THE KEY IN *\ * K$, THE ROUTINE THEN SEARCHES A/P0F111 IN*\ * ORDER TO EITHER FIND A NEWLY ADDED RECORD*\ * OR POSITION THE POINTER, L, TO THE LOCA- *\ * TION OF THE RECORD TO INSERT. *\ *******************************************64:X2=11:X3=-9999999.99:X4=9999999.99:GOSUB 345:\ Y(F-5)=X0:\ REMARK ENTER VENDOR TOTAL FIELDS IN THIS ROUTINE RETURN X1=849:GOSUB 210 PRINT " " IF F=8 THEN\ X1=853:X2=10:X3=0:X4=9999999999:GOSUB 345:\ REMARK ENTER PHONE NUMBER ** Y2=1:RECORD.COUNT=AP.VENDFILE.EXTENT 2005 IF LEN(K$)<6 THEN K$=K$+" ":GOTO 2005 GOSUB 2060 REMARK PERFORM SEARCH ON A/P0F110.DAT IF H <> -1 THEN RETURN Y2=2:RECORD.COUNT=NEW.VENDOR.RECORDS% GOSUB 2060 REMARK IF A/P0F110 SEARCH F P9=X0:\ X0=P9:X1=850:GOSUB 760:PRINT REMARK DISPLAY PHONE NUMBER ON CRT RETURN 5100 FOR I%=2 TO 5 X1=396+(I%-2)*64:GOSUB 210 PRINT M$(I%) NEXT I% X1=658:GOSUB 210 X0=D:GOSUB 680.5 REMARK DISPLAY ACTIVITY DATE PRINT X1=25:G PRINTER ROUTINE PAGE.COUNT%=PAGE.COUNT%+1 PRINT CHR$(12); PRINT TAB((A1%-LEN(G2$(1)))/2);G2$(1);TAB(A1%);"DATE "; X0=G3(1):GOSUB 680.5 PRINT PRINT TAB((A1%-LEN(X4$))/2);X4$;TAB(A1%);"PAGE";PAGE.COUNT% PRINT PRINT CHR$(10);" CODE";TAB(17);   AS 2 X0=3:GOSUB 3310 REMARK READ A/P INFO FILE CLOSE 3 Y9=4:GOSUB 700 REMARK READ G/I FILE INFORMATION CLOSE 4 CONSOLE X0=9:GOSUB 260 REMARK DISPLAY CRT MASK 6020 X2=1:X3=0:X4=4 REMARK PROMPT FOR OPERATION CODE X2$="D$=WRITTEN$ THEN RETURN GOSUB 3200 REMARK GET VENDOR RECORD X4$=S$(F1):A1%=76+31*SGN(F1-1) REMARK SET REPORT TITLE & COLUMN WIDTH GOSUB 825 REMARK CHECK FOR END OF FORM LINE.COUNT%=LINE.COUNT%+1 PRINT W1$; TAB(9); M$(2); REMARENTER OPERATION CODE(0=EXIT;1=ADD;2=CHANGE;3=PRINT;4=YR END)" GOSUB 665 C=X0+1 IF C=1 THEN GOTO 6290 REMARK IF 'EXIT' WAS SELECTED, BRANCH IF C=3 THEN GOTO 6120 REMARK GO TO CHANGE RECORD ROUTINE IF C=4 THEN GOTO 6260 REMARK BRANCHK PRINT VENDOR NUMBER AND NAME IF F1=2 THEN\ REMARK IF VENDOR LIST, PRINT ADDR & PHONE PRINT TAB(35); M$(3); TAB(61); M$(4); TAB(87); M$(5); TAB(113); :\ X0=P9:GOSUB 760.5:PRINT IF F1=1 THEN\ REMARK IF ACTIVITY REPORT, PRINT TAB(34 TO THE FILE PRINT ROUTINE IF C=5 THEN GOTO 6280 REMARK GO TO YEAR-END ROUTINE 6040 GOSUB 265 REMARK REFRESH CRT MASK X1=30:GOSUB 210 PRINT "ADD " X1=271:X2=6:X3=0:X4=0:GOSUB 345 REMARK ENTER VENDOR NO. IF X0$<=" " THEN GOSUB 2);:\ REMARK PRINT ACTIVITY DATE & SALES AMOUNTS X0=D:GOSUB 680.5:\ PRINT TAB(48);: PRINT USING MASKA$; Y(2);: PRINT TAB(62);:\ PRINT USING MASKA$; Y(1):\ Z(2)=Z(2)+Y(2):\ REMARK ADD TO LAST-YEAR TOTALS Z(1)=Z(1)+Y(1) REMARK ADD TO 65:GOTO 6020 REMARK RE-PROMPT OPERATION CODE IF BLANK ENTRY K$=X0$ GOSUB 2000 REMARK SEARCH A/P0F110 FOR VENDOR REMARK THEN SEARCH A/P0F111 IN CASE IT REMARK WAS ENTERED ON THE DATA INPUT FILE. IF H=-1 THEN GOTO 6100 THIS-YEAR TOTALS RETURN REMARK START OF MAIN PROGRAM 6000 MASKA$=" #######.##" MASKB$=" ##########.##" OPEN "A/P0F110.DAT" RECL 162 AS 1, "A/P0F130.DAT" AS 3,\ "G/I0F010.DAT" AS 4, "CRT" RECL 1100 AS 19 CREATE "A/P0F111.DAT" RECL 162IF VAR1 > 0 THEN X2$="ALREADY ON FILE":GOSUB 615:GOTO 6040\ ELSE\ RE.USE.DELETED.RECORD=YES:FILE.ASSIGNMENT=Y2 6100 W1$=K$ 6100.1 IF LEN(W1$)<6 THEN W1$=W1$+" ":GOTO 6100.1 FOR I1%=1 TO 8 F=I1% GOSUB 5000 NEXT I1% GOTO 6160 6110 IF RE.UOSUB 215 PRINT USING MASKA$;Y(1) X1=25:GOSUB 215 PRINT USING MASKA$;Y(2) X0=P9:X1=850:GOSUB 760 RETURN 5200 REMARK ********** VENDOR FILE PRINT ROUTINE ********** IF Y9=1 AND MSTR.RECORD$=WRITTEN$ THEN RETURN IF Y9=2 AND NEW.RECOR  =2 THEN Y9=2\ ELSE Y9=1 X0=L:GOSUB 3250 REMARK RE-SAVE RECORD WITH A '0' LAST ACTIVITY DATE X2$="RECORD DELETED":GOSUB 615 GOTO 6020 X2$="NOT ON FILE":GOSUB 615 GOTO 6140 6260 X1=30:GOSUB 210 PRINT "PRINT " P=0 X2=1:X3=0:X4=2:X2$="MARK WRITE CUSTFILE AT I%+1 NEXT I% 6115 NEW.VENDOR.RECORDS%=NEW.VENDOR.RECORDS%+1 Y9=2:X0=L:GOSUB 3250 CLOSE 2 OPEN "A/P0F111.DAT" RECL 162 AS 2 REMARK THE FILE IS CLOSED & THEN RE-OPENED TO SAVE THE FCB IN \ A FILE DISASTER SITUATION. GOTOENTER REPORT TYPE (0=NONE, 1=ACTIVITY, 2=LIST) " GOSUB 665 F1=X0 IF F1=0 THEN GOTO 6020 Z(1)=0 Z(2)=0 CLOSE 1 CLOSE 2 OPEN "A/P0F110.DAT" RECL 162 AS 1, "A/P0F111.DAT" RECL 162 AS 2 LPRINTER WIDTH 131 GOSUB 6800 GOSUB 6810 LINE.COUN 6040 REMARK START OVER FOR ANOTHER NEW VENDOR 6120 GOSUB 265 REMARK REFRESH CRT MASK X1=30:GOSUB 210 PRINT "CHANGE " 6140 X1=271:X2=6:X3=0:X4=0:GOSUB 345 REMARK ENTER VENDOR # IF X0$ <= " " THEN GOTO 6020 REMARK PROMPT OPERATIOT%=66 Y9=0 X0=0 6265 IF MSTR.READ% > AP.VENDFILE.EXTENT AND NEW.READ% > NEW.VENDOR.RECORDS%\ THEN\ GOTO 6270 IF NEW.RECORD$ > MSTR.RECORD$\ OR\ NEW.READ% > NEW.VENDOR.RECORDS%\ THEN\ X0=MSTR.READ%:Y9=1:GOSUB 5200:\ MSTR.RECORD$=WRITTN CODE IF BLANK ENTRY K$=X0$ GOSUB 2000 IF H=-1 OR VAR1 = 0 THEN X2$="NOT ON FILE":GOSUB 615:GOTO 6120 X0=L:Y9=Y2:GOSUB 3200 REMARK GET VENDOR RECORD FROM FILE GOSUB 5100 6160 X2=2:X3=0:X4=99 X2$="ENTER FIELD TO CHANGE (0=NONE, 99=DELETE)EN$:\ GOSUB 6800 IF NEW.RECORD$=WRITTEN$ THEN GOTO 6265 IF MSTR.RECORD$ > NEW.RECORD$\ OR\ MSTR.READ% > AP.VENDFILE.EXTENT\ THEN\ X0=NEW.READ%:Y9=2:GOSUB 5200:\ NEW.RECORD$=WRITTEN$:\ GOSUB 6810 GOTO 6265 6270 PRINT NEW.READ%=0 " GOSUB 665 F=X0 IF F=0 AND C=2 THEN GOTO 6110 IF F=0 THEN GOTO 6180 IF F=99 THEN GOTO 6200 GOSUB 5000 GOTO 6160 6180 X0=L GOSUB 3250 GOTO 6120 6200 X2=3:X3=0:X4=0:X2$="ENTER DELETE CODE":GOSUB 665 IF X0$<>"DEL" THEN 6020 D=0 IF C MSTR.READ%=0 IF F1=1 THEN PRINT "TOTALS";TAB(45);:PRINT USING MASKB$;Z(2);Z(1) PRINT CONSOLE GOTO 6260 6280 X1=30:GOSUB 210 PRINT "YR. END" X2=1:X3=0:X4=1:X2$="DO YOU HAVE A RECENT ACTIVITY REPORT?" GOSUB 665 IF X0=0 THEN 6260 X2=1:X3=0SE.DELETED.RECORD=YES THEN Y9=FILE.ASSIGNMENT:\ X0=L:GOSUB 3250:RE.USE.DELETED.RECORD=0:GOTO 6040 IF L > NEW.VENDOR.RECORDS% THEN GOTO 6115 L%=L FOR I%=NEW.VENDOR.RECORDS% TO L% STEP -1 READ #2,I%;LINE X0$ PRINT USING "&";#2,I%+1;X0$ RE   REMARK IF MASTER RECORD IS LOWER, IT SATISFIES OUTPUT NEEDS Y9=1:X0=MSTR.READ%:GOSUB 3200:\ REMARK GET THE RECORD GOSUB 6900:\ REMARK WRITE THE MASTER VENDOR RECORD OUT TO WORKFILE.DAT MSTR.RECORD$=WRITTEN$:\ GOSUB 6800 REMARK RE IF NEW.VENDOR.RECORDS%=0 THEN 6285 FOR I%=1 TO NEW.VENDOR.RECORDS% X0=I% GOSUB 3200 Y(1)=Y(2):Y(2)=0 GOSUB 3250 NEXT I% 6285 GOSUB 265 GOTO 6020 6290 REMARK END OF MAINLINE CODE, START OF MERGE ROUTINE... PRINT CURSOR.HOME$:PRINT:PRINAD ANOTHER RECORD FROM A/P0F110.DAT IF NEW.RECORD$=WRITTEN$ THEN GOTO 6300 IF MSTR.RECORD$ > NEW.RECORD$\ OR\ MSTR.READ% > AP.VENDFILE.EXTENT\ THEN\ Y9=2:X0=NEW.READ%:GOSUB 3200:\ REMARK GET THE RECORD GOSUB 6900:\ NEW.RECORD$=WRITTENT "WORKING... DO NOT INTERRUPT" IF AP.VENDFILE.EXTENT=0 THEN DELETE 1:\ CLOSE 2:A=RENAME("A/P0F110.DAT","A/P0F111.DAT"):\ OUTPUT.COUNT%=NEW.VENDOR.RECORDS%:GOTO 9000 CLOSE 1,2,19 OPEN "A/P0F110.DAT" RECL 162 AS 1, "A/P0F111.DAT" RECL 162 AS 2 C$:\ GOSUB 6810 GOTO 6300 6800 IF END #1 THEN 6801 MSTR.READ%=MSTR.READ%+1 READ #1, MSTR.READ%; MSTR.RECORD$, VAR1 IF VAR1 = 0 THEN GOTO 6800 REMARK IF LAST ACTIVITY=0 THEN READ NEXT RCD RETURN 6801 MSTR.READ%=AP.VENDFILE.EXTENT + 1 MSTRREATE "WORKFILE.DAT" RECL 162 AS 3 IF NEW.VENDOR.RECORDS% >0 THEN GOTO 6299 X2=1:X3=0:X4=0 X2$="ENTER 'Y' TO REORGANIZE VENDOR FILE; ANY OTHER KEY TO EXIT PROGRAM" GOSUB 665 IF X0$ <> "Y" THEN GOTO 9005 6299 GOSUB 6800 REMARK GET THE FIRST.RECORD$=WRITTEN$ RETURN 6810 REMARK READ RECORD FROM A/P0F111.DAT IF END #2 THEN 6811 NEW.READ%=NEW.READ%+1 READ #2, NEW.READ%; NEW.RECORD$, VAR1 IF VAR1=0 THEN GOTO 6810 REMARK IF LAST ACTIVITY=0 THEN READ NEXT RCD RETURN 6811 NEW.READ MASTER RECORD GOSUB 6810 REMARK GET THE FIRST "NEW" RECORD 6300 IF MSTR.READ% > AP.VENDFILE.EXTENT \ AND NEW.READ% > NEW.VENDOR.RECORDS% THEN GOTO 8999 IF NEW.RECORD$ > MSTR.RECORD$\ OR\ NEW.READ% > NEW.VENDOR.RECORDS%\ THEN \ %=NEW.VENDOR.RECORDS% + 1 NEW.RECORD$=WRITTEN$ RETURN 6900 REMARK WRITE VENDOR RECORD TO WORKFILE OUTPUT.COUNT%=OUTPUT.COUNT%+1 Y9=3 X0=OUTPUT.COUNT% GOSUB 3250 REMARK WRITE VENDOR RECORD TO WORKFILE RETURN 8999 DELETE 1 :X4=1:X2$="O.K. TO DO YEAR END UPDATE?" GOSUB 665 IF X0 <> 1 THEN GOTO 6020 PRINT "WORKING - DO NOT INTERRUPT" Y9=1 FOR I%=1 TO AP.VENDFILE.EXTENT X0=I% GOSUB 3200 6281 Y(1)=Y(2):Y(2)=0 REMARK RESET TOTALS GOSUB 3250 NEXT I% Y9=2   مT% X0=5 OPEN "A/P0F130.DAT" AS X0 GOSUB 3350 REMARK RE-WRITE NEW EXTENT INFO 9005 PRINT CLEAR.SCREEN$;"A/P VENDOR F/M LOADING MENU" CHAIN "A/P000" REMARK TERMINATE PROGRAM AND CHAIN TO MENU  REMARK ***************************************************\ * A/P110.BAS A/P & A/R GENERAL INFORMATION F/M *\ * 3/8/79 4:30 PM *\ *************************************************** DEF FNR(Z1)=INT(Z1*م100+.5)/100 DIM G2$(5),G3(5) %INCLUDE CURSOR GOTO 6000 %INCLUDE SUBS1 %INCLUDE GENINFO REMARK LINE PRINTER ROUTINE -- REPORT HEADINGS 825 A1=85 REMARK SET CARRIAGE WIDTH IF LINE.COUNT% < 55 THEN RETURN REMARK IF NOT ENDم OF PAGE, RETURN TO MAINLINE PAGE.COUNT%=PAGE.COUNT%+1 PRINT CHR$(12); PRINT TAB((A1-LEN(G2$(1)))/2);G2$(1);TAB(A1);"DATE "; X0=G3(1):GOSUB 680.5 REMARK PRINT REPORT DATE PRINT PRINT TAB((A1-LEN(X4$))/2);X4$;TAB(A1);"PAGE ";PAGE.COUNT% مREMARK PRINT PAGE NUMBER PRINT PRINT PRINT LINE.COUNT% = 6 REMARK RESET LINE COUNTER AFTER SKIPPING TO NEW PAGE RETURN REMARK DISPLAY GENERAL INFORMATION FILE CONTENTS ON CRT 5300 X0=1: GOSUB 260 REMARK DISPLAY ENTRY  REMARK DELETE A/P0F110.DAT DELETE 2 REMARK DELETE A/P0F111.DAT CLOSE 3 REMARK CLOSE WORKFILE.DAT BEFORE RENAMING IT A=RENAME("A/P0F110.DAT","WORKFILE.DAT") REMARK WORKFILE BECOMES NEW VENDOR FILE 9000 AP.VENDFILE.EXTENT=OUTPUT.COUN!   REMARK SET GENERAL INFORMATION FILE ASSIGNMENT OPEN "G/I0F010.DAT" AS Y9,"CRT" RECL 1100 AS 19 GOSUB 700 REMARK READ GENERAL INFORMATION FILE GOSUB 5300 REMARK DISPLAY FILE CONTENTS ON SCREEN 6005 X1=128:X2=2:X3=-1:X4=14: GOSUB 3ER X1=19: GOSUB 215 PRINT G4;TAB(26) REMARK REMARK DISPLAY HOURLY RATE PRINT FOR I%=1 TO 5 X1=20: GOSUB 215 PRINT G2$(I%);TAB(63) REMARK DISPLAY COMPANY NAME/ADDRESS NEXT I% X1=308:X0=G3(1): GOSUB 680 REMARK DISPLAY CURREN45 C%=X0 IF C% = -1 THEN \ REMARK IF NEGATIVE OPERATION CODE, EXIT PROGRAM. PRINT CLEAR.SCREEN$;"G/I F/M LOADING MENU":\ CHAIN "A/P000" REMARK LOAD MENU AT THIS POINT ON C%+1 GOSUB 6100,6010,6020,6030,6040,6050,6050,6050,6050,6050,60T DATE PRINT X1=53: GOSUB 215 X0=G3(2): GOSUB 680.5 REMARK DISPLAY PERIOD START DATE PRINT X1=53: GOSUB 215 X0=G3(3): GOSUB 680.5 REMARK DISPLAY PERIOD END DATE PRINT X1=53: GOSUB 215 PRINT G3(4) REMARK DISPLAY PAYROLL60,\ 6060,6060,6070,6080 CLOSE Y9 OPEN "G/I0F010.DAT" AS Y9 GOSUB 720 REMARK RE-WRITE GENERAL INFORMATION FILE GOSUB 5310 REMARK RE-DISPLAY SCREEN GOTO 6005 6010 X1=275:X2=2:X3=1:X4=10:GOSUB 345 REMARK ENTER COMPANY NUMBE NUMBER X1=53:GOSUB 215 PRINT G3(5) REMARK DISPLAY DAY NUMBER RETURN 6000 A$="COMPANY CODE ## NEXT CHECK NO. ###### O.T. RATE ##.## " A$=A$+"HOURLY RATE ##.##" B$="COMPANY NAME /#######################/ FED-STATE TAX NUMBR G1=X0 RETURN 6020 X1=339:X2=6:X3=1:X4=999999:GOSUB 345 G2=X0 REMARK ENTER NEXT CHECK NUMBER RETURN 6030 X1=403:X2=5:X3=0:X4=99.99:GOSUB 345 G3.0=FNR(X0) REMARK ENTER OVERTIME RATE MULTIPLIER RETURN 6040 X1=467:X2=5:X3=0:X4ERS" B$=B$+" /########################/" C$="ADDRESS /#####################/ /#######################" C$=C$+"/ /########################/" MASK6$="######" REMARK SET ALL PRINT MASKS UP AT START OF THE PROGRAM Y9=1 =99.99:GOSUB 345 REMARK ENTER HOURLY RATE G4=FNR(X0) RETURN 6050 X1=595+64*(C%-5):X2=24:X3=0:X4=0:GOSUB 345 REMARK ENTER COMPANY NAME AND ADDRESS G2$(C%-4)=X0$ RETURN 6060 X1=308+64*(C%-10):GOSUB 673 REMARK ENTER DATES FOR FIELDS 10MASK ON CRT 5310 X1=274:GOSUB 210:PRINT G1;" " REMARK DISPLAY COMPANY NUMBER X1=339: GOSUB 210 PRINT USING MASK6$;G2 REMARK DISPLAY NEXT CHECK NUMBER X1=19: GOSUB 215 PRINT G3.0;TAB(26) REMARK DISPLAY OVERTIME RATE MULTIPLI"  مRINT GENERAL INFORMATION ON PRINTER LPRINTER LINE.COUNT%=60 X4$="GENERAL INFORMATION FILE MAINTENANCE":GOSUB 825 REMARK PRINT HEADINGS FOR REPORT PRINT "PERIOD START";TAB(19); X0=G3(2):GOSUB 680.5 REMARK PRINT PERIOD START DATE PRINT م PRINT "PERIOD END";TAB(19); X0=G3(2):GOSUB 680.5 REMARK PRINT PERIOD END DATE PRINT PRINT "PAYROLL NUMBER";TAB(18);G3(4) PRINT "DAY NUMBER";TAB(18);G3(5) PRINT :PRINT PRINT USING A$;G1,G2,G3.0,G4 PRINT USING B$;G2$(1),G2$(5) REMARمK PRINT OTHER G/I FILE FIELDS PRINT USING C$;G2$(2),G2$(3),G2$(4) CONSOLE RETURN ;G3(4) PRINT "DAY NUMBER";TAB(18);G3(5) PRINT :PRINT PRINT USING A$;G1,G2,G3.0,G4 PRINT USING B$;G2$(1),G2$(5) REMARممم,11 AND 12 G3(C%-9)=X0 RETURN 6070 X1=500:X2=2:X3=1:X4=3:GOSUB 345 REMARK ENTER PAYROLL NUMBER G3(4)=X0 RETURN 6080 X1=564:X2=2:X3=1:X4=14:GOSUB 345 REMARK ENTER DAY NUMBER IN PAYROLL PERIOD G3(5)=X0 RETURN 6100 REMARK P#  4:GOSUB 673 REMARK ENTER INVOICE DATE PRINT D(23)=X0 RETURN 5080 X1=718:GOSUB 673 REMARK ENTER AGE DATE PRINT D(24)=X0 RETURN 5090 IF W1%=4 THEN 5150 REMARK ENTER INVOICE OR DEBIT MEMO AMOUNT X1=430:X2=9:X3=0:X4=999999.,A3$(10),P(6),Y(2) %INCLUDE CURSOR DATA "INVOICE"," "," ","CR MEMO","DB MEMO","NEW","DELETE","MODIFY" MASKA$=" ######.##" MASKB$="######" MASKC$="######.# #######.## " MASKD$="##) ###### #######.##" DEF FNR(Z9)=(INT(ABS(Z9)*100+99:GOSUB 345 C(23)=X0 X1=429:GOSUB 210 PRINT USING MASKA$;C(23) GOSUB 5140 RETURN 5100 X1=498:X2=5:X3=0:X4=100:GOSUB 345 REMARK ENTER DISCOUNT RATE X1=493:GOSUB 210 C(27)=X0 PRINT USING MASKA$;C(27) GOSUB 5140 RETURN 5110 X1=.5)/100)*SGN(Z9) REMARK ROUND TO NEAREST CENT DEF FND(Z9)=FNR(Z9)*SGN(D2) REMARK USED IN G/L AND JOB POSTING VERIFICATIONS GOTO 6000 %INCLUDE SUBS1 %INCLUDE BINSEARC %INCLUDE READINV %INCLUDE WRITEINV %INCLUDE READVEND %INCLUDE A/P-INFO .3622:X2=9:X3=0:X4=999999.99:GOSUB 345 REMARK ENTER FREIGHT AMOUNT C(25)=FNR(X0) X1=621:GOSUB 210 PRINT USING MASKA$;C(25) GOSUB 5140 RETURN 5120 X1=686:X2=9:X3=0:X4=999999.99:GOSUB 345 REMARK ENTER TAX AMOUNT C(26)=FNR(X0) X1=685:GOS14 RETURN REMARK THESE LINE NUMBERS FOR G/L SUBROUTINES 10.60 RETURN 5010 IF F=0 OR F>9 THEN GOTO 5040 REMARK BRANCH TO ENTER VALUE OF FIELD "F" ON F GOTO 5040,5050,5060,5070,5080,5090,5100,5110,5120 5040 X1=462:X2=8:X3=0:X4=0:GOSUB 3UB 210 PRINT USING MASKA$;C(26) GOSUB 5140 RETURN 5140 C(24)=-1*FNR((C(23)*C(27))/100) REMARK RECALCULATE AND DISPLAY DISCOUNT AMOUNT X1=557:GOSUB 210 PRINT USING MASKA$;C(24) GOTO 5215 5150 X1=494:X2=9:X3=-1*C(24):X4=999999.99:GOSUB45 REMARK ENTER PURCHASE ORDER NO. W2$=X0$ RETURN 5050 X1=526:X2=2:X3=0:X4=0:GOSUB 345 REMARK ENTER BUYER W3$=X0$ RETURN 5060 X1=590:X2=6:X3=0:X4=999999:GOSUB 345 REMARK ENTER CHECK REGISTER NO. D(25)=X0 RETURN 5070 X1=65 345 REMARK ENTER CREDIT MEMO AMOUNT C(23)=FNR(X0) X1=494:GOSUB 210 PRINT USING MASKA$;C(23) GOTO 5230 REMARK DISPLAY TRANSACTION MASK AND VALUES 5200 IF W1%=4 THEN 5220 REMARK CREDIT MEMO TRANSACTIONS AT LINE 5220 X0=2:GOSUB  REMARK ********************************************** REMARK * ACCOUNTS PAYABLE TRANSACTION F/M PROGRAM * REMARK * (A/P120.BAS) VERS OF 3 PM 6/27/78 * REMARK ********************************************** DIM C(27),D(27),W$(5),M$(5)$  SS THIS SECTION UNLESS G/L PROGRAMS INSTALLED 5420 Y2=5 K1=X0 GOSUB 10.60 IF H=-1 THEN X2$="INVALID G/L NUMBER":GOSUB 615:GOTO 5410 5440 X1=(I%-1)*64+338:X2=10:X3=-999999.99:X4=999999.99:GOSUB 345 REMARK ENTER DISTRIBUTION AMOUNT X0=FNR(X0) 5425)+C(26) N1=1 RETURN REMARK DISPLAY CREDIT MEMO TRANSACTIONS 5220 X0=13:GOSUB 260 REMARK GET CRT MASK #13 GOSUB 5375 GOSUB 5250 X1=558:GOSUB 210 PRINT USING MASKA$;C(24) X1=622:GOSUB 210 PRINT USING MASKA$;C(25) 5230 X45 D1=D1+X0-C(I%) REMARK ACCUMULATE G/L AMOUNT TO TOTAL \ AND DISPLAY ACCOUNT AND AMOUNT C(I%)=X0 X1=(I%-1)*64+325:GOSUB 210 PRINT USING MASKC$;D(I%),C(I%) RETURN 5450 X1=(I%-12)*64+358:X2=6:X3=0:X4=999999:GOSUB 345 REMARK EN1=686:GOSUB 210 PRINT USING MASKA$;C(23)+C(24) N1=1 RETURN 5250 X1=266:GOSUB 210 REMARK DISPLAY TRANSACTION DATA PRINT W1$ X1=7:GOSUB 215 PRINT M$(2) X1=15:GOSUB 215 PRINT USING MASKB$;W0 X1=15:GOSUB 215 PRINT W2$ IF W1%=4 TER JOB NUMBER D(I%)=X0 IF X0<>0 THEN \ REMARK ENTER DISTRIBUTION AMOUNT X1=(I%-12)*64+371:X2=10:X3=-999999.99:X4=999999.99:GOSUB 345:\ X0=FNR(X0) D2=D2+X0-C(I%) REMARK ACCUMULATE JOB AMOUNT TO TOTAL C(I%)=X0 X1=(I%-12)*64+350:GTHEN X1=494 \ ELSE X1=429 GOSUB 210 PRINT USING MASKA$;C(23) X1=526:GOSUB 210 PRINT W3$ X1=15:GOSUB 215 PRINT USING MASKB$;D(25) X1=15:GOSUB 215 X0=D(23):GOSUB 680.5:PRINT X1=15:GOSUB 215 X0=D(24):GOSUB 680.5:PRINT RETURN 5375OSUB 210 PRINT USING MASKD$;I%,D(I%),C(I%) REMARK DISPLAY ACCOUNT AND AMOUNT RETURN 5460 IF W1%=4 THEN D0=C(23)\ REMARK CALCULATE TOTALS ELSE D0=C(23)+C(24)+C(25)+C(26) IF FND(D1)<>D2 THEN 5465 IF D1+D2<>FNR(D0)+FND(D0) THEN 5465 PR PRINT CURSOR.HOME$;"A/P TRANSACTION F/M " REMARK DISPLAY PROGRAM TITLE RETURN 5410 IF I%>11 THEN 5450 X1=(I%-1)*64+326:X2=7:X3=0:X4=99999.9:GOSUB 345 REMARK ENTER G/L DISTRIBUTION D(I%)=X0 IF X0=0 THEN 5445 GOTO 5440 REMARK BYPAINT CURSOR.HOME$; PRINT:PRINT:PRINT PRINT TAB(64); IF N1<=1 THEN RETURN N1=0 GOTO 5460 5465 IF N1=1 THEN \ REMARK ROUTINE TO CORRECT OUT-OF-BALANCE DISTRIBUTION N1=2:\ GOSUB 5520:\ F=0 5470 IF D1<>D0 THEN 5480 X0=39:X0$="JOB"260 GOSUB 5375 GOSUB 5250 X1=493:GOSUB 210 PRINT USING MASKA$;C(27) FOR A1%=24 TO 26 PRINT LEFT$(X9$,45); REMARK PRINT NON-DESTRUCTIVE SPACES PRINT USING MASKA$;C(A1%) NEXT A1% 5215 X1=749:GOSUB 210 PRINT USING MASKA$;C(23)+C(24)+C(%  VAR1=0 THEN M$(2)="NOT ON FILE" \ ELSE Y9=1:X0=L:GOSUB 3200 REMARK LOAD VENDOR INFORMATION RETURN 5590 FILE.NO=2 X0%=RECORD.NUMBER.ENTERED% GOSUB 3050 REMARK WRITE TRANSACTION RCD TO A/P0F020 X2$="RECORDED":GOSUB 615 RETURN 570LS IF D1<>D0 THEN 5480 GOTO 5460 5490 IF X2=0 THEN RETURN REMARK THIS SUBROUTINE DISPLAYS G/L OR \ JOB POSTING DISCREPANCY AMOUNTS X1=192:GOSUB 210 PRINT TAB(X0);X0$;" DIST OFF"; PRINT USING MASKA$;X2;TAB(64) N1=2 GOSUB 590 X2$="LAST CHANGES IGNORED" REMARK IGNORE LAST ENTERED CHANGES GOSUB 615 RETURN 5800 X2$="LAST TRANSACTION VOIDED" REMARK VOID LAST TRANSACTION GOSUB 615 W2%=W2%+10 FILE.NO=2 X0%=RECORD.NUMBER.ENTERED% REMARK SET W2% TO LOGICAL50 RETURN 5520 IF N1+F=5 THEN RETURN REMARK REDISPLAY G/L AND JOB DISTRIBUTION MASK AND TOTALS X0=3:GOSUB 260 GOSUB 5375 X1=320:GOSUB 210 FOR I%=1 TO 11 X1=6:GOSUB 215 IF D(I%)=0 THEN X1=26:GOSUB 215\ ELSE\ PRINT USING MASKC$;LY DELETE THIS RECORD \ BY ADDING 10 TO CURRENT VALUE... GOSUB 3050 REMARK SAVE RECORD ON A/P0F020 RETURN 5900 X2=1:X3=0:X4=F1:X2$="ENTER FIELD TO CHANGE(0=NONE)":GOSUB 665 REMARK ALLOW CHANGES TO FIELDS ON THE INVOICE SCREEN F=XD(I%),C(I%); IF D(I%+11)>0 THEN PRINT USING MASKD$; I%+11,D(I%+11),C(I%+11)\ ELSE PRINT NEXT I% IF F=3 THEN 5950 RETURN 5550 X0%=RECORD.NUMBER.ENTERED% FILE.NO=2:GOSUB 3000 REMARK GET TRANSACTION RECORD FROM A/P0F020 D1=C(1)+C(2)+C(0 IF F=0 THEN RETURN GOSUB 5010 GOTO 5900 5950 X2=2:X3=0:X4=22:X2$="ENTER FIELD TO CHANGE(0=NONE)":GOSUB 665 REMARK ALLOW CHANGES TO G/L AND JOB DISTRIBUTION FIELDS IF X0=0 THEN RETURN I%=X0 GOSUB 5410 IF N1=2 THEN RETURN GOTO 5950 3)+C(4)+C(5)+C(6)+C(7)+C(8)+C(9)+C(10)+C(11) D2=C(12)+C(13)+C(14)+C(15)+C(16)+C(17)+C(18)+C(19)+C(20)+C(21)+C(22) IF W1%=4 THEN F1=6 \ ELSE F1=9 RECORD.COUNT=AP.VENDFILE.EXTENT Y2=1 XYZ$=W1$+" " K$=LEFT$(W1$,6) GOSUB 1060 IF H=-1 OR  REMARK START OF MAIN PROGRAM 6000 OPEN "A/P0F110.DAT" RECL 162 AS 1 REMARK OPEN VENDOR FILE OPEN "A/P0F020.DAT" RECL 580 AS 2 REMARK OPEN TRANSACTION FILE OPEN "A/P0F130.DAT" AS 4 REMARK OPEN A/P INFORMATION FILE OPEN "CRT" RECL 1:X2=D0-D2:GOSUB 5490 REMARK USE SUBROUTINES TO CORRECT JOB TOTALS IF D2 <> FND(D0) THEN 5470 PRINT CURSOR.HOME$; PRINT:PRINT:PRINT PRINT TAB(64) GOTO 5460 5480 X0=6:X0$="G/L":X2=D0-D1:GOSUB 5490 REMARK USE SUBROUTINES TO CORRECT G/L TOTA&  SK IF F=4 THEN GOSUB 5800:GOTO 6160 REMARK VOID TRANSACTION AND GO BACK TO VENDOR NUMBER ENTRY IF F=5 THEN GOSUB 5700:GOTO 6160 REMARK IGNORE LAST CHANGES 6400 PRINT CLEAR.SCREEN$;"A/P TRANSACTION F/M LOADING MENU" REMARK END PROGRAM AN REMARK DISPLAY PROGRAM IDENTIFICATION X0=0 X2=3:X3=0:X4=TRANSACTION.RCD.COUNT%:\ X2$="ENTER RECORD NO. TO CHANGE (0 TO END)":GOSUB 665 REMARK ENTER NUMBER OF TRANSACTION TO CHANGE IF X0=0 THEN GOTO 6400 REMARK END PROGRAM ON 0 ENTRY RECOD RE-LOAD MENU CHAIN "A/P000" :GOTO 6160 REMARK IGNORE LAST CHANGES 6400 PRINT CLEAR.SCREEN$;"A/P TRANSACTION F/M LOADING MENU" REMARK END PROGRAM ANRD.NUMBER.ENTERED%=X0 F=0 GOSUB 5550 REMARK RETRIEVE TRANSACTION IF W2%>9 THEN X2$="TRANSACTION IS VOID":GOSUB 615: GOTO 6160 GOSUB 5200 REMARK DISPLAY TRANSACTION GOSUB 5900 REMARK ALLOW CHANGES TO INVOICE SCREEN FIELDS 6380 GمOSUB 5460 REMARK CALCULATE TOTAL X0=11:GOSUB 260 REMARK GET THE ACTION CODE MASK FROM CRT FILE GOSUB 5375 REMARK DISPLAY PROGRAM IDENTIFICATION X1=140:X2=1:X3=1:X4=5:GOSUB 345 REMARK ENTER ACTION CODE F=X0 IF F=1 THEN GOSUمB 5590:GOTO 6160 REMARK WRITE THE TRANSACTION RCD IF F=2 THEN GOSUB 5200:GOSUB 5900:GOTO 6380 REMARK DISPLAY TRANSACTION DATA AND ALLOW CHANGES IF F=3 THEN GOSUB 5520:N1=1:GOTO 6380 REMARK DISPLAY G/L & JOB DATA AND RETURN TO ACTION CODE MAم100 AS 19 X0=4 GOSUB 3310 REMARK GET A/P GENERAL INFORMATION GOTO 6160 REMARK SKIP OPENING G/L FILE FOR NOW OPEN "G/L0F110.DAT" RECL 157 AS 5 OPEN "G/L0F130.DAT" AS 6 FILE.NO%=6:GOSUB .314 6160 PRINT CLEAR.SCREEN$; GOSUB 5375 '  مusly found on -FOG.008, .010, .012, and .013 and also available on -SIGM.01A. Refer to ABSTRACT.043 and CATALOG.043 for further information. Jim Woolley FOG Disk Librarian October, 1982 ممممممم DISK.DOC -FOG/HAK.003 First Osborne Group (FOG) Hackers Disk Files on this disk and continuing on -FOG/HAK.001 and .002 are from the Osborne/McGraw-Hill accounts receivable/payable system previo