1 'Club 100 Library - 415/939-1246 BBS 937-5039 NEWSLETTER, 932-8856 VOICE 10 CLS:PRINT "PRODUCTION PLOTTING"'STS (c)1986 20 OPEN "COM:88N1E" FOR OUTPUT AS 1 21 PRINT#1,CHR$(27)+".N0;19:" 22 PRINT#1,CHR$(27)+".I10;;17:" 23 'lines 20-22 set up the proper 24 'Xon/Xoff handshaking for an HP7475A 25 'or compatible plotter (HP7550, 26 'HP7440 with graphics enhancement 27 'catridge, etc.) You will need 28 'either a "null modem" male-to-male 29 'RS232 cable, or a standard 25-pin 30 'direct male-to-male cable with a 31 'null modem convertor ($15 each at 32 'any Radio Shack). Set the plotter 33 'DIP switches for 9600 baud with no 34 'parity, direct mode (not remote). 40 F1=0 60 DIM C(50),M(50),Y(50),R(50) 80 GOSUB 130 'GETDATA 90 GOSUB 960 'CHOICE 100 GOSUB 200 'TITLE 110 GOSUB 300 'PLOT 120 GOTO 90 130 'GETDATA 140 PRINT "ENTER CUM FIGURES:" 150 FOR I=1 TO 50 160 INPUT "Cum,Mo,Yr (ENTER to plot)";C(I),M(I),Y(I) 170 IF C(I)=0 AND M(I)=0 AND Y(I)=0 THEN K=I-1:I=50 180 NEXT I 190 RETURN 200 'TITLE 210 LINE INPUT "Title of plot=";T$ 220 LINE INPUT "Yaxis label=";Y$ 230 LINE INPUT "Xaxis label=";X$ 240 IF P1>1 THEN GOSUB 1080 250 IF P1=3 THEN INPUT "Xaxis limit=";T1 260 IF P1=3 THEN INPUT "Xaxis units/div=";T2 270 PRINT "Connect points? (Y/N)" 275 L1$="Y":L2$="N":GOSUB 2000 280 IF Z$="N" THEN S$="SMo;":U$="PU" ELSE S$="SM;":U$="PD" 290 RETURN 300 'PLOT 310 PRINT "plotting..." 320 GOSUB 800 330 PRINT#1,"INSC-10,110,5,45SP1SI.18,.28VS5;" 340 PRINT#1,"PA0,10PD0,40,100,40,100,10,0,10PUSP2;" 350 IF P1=3 THEN GOSUB 900:GOTO 470 360 Y1=Y(K)+1-Y(1) 370 M1=(Y(K)+1-Y(1))*12 380 FOR I=0 TO 100 STEP 100/Y1 390 IF I=0 OR I=100 THEN 410 400 PRINT#1,"PA";I;10;"PD";I;40;"PU;" 410 NEXT I 420 IF Y1>5 THEN 470 430 FOR I=0 TO 100 STEP 100/(Y1*12) 440 IF I=0 OR I=100 THEN 460 450 PRINT#1,"PA";I;10;"PD";I;10.5;"PU;" 460 NEXT I 470 FOR I=1 TO 3 480 FOR J=2 TO 10 490 PRINT#1,"PA";0;10*(I+.4342945*LOG(J));"PD";100;10*(I+.4342945*LOG(J));"PU;" 500 IF I=3 AND J=9 THEN J=10 510 NEXT J 520 NEXT I 530 FOR I=0 TO 3 540 PRINT#1,"PA";0;10*(I+1);"CP";-LEN(STR$(S*10^I))-2;-.25;";" 550 PRINT#1,"LB";S*10^I;CHR$(3) 560 NEXT I 570 PRINT#1,"SP1SI.3,.4SL.577PA-8,25DI0,1CP";-LEN(Y$)/2;0;"LB";Y$;CHR$(3) 580 PRINT#1,"DISI.18,.28SL;" 590 'LABEL XAXIS,TITLE$ 600 IF P1<>3 THEN X1=Y(1):X2=Y(K)+1ELSE X1=0:X2=T1 610 PRINT#1,"SP2PA0,8.5CP-1,0LB";X1;CHR$(3);"SI.3,.4SL.577;" 620 PRINT#1,"SP1PA50,7CP";-LEN(X$)/2;0;"LB";X$;CHR$(3);"SP2;" 630 PRINT#1,"SI.18,.28SLPA100,8.5CP";-LEN(STR$(X2));0;"LB";X2;CHR$(3) 640 PRINT#1,"SP1SI.3,.4SL.577PA50,41CP";-LEN(T$)/2;0;"LB";T$;CHR$(3) 650 'START DATA PLOTTING 660 INPUT "Select pen, then ENTER";Z$ 665 PRINT "plotting..." 670 IF P1<3 THEN D=100/M1*M(1)ELSE D=C(1)*100/T1 680 IF P1=1 THEN B=C(1)ELSE B=R(1) 690 PRINT#1,S$;"SLSI.1,.1;" 700 PRINT#1,"PA";D;.4342945*LOG(B)*10-.4342945*LOG(S)*10+10;U$;";" 710 FOR I=2 TO K 720 IF P1<3 THEN D=((Y(I)-Y(1))*12+M(I))*100/M1 ELSE D=C(I)*100/T1 730 IF P1=1 THEN B=C(I) ELSE B=R(I) 740 B=.4342945*LOG(B)*10-.4342945*LOG(S)*10+10 750 IF B<10 THEN 770 760 PRINT#1,U$;D;B;";" 770 NEXT I 780 PRINT#1,"PUSP0SM;" 790 RETURN 800 'YSCALE 810 S=1 820 FOR I=1 TO K 830 IF C(I)=0 THEN C(I)=1 840 IF P1=1 THEN A(I)=C(I)ELSE A(I)=R(I) 850 IF A(I)>1000 THEN S=10 860 IF A(I)>10000 THEN S=100 870 IF A(I)>100000 THEN S=1000 880 NEXT I 890 RETURN 900 'CMSCALE 910 FOR I=0 TO 100 STEP T2*100/T1 920 IF I=0 OR I=100 THEN 940 930 PRINT#1,"PA";I;10;"PD";I;40;"PU;" 940 NEXT I 950 RETURN 960 'CHOICE 970 PRINT "Choose a plot:":Z$="" 980 PRINT "1. CVT - Cum vs Time" 981 PRINT "2. RVT - Rate vs Time" 982 PRINT "3. RVC - Rate vs Cum" 983 INPUT "1,2 or 3? (ENTER to END)";Z$ 990 IF Z$="1" THEN P1=1:RETURN 1000 IF Z$="2" THEN P1=2:RETURN 1010 IF Z$="3" THEN P1=3:RETURN 1020 IF Z$<>"" THEN BEEP:GOTO 960 1030 PRINT#1,"SP0PA110,45IN;" 1040 F1=0:PRINT"***FINISHED***":END 1080 'RATESUB 1090 IF F1=1 THEN RETURN 1100 PRINT "Specify rate basis:" 1110 PRINT "per Day,Month,Year--" 1120 INPUT "(D,M,Y)";Z$ 1130 IF Z$="D" OR Z$="d" THEN F=1/365:GOTO 1170 1140 IF Z$="M" OR Z$="m" THEN F=1/12:GOTO 1170 1150 IF Z$="Y" OR Z$="y" THEN F=1:GOTO 1170 1160 BEEP:GOTO 1080 1170 INPUT "Initial rate=";R(1) 1180 FOR I=2 TO K 1190 R(I)=ABS((C(I)-C(I-1))/(Y(I)+M(I)/12-(Y(I-1)+M(I-1)/12))*F) 1200 NEXT I 1210 F1=1:RETURN 2000 A=ASC(INPUT$(1)) AND 95 2010 IF A=ASC(L1$)THENZ$=L1$:RETURNELSE IF A=ASC(L2$)THENZ$=L2$:RETURN ELSE2000