rem This is the Purchase Order Entry Program rem The CP/MUG version does not include VPJOSORT, so \ do not select function 7. %INCLUDE ALL.BAS dim n(2,20),k$(4,20),g(10),q(10) l$="$$##,###.##":u$="##########":v$="####" repeat$="--------------------------------" fill$=" " z5$="b:po":z6$=z5$+"back":z7$=z5$+"size" RESTORE for z=1 to 70:delim1$=delim1$+"*":delim2$=delim2$+"=":next z fmt1$ ="Rec No. #### 1 - Tag ######## 2 - A/P Account No. ##########" fmt2$ ="3 - Pur Ord No. ########## 4 - Buyer / /" fmt3$ ="5 - Vend Inv No. / / 6 - Req. Date / /" fmt4$ ="7 - Carrier (Via) / / 8 - FOB Point / /" fmt5$ ="9 - Terms / / 10- Tax Code ! Flags / /" fmt6$ ="12- Vendor Rec No. #### 13- Shipping Chgs $##########.##" fmt7$ =" Item Record No Quantity Item Record No Quantity" fmt8$ ="No 1 #### ########## No 2 #### ##########" fmt9$ ="No 3 #### ########## No 4 #### ##########" fmt10$="No 5 #### ########## No 6 #### ##########" fmt11$="No 7 #### ########## No 8 #### ##########" fmt12$="No 9 #### ########## No 10 #### ##########" 540 K$(4,1)="1 - NEW ENTRY":K$(4,2)="2 - EXAMINE EXISTING ENTRY" 550 K$(4,3)="3 - MODIFY EXISTING ENTRY" 560 K$(4,4)="4 - DELETE EXISTING ENTRY" 570 K$(4,5)="5 - CREATE NEW FILE":K$(4,6)="6 - CLEAR EXISTING FILE" 580 K$(4,7)="7 - BACK-UP AND SORT FILE":K$(4,8)="8 - LIST FILE" 590 K$(4,9)="9 - FINISHED" print clear$:print 1100 K$(1,1)="TAG":K$(1,2)="A/P ACCT #":K$(1,3)="PUR ORD #" 1105 K$(1,4)="BUYER":K$(1,5)="VEND INV. #":K$(1,6)="REQUIRED DATE" 1110 K$(1,7)="CARRIER (VIA)":K$(1,8)="FOB POINT":K$(1,9)="TERMS (1,2, OR 3)" 1130 K$(1,10)="TAX CODE":K$(1,11)="FLAGS" 1132 K$(1,12)="VENDOR REC #" 1135 K$(1,13)="SHIPPING CHARGES" 1200 K$(2,1)="1 - TAG":K$(2,2)="2 - A/P ACCT #":K$(2,3)="3 - PUR ORD #" 1205 K$(2,4)="4 - BUYER":K$(2,5)="5 - VEND INV #" 1206 K$(2,6)="6 - REQUIRED DATE":K$(2,7)="7 - CARRIER(VIA)" 1210 K$(2,8)="8 - FOB POINT":K$(2,9)="9 - TERMS (1,2, OR 3)" 1230 K$(2,10)="10- TAX CODE":K$(2,11)="11- FLAGS" 1232 K$(2,12)="12- VENDOR REC #" 1235 K$(2,13)="13- SHIPPING CHARGES" 1300 N(1,1)=8:N(1,2)=10:N(1,3)=10:N(1,4)=14:N(1,5)=10:N(1,6)=8 1305 N(1,7)=8:N(1,8)=10:N(1,9)=10:N(1,10)=1:N(1,11)=4:N(1,12)=4 1310 N(1,13)=12:G(0)=4:Q(0)=10 print clear$:print 1500 if end #1 then 6000 if end #2 then 15000 open z5$ recl 384 as 1 close 1 open z7$ as 2 read #2;z2,z3 close 2 1600 REM 1620 PRINT CLEAR$ if z2>z3 then print "*** OUT OF RECORD SPACE ***" PRINT "PURCHASE ORDER ENTRY PROGRAM" PRINT "----------------------------" PRINT:PRINT "THERE ARE ";Z3;" AVAILABLE RECORDS" PRINT "OF THESE THERE ARE:";TAB(30);(Z3-Z2)+1;" RECORDS OPEN" PRINT ;TAB(30);Z2-1;" RECORDS USED" PRINT 1650 PRINT "THIS IS A LIST OF OPERATIONS." 1655 PRINT 1660 FOR Z=1 TO 9:PRINT K$(4,Z):NEXT Z:PRINT 1665 PRINT "INDICATE WHAT YOU WOULD LIKE TO DO BY TYPING" 1670 PRINT "THE CORRESPONDING NUMBER." 1675 PRINT 1680 INPUT Z IF Z<1 OR Z>9 then 1620 1682 IF Z=1 THEN new$="N" 1685 ON Z GOSUB 2000,3000,4000,5000,6000,7000,8000,9000,10000 1690 FOR Z=1 TO 20:N(2,Z)=0:N(0,Z)=0:NEXT Z 1695 N$="":new$="" 1700 FOR Z=1 TO 20:K$(3,Z)="":NEXT Z for z=1 to 10:g(z)=0:q(z)=0:next z 1720 GOTO 1600 2000 IF Z2>Z3 THEN RETURN 2001 PRINT CLEAR$:PRINT 2005 PRINT "RECORD NUMBER";Z2:PRINT 2015 FOR Z=1 TO 2 PRINT CUR$ 2020 PRINT TAB(30);left$(repeat$,n(1,z)) PRINT UP$; 2025 PRINT K$(1,Z);TAB(30); 2030 INPUT N(2,Z):PRINT chr$(13) PRINT CLEAR$ 2035 NEXT Z 2036 Z=0:GOSUB 24000 2040 FOR Z=4 TO 10 PRINT CUR$ 2042 PRINT TAB(30);left$(repeat$,n(1,z)) PRINT UP$; 2044 PRINT K$(1,Z);TAB(30); 2046 INPUT line K$(3,Z):PRINT chr$(13) if len(k$(3,z))>n(1,z) then k$(3,z)=left$(k$(3,z),n(1,z)) 2048 I=(N(1,Z)-LEN(K$(3,Z))):K$(3,Z)=K$(3,Z)+left$(fill$,i) PRINT CLEAR$ 2050 NEXT Z 2052 N$="" 2054 FOR Z=4 TO 10:N$=N$+K$(3,Z):NEXT Z 2056 FOR Z=12 TO 13 PRINT CUR$ 2058 PRINT TAB(30);left$(repeat$,n(1,z)) PRINT UP$; 2060 PRINT K$(1,Z);TAB(30); 2062 INPUT N(2,Z):PRINT chr$(13) PRINT CLEAR$ 2064 NEXT Z 2066 FOR Z=1 TO 10 PRINT CUR$ 2068 PRINT TAB(30);left$(repeat$,g(0)) PRINT UP$; 2070 PRINT "FINISHED GOODS REC # ";TAB(30); 2072 INPUT G(Z):PRINT chr$(13) PRINT CLEAR$ PRINT CUR$ 2074 PRINT TAB(30);left$(repeat$,q(0)) PRINT UP$; 2076 PRINT "QUANTITY ";TAB(30); 2078 INPUT Q(Z):PRINT chr$(13) 2080 PRINT:INPUT "IS THIS THE LAST ITEM? ";line temp$ 2082 IF left$(temp$,1)="y" or left$(temp$,1)="Y" THEN 2100 PRINT CLEAR$ 2084 NEXT Z 2100 Z1=Z2 2105 PRINT clear$; 2110 GOSUB 20000 2115 PRINT "IF A FINISHED GOODS REC # OR QUANTITY IS TO BE CHANGED" 2116 PRINT "TYPE # - RETURN. OTHERWISE TYPE THE NUMBER PRECEEDING AN ENTRY" 2117 PRINT "FOLLOWED BY RETURN.":PRINT 2118 PRINT "IF YOU ARE FINISHED, TYPE 14 - RETURN"; 2119 INPUT line temp$ 2120 IF temp$="#" THEN GOSUB 25000 2125 Z=VAL(temp$) 2150 IF Z>13 THEN 2216 2160 IF Z=3 THEN GOSUB 24000 2177 IF Z<1 THEN 2105 2178 IF Z>3 AND Z<12 THEN 2200 2180 PRINT TAB(30);left$(repeat$,n(1,z)) PRINT UP$; 2185 PRINT K$(1,Z);TAB(30); 2190 INPUT N(2,Z) 2195 GOTO 2225 2200 PRINT TAB(30);left$(repeat$,n(1,z)) PRINT UP$; 2205 PRINT K$(1,Z);TAB(30); 2210 INPUT line K$(3,Z) if len(k$(3,z))>n(1,z) then k$(3,z)=left$(k$(3,z),n(1,z)) 2215 I=(N(1,Z)-LEN(K$(3,Z))):K$(3,Z)=K$(3,Z)+left$(fill$,i) 2216 N$="" 2217 FOR I=4 TO 11:N$=N$+K$(3,I):NEXT I 2225 INPUT "ANY MORE CHANGES";line temp$ 2230 IF left$(temp$,1)="y" or left$(temp$,1)="Y" THEN 2105 2235 PRINT 2240 INPUT "IS RECORD TO BE ENTERED";line temp$ 2245 PRINT 2250 IF left$(temp$,1)="y" OR left$(temp$,1)="Y" THEN 2280 2255 IF left$(temp$,1)<>"n" AND left$(temp$,1)<>"N" THEN 2235 2260 PRINT clear$:PRINT 2270 PRINT "*** RECORD NOT ENTERED ***":PRINT:PRINT 2275 FOR Z=1 TO 200:NEXT Z:RETURN 2280 open z5$ recl 384 as 1 print #1,z1;N(2,1),N(2,2),N(2,3),N$,N(2,12),N(2,13),\ G(1),Q(1),G(2),Q(2),G(3),Q(3),G(4),Q(4),G(5),Q(5),\ G(6),Q(6),G(7),Q(7),G(8),Q(8),G(9),Q(9),G(10),Q(10) close 1 2295 IF new$="N" THEN Z2=Z2+1:open z7$ as 1:print #1;z2,z3:close 1 2300 RETURN 3000 PRINT clear$:PRINT:INPUT "RECORD NUMBER";Z1:PRINT clear$:PRINT 3003 IF Z1>=Z2 THEN 3000 3004 IF Z1<1 THEN RETURN 3005 open z5$ recl 384 as 1 read #1,z1;N(2,1),N(2,2),N(2,3),N$,N(2,12),N(2,13),\ G(1),Q(1),G(2),Q(2),G(3),Q(3),G(4),Q(4),G(5),Q(5),\ G(6),Q(6),G(7),Q(7),G(8),Q(8),G(9),Q(9),G(10),Q(10) 3008 Z9=1:FOR Z=4 TO 11:K$(3,Z)=MID$(N$,Z9,N(1,Z)):Z9=Z9+N(1,Z):NEXT Z 3009 CLOSE 1 3015 PRINT clear$:PRINT 3020 GOSUB 20000 3075 PRINT "FOR NEW RECORD, TYPE N-RETURN , OTHERWISE F-RETURN" 3085 INPUT line temp$ 3090 IF ucase$(temp$)="N" THEN 3000 3095 RETURN 4000 PRINT clear$:PRINT 4005 N$="" 4010 INPUT "RECORD NUMBER";Z1 4015 IF Z1<1 THEN PRINT "*** NO SUCH RECORD ***":GOTO 1620 4020 IF Z1>Z3 THEN PRINT "*** OUT OF RANGE ***":GOTO 1620 4025 IF Z1>=Z2 THEN PRINT "NO RECORD NUMBER";Z1:GOTO 1620 4030 open z5$ recl 384 as 1 read #1,z1;N(2,1),N(2,2),N(2,3),N$,N(2,12),N(2,13),\ G(1),Q(1),G(2),Q(2),G(3),Q(3),G(4),Q(4),G(5),Q(5),\ G(6),Q(6),G(7),Q(7),G(8),Q(8),G(9),Q(9),G(10),Q(10) close 1 4045 IF N(2,1)=0 THEN PRINT "*** DELETED RECORD ***":GOTO 1620 4050 Z9=1 4055 FOR Z=4 TO 11 4060 K$(3,Z)=MID$(N$,Z9,N(1,Z)) 4065 Z9=Z9+N(1,Z) 4070 NEXT Z 4075 GOTO 2105 5000 PRINT clear$:PRINT:INPUT "RECORD NUMBER";Z1:PRINT clear$:PRINT 5002 IF Z1<1 THEN PRINT "*** NO SUCH RECORD ***":GOTO 1620 5004 IF Z1>Z3 THEN PRINT "*** OUT OF RANGE ***":GOTO 1620 5005 IF Z1>=Z2 THEN PRINT "NO RECORD NUMBER";Z1:GOTO 1620 5006 open z5$ recl 384 as 1 read #1,z1;N(2,1),N(2,2),N(2,3),N$,N(2,12),N(2,13),\ G(1),Q(1),G(2),Q(2),G(3),Q(3),G(4),Q(4),G(5),Q(5),\ G(6),Q(6),G(7),Q(7),G(8),Q(8),G(9),Q(9),G(10),Q(10) close 1 5010 Z9=1:FOR Z=4 TO 11:K$(3,Z)=MID$(N$,Z9,N(1,Z)):Z9=Z9+N(1,Z):NEXT Z 5015 PRINT clear$:PRINT 5020 GOSUB 20000 5100 INPUT "IS RECORD TO BE DELETED (MUST BE YES TO DELETE)";line temp$ 5105 IF left$(temp$,1)="n" OR left$(temp$,1)="N" THEN RETURN 5110 IF ucase$(temp$)<>"YES" THEN 5100 5115 N(2,1)=0 5120 open z5$ recl 384 as 1 print #1,z1;N(2,1),N(2,2),N(2,3),N$,N(2,12),N(2,13),\ G(1),Q(1),G(2),Q(2),G(3),Q(3),G(4),Q(4),G(5),Q(5),\ G(6),Q(6),G(7),Q(7),G(8),Q(8),G(9),Q(9),G(10),Q(10) 5130 close 1 5135 RETURN 6000 PRINT clear$:PRINT 6005 PRINT "IF YOU HAVE ARRIVED HERE, AND HAVE A PUR ORD REG FILE" 6010 PRINT "ALREADY ON A DISK, YOU SHOULD INSTALL THAT DISK THEN" 6015 PRINT "TYPE THE LETTER C FOLLOWED BY A RETURN TO CONTINUE." 6020 PRINT 6025 PRINT "IF YOU WISH TO CREATE A NEW FILE, TYPE THE LETTER N" 6030 PRINT "FOLLOWED BY RETURN.":PRINT 6035 INPUT line temp$ 6040 IF ucase$(temp$)="C" then initialize:goto 1500 6045 PRINT clear$:PRINT 6050 INPUT "NUMBER OF RECORDS DESIRED";z3 6055 PRINT 6060 n$="":for z=1 to 150:n$=n$+" ":next z for z=1 to 20:n(2,z)=0:n(0,z)=0:next z 6062 FOR Z=1 TO 10:G(Z)=0:Q(Z)=0:NEXT Z 6065 create z5$ recl 384 as 1 6070 FOR Z1=1 TO z3+2 print #1,z1;N(2,1),N(2,2),N(2,3),N$,N(2,12),N(2,13),\ G(1),Q(1),G(2),Q(2),G(3),Q(3),G(4),Q(4),G(5),Q(5),\ G(6),Q(6),G(7),Q(7),G(8),Q(8),G(9),Q(9),G(10),Q(10) 6085 NEXT Z1 6090 close 1 6095 PRINT clear$:PRINT 6100 PRINT "PUR ORD REG FILE CREATED AND CLEARED.":PRINT 6105 PRINT z3;"RECORDS CREATED.":PRINT 6110 PRINT "TO CONTINUE, TYPE RETURN.":INPUT line temp$ Z2=1 create z7$ as 1:print #1;Z2,Z3:close 1 6115 GOTO 1500 7000 INPUT "ARE YOU SURE !!! (YES OR NO)";line temp$ 7007 IF ucase$(temp$)<>"YES" THEN RETURN 7008 n$="":for z=1 to 150:n$=n$+" ":next z for z=1 to 20:n(2,z)=0:n(0,z)=0:next z for z=1 to 10:g(z)=0:q(z)=0:next z open z5$ recl 384 as 1 7010 FOR Z1=1 TO z3+2 print #1,z1;N(2,1),N(2,2),N(2,3),N$,N(2,12),N(2,13),\ G(1),Q(1),G(2),Q(2),G(3),Q(3),G(4),Q(4),G(5),Q(5),\ G(6),Q(6),G(7),Q(7),G(8),Q(8),G(9),Q(9),G(10),Q(10) 7025 NEXT Z1 7030 close 1 7035 PRINT clear$:PRINT 7040 PRINT "PUR ORD REG FILE CLEARED!":PRINT 7045 PRINT "TO CONTINUE, TYPE RETURN." 7050 INPUT line temp$ Z2=1 open z7$ as 1:print #1;Z2,Z3:close 1 7060 RETURN 8000 chain "vpjosort" 9000 PRINT clear$:PRINT 9100 lprinter 9105 open z5$ recl 384 as 1 9110 FOR I=1 TO Z2-1 read #1,i;N(2,1),N(2,2),N(2,3),N$,N(2,12),N(2,13),\ G(1),Q(1),G(2),Q(2),G(3),Q(3),G(4),Q(4),G(5),Q(5),\ G(6),Q(6),G(7),Q(7),G(8),Q(8),G(9),Q(9),G(10),Q(10) 9140 Z9=1:FOR Z=4 TO 11:K$(3,Z)=MID$(N$,Z9,N(1,Z)):Z9=Z9+N(1,Z):NEXT Z print using fmt1$;i,n(2,1),n(2,2) print using fmt2$;n(2,3),k$(3,4) print using fmt3$;k$(3,5),k$(3,6) print using fmt4$;k$(3,7),k$(3,8) print using fmt5$;k$(3,9),k$(3,10),k$(3,11) print using fmt6$;n(2,12),n(2,13) print delim2$ print fmt7$ print using fmt8$;g(1),q(1),g(2),q(2) print using fmt9$;g(3),q(3),g(4),q(4) print using fmt10$;g(5),q(5),g(6),q(6) print using fmt11$;g(7),q(7),g(8),q(8) print using fmt12$;g(9),q(9),g(10),q(10) print 9800 NEXT I 9995 RETURN 10000 CHAIN "master3" 15000 print clear$:print:print "CHECKING FILE LENGTH" PRINT:PRINT "*** PLEASE WAIT ***" open z5$ recl 384 as 1 z3=(size(z5$)*block.size)/384 for z2=1 to z3 read #1,z2;n(2,1),n(2,2) if n(2,2)=0 then 15300 next z2 15300 z3=int(z3)-2 close 1 create z7$ as 1 print #1;z2,z3 close 1 GOTO 1500 20000 print using fmt1$;z1,n(2,1),n(2,2) print using fmt2$;n(2,3),k$(3,4) print using fmt3$;k$(3,5),k$(3,6) print using fmt4$;k$(3,7),k$(3,8) print using fmt5$;k$(3,9),k$(3,10),k$(3,11) print using fmt6$;n(2,12),n(2,13) print delim2$ print fmt7$ print using fmt8$;g(1),q(1),g(2),q(2) print using fmt9$;g(3),q(3),g(4),q(4) print using fmt10$;g(5),q(5),g(6),q(6) print using fmt11$;g(7),q(7),g(8),q(8) print using fmt12$;g(9),q(9),g(10),q(10) print 20250 RETURN 24000 open "b:poe" as 1 read #1;n(2,3) close 1 24030 IF N(2,3)<>0 THEN 24800 PRINT CUR$ 24040 PRINT TAB(30);left$(repeat$,n(1,3)) PRINT UP$; 24050 PRINT K$(1,3);TAB(30); 24060 INPUT N(2,3):PRINT chr$(13) PRINT CLEAR$ 24070 GOTO 24995 24800 IF Z=3 THEN 24995 24900 A=N(2,3)+1 24910 open "b:poe" as 1 print #1;a close 1 24995 RETURN 25000 INPUT "ENTER PUR ORD ITEM # ";Z 25010 PRINT TAB(30);left$(repeat$,g(0)) PRINT UP$; 25020 PRINT "FINISHED GOODS REC # ";TAB(30); 25030 INPUT G(Z):PRINT chr$(13) 25040 PRINT TAB(30);left$(repeat$,q(0)) PRINT UP$; 25050 PRINT "QUANTITY ";TAB(30); 25060 INPUT Q(Z):PRINT chr$(13) 25070 temp$="14" 25995 RETURN