0 REM DECIDE.BA copyright (c) 1989 1 REM by Paul Globman [72227,1661] 2 MAXFILES=1:DIMR(10,10):KEYON:IFPEEK(1)=171THENLO=560ELSELO=240 3 ONKEYGOSUB15,16,17,18,19,20,21,22:ONERRORGOTO77:ES$=CHR$(27):LL=LO+40:GOTO8 4 GOSUB24 5 GOSUB32:GOSUB37 6 GOSUB43 7 GOSUB47 8 GOSUB49 9 PRINT@LO,STRING$(40,232);:PRINT"Subj Fact Wght Rate Load Save Prnt Menu"; 10 K=0 11 ONKGOTO4,5,23,6,12,13,14:GOTO11 12 GOSUB67:IFX$="?"THEN7ELSE9 13 GOSUB73:GOTO9 14 GOSUB59:GOTO10 15 K=1:RETURN 16 K=2:RETURN 17 K=3:RETURN 18 K=4:RETURN 19 K=5:RETURN 20 K=6:RETURN 21 K=7:RETURN 22 MENU 23 GOSUB37:GOTO7 24 CLS:PRINT"This program is designed to assist you":PRINT"in making decisions. Please enter the 25 PRINT"SUBJECT of your quandary. For example:":PRINT:PRINT" which job offer to accept 26 PRINT" which car to purchase":PRINT:LINEINPUT"SUBJECT =>";S$:IFS$=""THENRUN 27 GOSUB66:PRINT"please enter how many CHOICES you have.":PRINT:LINEINPUT"Number of CHOICES =>";C$ 28 C=VAL(C$):IFC>10 ORC<2THEN27 29 GOSUB66:PRINT"please list all"C"of your choices.":PRINT:FORI=1TOC 30 PRINT"Option"I;:LINEINPUT"=>";C$(I):IFC$(I)=""THEN30 31 C$(I)=LEFT$(C$(I),15):NEXT:RETURN 32 GOSUB66:PRINT"please enter how many factors you wish":PRINT"to consider.":PRINT 33 LINEINPUT"Number of FACTORS =>";F$:F=VAL(F$):IFF>10 ORF<2THEN32 34 GOSUB66:PRINT"please list all"F"FACTORS.":PRINT:FORI=1TOF:W(I)=0 35 PRINT"Factor"I;:LINEINPUT"=>";F$(I):IFF$(I)=""THEN35 36 F$(I)=LEFT$(F$(I),15):NEXT:RETURN 37 CLS:PRINT"Since some FACTORS are more important":PRINT"than others, please assign relative 38 PRINT"values to each factor. A value of 10":PRINT"is the highest weight and 1 is the":PRINT"lowest weight. 39 IFLO>320THENPRINT 40 PRINT"[ ";:FORI=1TOF:PRINTF$(I)W(I)"/ ";:NEXT:PRINT"]":PRINT:FORI=1TOF 41 PRINTF$(I)" = ";:LINEINPUTW$:W(I)=VAL(W$):IF(W(I)<=0)OR(W(I)>10)THEN41 42 NEXT:RETURN 43 FORI=1TOF:CLS:PRINT"Consider "ES$"p"F$(I)ES$"q ONLY!":PRINT:PRINT"Rate the following choices (0 is valid). 44 PRINT"[ ";:FORK=1TOC:PRINTC$(K)" / ";:NEXTK:PRINT"]":PRINT:FORJ=1TOC 45 PRINTC$(J)" = ";:LINEINPUTR$:R(I,J)=VAL(R$):IFR(I,J)=0 ANDR$<>"0"THEN45 46 NEXTJ:NEXTI:RETURN 47 CLS:PRINT" Evaluating...":FORI=1TO500:NEXT:FORI=1TOC:T(I)=0:NEXT:FORJ=1TOC:FORI=1TOF:T(J)=T(J)+R(I,J)*W(I) 48 NEXTI:NEXTJ:RETURN 49 CLS:X=(34-LEN(S$))/2:FORI=1TOC:S(I)=I:NEXT:FORSS=1TOC-1:FORS=SS+1TOC:IFT(S(SS))>T(S(S))THEN51 50 T=S(SS):S(SS)=S(S):S(S)=T 51 NEXTS:NEXTSS:PRINT@X,"<<<"S$">>>":PRINT:PRINT"Factor (weight)";:PRINTTAB(20)"Choice (rating) 52 PRINTSTRING$(40,"-");:IFC>FTHENX=CELSEX=F 53 IFLO<320THENX=2 54 FORI=1TOX:IFI>FTHEN56 55 W$=STR$(W(I)):W$=RIGHT$(W$,LEN(W$)-1):PRINTF$(I)" ("W$")"; 56 IFI>CTHENPRINT:GOTO58 57 R$=STR$(T(S(I))):R$=RIGHT$(R$,LEN(R$)-1):PRINTTAB(20)C$(S(I))" ("R$") 58 NEXT:RETURN 59 X=(80-LEN(S$))/2:LPRINTTAB(X-5)"<<<"S$">>>":LPRINT:LPRINTTAB(8)"Factor (weight)";:LPRINTTAB(50)"Choice (Rating) 60 LPRINTTAB(8)STRING$(64,"-"):IFC>FTHENX=CELSEX=F 61 FORI=1TOX:IFI>FTHEN63 62 W$=STR$(W(I)):W$=RIGHT$(W$,LEN(W$)-1):LPRINTTAB(8)F$(I)" ("W$")"; 63 IFI>CTHENLPRINT:goto65 64 R$=STR$(T(S(I))):R$=RIGHT$(R$,LEN(R$)-1):LPRINTTAB(50)C$(S(I))" ("R$") 65 NEXT:FORI=1TO10:LPRINT"":NEXT:RETURN 66 CLS:PRINT"To help you decide...":PRINT" "S$",":PRINT:RETURN 67 PRINT@LL,ES$"V"ES$"KLoad from";:GOSUB81:X$=" 68 OPENSA$FORINPUTAS1 69 LINEINPUT#1,X$ 70 IFX$<>"?"THENERROR3 71 INPUT#1,S$:INPUT#1,C:INPUT#1,F:FORI=1TOC:INPUT#1,C$(I):NEXT:FORJ=1TOF:INPUT#1,W(J),F$(J):NEXT 72 FORI=1TOC:FORJ=1TOF:INPUT#1,R(J,I):NEXTJ:NEXTI:CLOSE:RETURN 73 PRINT@LL,ES$"V"ES$"KSave as";:GOSUB81:IFSA$=""THENRETURN 74 OPENSA$FORINPUTAS1:PRINT@LL,ES$"KOverwrite "SA$"?";:CLOSE:AN$=INPUT$(1):IFAN$<>"y"ANDAN$<>"Y"THENRETURN 75 CLOSE:OPENSA$FOROUTPUTAS1:PRINT#1,"?":PRINT#1,S$:PRINT#1,C:PRINT#1,F:FORI=1TOC:PRINT#1,C$(I) 76 NEXT:FORJ=1TOF:PRINT#1,W(J):PRINT#1,F$(J):NEXT:FORI=1TOC:FORJ=1TOF:PRINT#1,R(J,I):NEXTJ:NEXTI:CLOSE:RETURN 77 IFERL=74THENRESUME75 78 IFERL=75THENBEEP:RESUME82 79 IFERL=68 ORERL=69 ORERL=70THENCLOSE:PRINT@LL,"Can't Load";:FORI=1TO1500:NEXT:RESUME82 80 PRINT"Error"ERR"in line"ERL:STOP 81 LINEINPUT": ";SA$:PRINT@0,ES$"W 82 RETURN