1 REM ADAPTED FOR BASIC-PLUS BY GARY LUCKENBAUGH, 7/18/73 2 REM DSAA PROJECT DELTA 3 REM ORIGINAL PROGRAM FROM HP TIME-SHARED BASIC PROGRAM LIBRARY 25 DIM #1%, R%(8%), V(8%,50%), P(8%,50%), S$(8%,50%), A$(8%,50%)=32%, D$(8%,50%)=64% 30 ON ERROR GOTO 40: OPEN "SLSMN.DAT" FOR INPUT AS FILE 1%: GOTO 120 40 OPEN "SLSMN.DAT" FOR OUTPUT AS FILE 1%: R%(A%)=1% FOR A%=1% TO 8% 50 RESUME 120 120 ON ERROR GOTO 0 125 PRINT FOR A%=1% TO 4% 126 ON ERROR GOTO 0: OPEN "INSTR.UCS" FOR INPUT AS FILE 7% 129 PRINT " SALES MANAGEMENT PROGRAM" 130 GOSUB 6850: PRINT "TODAY'S DATE";: INPUT LINE Q$: Q$=LEFT(Q$,LEN(Q$)-2%) 133 GOSUB 6850: PRINT "WANT INSTRUCTIONS";: GOSUB 1200: IF K=1 THEN 200 140 DEF FNO$(S1%,S2%): FIELD #7%, 512% AS I$: FOR I1%=S1% TO S2%: GET #7%, RECORD I1%: I%=INSTR(1%,I$,CHR$(0%)): I%=32767% IF I%=0%: PRINT LEFT(I$,I%-1%);: NEXT I1%: FNEND 150 D9$=FNO$(1%,2%) 200 PRINT: PRINT "CONTROL WORD"; 203 INPUT B$: B$=LEFT(B$,3%) 205 IF B$="CRE" THEN GOSUB 6000: GOTO 200 207 IF B$="ADD" THEN GOSUB 4000: GOTO 200 209 IF B$="REV" THEN GOSUB 7000: GOTO 200 211 IF B$="DEL" THEN GOSUB 8000: GOTO 200 213 IF B$="FOR" THEN GOSUB 6300: GOTO 200 215 IF B$="SUM" THEN GOSUB 5000: GOTO 200 217 IF B$="END" THEN GOSUB 9500: GOTO 200 218 IF B$="STO" THEN 9999 219 PRINT "?RETYPE";: GOTO 203 900 IF F=1 OR F=5 THEN R$="WESTERN": RETURN 907 IF F=2 OR F=6 THEN R$="MIDWESTERN": RETURN 909 IF F=3 OR F=7 THEN R$="SOUTHERN": RETURN 911 IF F=4 OR F=8 THEN R$="EASTERN": RETURN 912 PRINT "FILE # <0 OR >8": GOTO 9999 1000 PRINT "*" 1005 PRINT "WHICH REGION"; 1010 INPUT B$: B$=LEFT(B$,1%) 1015 FOR F=1 TO 4: IF MID("WMSE",F,1%)=B$ THEN 1065 1020 NEXT F: PRINT "?RETYPE";: GOTO 1010 1065 GOSUB 900: RETURN 1100 PRINT "*" 1107 PRINT "ACC'T";: INPUT LINE A$: A$=LEFT(A$,LEN(A$)-2%): GOSUB 2100 1111 INPUT "SLSMN";S$ 1115 INPUT "VALUE";V 1119 INPUT "% ASSUR";P 1123 PRINT "DSCRPTN";: INPUT LINE D$: D$=LEFT(D$,LEN(D$)-2%) 1126 PRINT "*": RETURN 1200 K=0: INPUT B$: IF LEFT(B$,1%)<>"Y" THEN K=1 1225 RETURN 1500 DEF FNP$(C%,R%): A$(C%,R%)=A$: D$(C%,R%)=D$: S$(C%,R%)=S$: V(C%,R%)=V: P(C%,R%)=P: R%(C%)=R%+1% IF R%>=R%(C%): FNEND 1510 DEF FNR$(C%,R%): A$=A$(C%,R%): D$=D$(C%,R%): S$=S$(C%,R%): V=V(C%,R%): P=P(C%,R%): FNEND 2000 PRINT "*"R$" REGION*" 2010 FOR L=1 TO 50 2015 IF R%(F)=L THEN 2040 2025 A$=A$(F,L): PRINT A$: NEXT L 2040 PRINT "* EOF *": PRINT: RETURN 2100 FOR V1=1 TO 50 2105 IF R%(F)=V1 THEN RETURN 2115 D$=A$(F,V1) 2120 IF D$<>A$ THEN 2140 2125 PRINT "ACC'T ALREADY ON FILE. RENAME IT.": INPUT LINE A$: A$=LEFT(A$,LEN(A$)-2%): RETURN 2140 NEXT V1 2500 FOR R=1 TO 50: IF R%(J)=R THEN 2540 2520 NEXT R: PRINT "FILE"J"FULL": GOTO 9999 2540 PRINT "*" 2541 PRINT "REASON LOST";: INPUT LINE D$: D$=LEFT(D$,LEN(D$)-2%) 2543 P=(.01*P)*V 2550 D9$=FNP$(J,R): F1=2.7 2555 RETURN 2600 PRINT FOR D9%=1% TO 9%: RETURN 3000 PRINT "REVISE WHAT"; 3055 INPUT B$: B$=LEFT(B$,1%) 3060 IF B$="A" THEN PRINT "NEW ACC'T ";: INPUT LINE A$: A$=LEFT(A$,LEN(A$)-2%): GOSUB 2100: GOTO 3120 3061 IF B$="D" THEN PRINT "NEW DSCRPTN ";: INPUT LINE D$: D$=LEFT(D$,LEN(D$)-2%): GOTO 3120 3062 IF B$="S" THEN INPUT "NEW SLSMN ";S$: GOTO 3120 3063 IF B$="V" THEN INPUT "NEW VALUE ";V: GOTO 3120 3064 IF B$="%" THEN INPUT "NEW % ASSUR ";P: GOTO 3120 3065 PRINT "?RETYPE";: GOTO 3055 3120 PRINT "REVISE MORE IN THIS ACC'T";: GOSUB 1200: IF K=0 THEN 3000 3127 PRINT "*": D9$=FNP$(F,N): RETURN 4000 PRINT "*ADDITION - WANT INSTRUCTIONS";: GOSUB 1200: IF K<>1 THEN GOSUB 9800 4010 GOSUB 1000 4015 GOSUB 1100 4020 FOR N=1 TO 50 4030 IF R%(F)=N THEN 4050 4035 NEXT N 4040 PRINT "FILE"F"FULL": GOTO 9999 4050 D9$=FNP$(F,N) 4055 PRINT "ADD ANOTHER";: GOSUB 1200: IF K=0 THEN 4015 ELSE RETURN 5000 PRINT "*SUMMARY": E7=0: PRINT "*" 5050 INPUT "ALL REGIONS OR JUST ONE REGION";B$: IF LEFT(B$,3%)<> "ALL" THEN 5085 5055 GOSUB 2600 5060 FOR F=1 TO 4: T7=0: U=0 5063 GOSUB 9000: IF W>8 THEN 5077 5065 GOSUB 5500: GOSUB 5900: GOTO 5083 5077 GOSUB 900: PRINT "*NO ACCOUNTS IN "R$" REGION" 5079 GOSUB 2600 5083 NEXT F: RETURN 5085 GOSUB 1000 5090 GOSUB 2600 5091 U=0: GOSUB 9000: IF W>8 THEN 5101 5095 GOSUB 5500: GOSUB 5900: RETURN 5101 PRINT "*NO ACC'TS IN "R$" REGION": GOSUB 2600: RETURN 5500 REM WRITE ON REGIONAL FILE OUT 5550 GOSUB 900 5551 PRINT " "R$" REGION" 5555 PRINT " SALES SUMMARY" 5560 PRINT " "Q$ 5565 GOSUB 6850 5568 PRINT " % " " EXP" 5570 PRINT " ACCOUNT SALESMAN VALUE ASSU" "R VALUE" 5670 GOSUB 6200: T7=0 5680 FOR N=1 TO 50: IF R%(F)=N THEN 5740 5695 D9$=FNR$(F,N): E7=(.01*P)*V 5705 PRINT A$;TAB(26%);S$;TAB(45%);INT(V);TAB(55%);P;TAB(63%);INT(E7) 5715 IF P=100 THEN T7=T7+V 5725 PRINT: NEXT N 5740 GOSUB 6850: GOSUB 6500 5745 PRINT " TOTAL SALES TO DATE =$"INT(T7)"K" 5760 RETURN 5900 U=1: GOSUB 9000: IF W<=8 THEN 5910 5904 GOSUB 6850: PRINT "*NO LOST SALES" 5906 GOSUB 2600: GOTO 5995 5910 GOSUB 2600: GOSUB 900 5919 PRINT " "R$" REGION" 5923 PRINT " LOST SALES REPORT" 5926 PRINT " "Q$ 5928 GOSUB 6850 5929 PRINT " EXP" 5930 PRINT " ACCOUNT SALESMAN VALUE VALUE REASON LOST" 5931 GOSUB 6200 5940 J=F+4: FOR N=1 TO 50: IF R%(J)=N THEN 5990 5965 D9$=FNR$(J,N) 5966 IF A$="FORECASTER*MAM*27..." THEN 5975 5970 PRINT A$;TAB(21%);S$;TAB(32%);INT(V);TAB(37%);INT(P);TAB(42%);D$ 5972 PRINT 5975 NEXT N 5990 GOSUB 2600 5995 RETURN 6000 PRINT "*CREATION - WANT INSTRUCTIONS";: GOSUB 1200: IF K<>1 THEN GOSUB 9800 6020 GOSUB 1000 6021 GOSUB 6600 6045 N=1 6050 GOSUB 1100 6055 D9$=FNP$(F,N): N=N+1 6065 PRINT "ADD MORE";: GOSUB 1200: IF K=0 THEN 6050 6076 R%(F)=N: RETURN 6200 PRINT "."; FOR A%=1% TO 70%: PRINT: PRINT: RETURN 6300 GOSUB 2600 6325 PRINT " REGIONAL SALES FORECASTS" 6330 PRINT " "Q$ 6335 GOSUB 6850 6340 FOR F=1 TO 4: T9=0: FOR J=1 TO 50 6360 IF R%(F)=J THEN 6380 6365 D9$=FNR$(F,J) 6370 T9=T9+((.01*P)*V) 6375 NEXT J 6380 G=F+4: FOR J=1 TO 50 6395 IF R%(G)=J THEN 6415 6400 NEXT J: PRINT "FILE"G"FULL": GOTO 9999 6415 A$(G,J)="FORECASTER*MAM*27...": S$(G,J)="DUM$": V(G,J)=T9: P(G,J)=G: D$(G,J)=Q$ 6420 GOSUB 900: PRINT R$;TAB(11%)" REGION FORECAST ...$"INT(T9)"K" 6430 PRINT: NEXT F 6440 GOSUB 2600: RETURN 6500 J=F+4: FOR H=1 TO 50% 6535 IF R%(J)=H THEN 6565 6540 D9$=FNR$(J,H) 6545 IF A$<>"FORECASTER*MAM*27..." THEN 6560 6550 PRINT D$" FORECAST WAS..."TAB(35%)"...$"INT(V)"K": PRINT 6560 NEXT H 6565 RETURN 6600 J=F+4: R%(J)=1: RETURN 6850 PRINT: PRINT: RETURN 7000 PRINT "*REVISION - WANT INSTRUCTIONS";: GOSUB 1200: IF K=1 THEN 7055 7016 GOSUB 6850 7017 PRINT "WHEN ASKED 'REVISE WHAT', TYPE: 'A' FOR ACC'T NAME; 'S'" 7018 PRINT "FOR SALESMAN; 'V' FOR VALUE; '%' FOR % ASSURANCE OR 'D'" 7019 PRINT "FOR DESCRIPTION" 7055 GOSUB 1000 7059 PRINT "*" 7060 PRINT "WHICH ACC'T";: INPUT LINE B$: B$=LEFT(B$,LEN(B$)-2%) 7070 FOR N=1 TO 50: IF R%(F)=N THEN 7120 ELSE D9$=FNR$(F,N) 7090 IF A$=B$ THEN PRINT "WANT TO SEE CURRENT DATA";: GOSUB 1200: PRINT "*": IF K=1 THEN 7136 ELSE PRINT "ACC'T: "A$: PRINT "SLSMN: "S$: PRINT "VALUE: $"V"K": PRINT "% ASSUR: " P"%": PRINT "DSCRPTN: "D$: PRINT "*": GOTO 7136 7105 NEXT N 7120 PRINT "ACC'T NOT ON FILE. WANT LIST OF CURRENT ACC'TS";: GOSUB 1200: IF K<>1 THEN GOSUB 2000 7132 PRINT "CAN YOU REVISE NOW";: GOSUB 1200: IF K=0 THEN 7060 ELSE RETURN 7136 GOSUB 3000: PRINT "REVISE ANOTHER ACC'T IN THIS REGION";: GOSUB 1200: IF K=0 THEN 7060 ELSE RETURN 8000 PRINT "*DELETION": GOSUB 1000 8014 PRINT "*" 8015 PRINT "WHICH ACC'T";: INPUT LINE B$: B$=LEFT(B$,LEN(B$)-2%): F1=0: O=1: FOR N=1 TO 50: IF R%(F)=N THEN 8090 ELSE D9$=FNR$(F,N): IF A$<>B$ THEN 8075 8060 J=F+4: GOSUB 2500: GOTO 8085 8075 D9$=FNP$(F,O): O=O+1 8085 NEXT N 8090 IF F1=2.7 THEN 8115 ELSE PRINT "ACC'T UNRECOGNIZED. WANT LIST OF" " CURRENT ACC'TS";: GOSUB 1200: IF K=1 THEN 8120 ELSE GOSUB 2000 8115 R%(F)=O: PRINT "*" 8120 PRINT "DELETE";: GOSUB 1200: IF K=0 THEN 8015 ELSE RETURN 9000 W=F: IF U<>0 THEN W=W+4 9005 FOR I=1 TO 50: IF R%(W)=I THEN 9019 ELSE A$=A$(W,I): IF A$<> "FORECASTER*MAM*27..." THEN 9020 9018 NEXT I 9019 W=9 9020 RETURN 9500 PRINT "*ENDBEGIN - WANT INSTRUCTIONS";: GOSUB 1200: GOSUB 6850: IF K=1 THEN 9575 9520 D9$=FNO$(3%,3%) 9575 FORF=1TO4:GOSUB6850:GOSUB900:PRINT"*CURRENT "R$" REGION ACCOUNTS" "*":GOSUB2010:GOSUB6850:PRINT"DELETE ACCOUNTS";:GOSUB1200: GOSUB8014IFK<>1:GOSUB6850:PRINT"REVISE ACCOUNTS";:GOSUB1200: GOSUB7059IFK<>1:GOSUB6850:PRINT"ADD ACCOUNTS";:GOSUB1200: GOSUB4015IFK<>1:NEXTF 9626 GOSUB 5055: GOSUB 6600 FOR F=1 TO 4 9630 GOSUB 6300: RETURN 9800 D9$=FNO$(4%,4%): RETURN 9999 END