@@@II6IIA@@@&II200II6&II2?@@?IIA)F&II2AAAA0/II) >AA>B@66/II)"AI6 bQIF"AI60AA?@@?yy 1 !"LABELS" IS CHAINED FROM "72PLOT" VIA "AXES". SEE DOCUMENTATION OF "72PLOT" FOR RUN-IMPLEMENTATION. 10 ON ERROR GOTO 1220 : C$=SYS(CHR$(6%)+CHR$(-7%)) !ENABLE C-TRAP 20 DIM D%(32%),A%(30%) 30 OPEN "COMVAR.DAT" FOR INPUT AS FILE 2% 40 INPUT #2%,L1,U1,K1,L2,U2,K2,F%,B%,B1%,R,R1,M1%,M2%,S%,P$,D$,G$ 50 CLOSE 2% 60 IF INSTR(1%,P$,"*")=0% THEN 100 ELSE CHANGE P$ TO D% 70 FOR I%=1% TO D%(0%) : IF D%(I%)=42% THEN D%(I%)=44% !CHANGE * TO , 80 NEXT I% 90 CHANGE D% TO P$ 100 A$=" #### ####^" : B$=CHR$(13%)+CHR$(10%) 110 OPEN P$ AS FILE 1% : IF INSTR(1%,P$,":")>0% THEN 130 120 INPUT#1%,Z$ : GOTO 120 !POINT TO END OF FILE 130 OPEN "ASCII.VIR[10,30]" FOR INPUT AS FILE 4% !CHARACTER FILE 140 DIM #4%,K$(100%)=32% : DIM T%(100%),T1%(100%),T2%(100%),K1%(32%) 150 DEF FNA(X)=INT((X-L1)/(U1-L1)*(9999%-B%-B1%)+B1%+.5)!X-SCALING 160 DEF FNB(Y)=INT((Y-L2)/(U2-L2)*(9999%*R-2%*B%)+B%+.5)!Y-SCALING 170 Z%=9999% : Z1%=INT(Z%*R) : IF F%=0% THEN 430 180 IF K1<>1E37 THEN L$="N" : GOTO 200 !LINEAR SCALE FLAG 190 K1=1 : L$="Y" !LOG SCALE FLAG 200 FOR I3=L1 TO U1+K1/10 STEP K1 !X-AXIS LABELLING LOOP 210 I2=I3 : IF L$="Y" THEN I2=10^(I3) !LABEL NO..LOG OPTION 220 IF F%=3% AND I3=L1 THEN 300 ELSE IF F%=4% AND I2==0 THEN 300 !SKIP CROSSOVER 230 GOSUB 890 !NUMBER CONDITIONER 240 K%=-6%*M1%*LEN(NUM$(I2)) !NO. OF CHARACTER SPACES 250 IF G$="COLUMS" THEN K%=K%+FNA(L1+K1)-B1% !LABEL COLUMNS 260 X9%=FNA(I3)+K%/2% !ALIGN SYMMETRICALLY 270 IF F%=3% OR F%=4% THEN Y9%=FNB(0%)-S%-6%*M2% ELSE Y9%=FNB(L2)-S%-6%*M2% !Y-POSITION OF X-LABELS 280 IF G$="COLUMS" AND I2==U1 THEN 300 !SKIP LAST LABEL 290 GOSUB 780 !WRITE SCALE NUMBER 300 NEXT I3 310 IF K2<>1E37 THEN L$="N" : GOTO 330 !LINEAR SCALE FLAG 320 K2=1 : L$="Y" !LOG SCALE FLAG 330 FOR I3=L2 TO U2+K2/10 STEP K2 !Y-AXIS LABELLING LOOP 340 I2=I3 : IF L$="Y" THEN I2=10^(I3) !LIN OR LOG OPTION 350 IF F%=3% AND I2==0 THEN I2=0 !AVOID RESIDUAL "ZERO" 360 IF F%=4% OR F%=5% THEN IF I2==0 THEN 420 !SKIP ZERO 370 GOSUB 890 !CONDITIONER 380 K%=-6%*M1%*(LEN(NUM$(I2))-1%) !RIGHT JUSTIFY 390 IF F%=4% OR F%=5% THEN X9%=FNA(0%)+K%-S% ELSE X9%=K%+FNA(L1)-S% 400 Y9%=FNB(I3)-2%*M2% !LOCATE VERTICALLY 410 GOSUB 780 !WRITE SCALE NUMBER 420 NEXT I3 430 PRINT "GRAPH HEADING TITLE";:INPUT LINE T$ 440 PRINT "X-AXIS TITLE";:INPUT LINE T1$ 450 PRINT "Y-AXIS TITLE";:INPUT LINE T2$ 460 CHANGE T$ TO T% : CHANGE T1$ TO T1% : CHANGE T2$ TO T2% 470 IF T%(0%)=2% THEN 570 480 X9%=B1%-6%*M1%+((Z%-B1%-B%)-(T%(0%)-2%)*6%*M1%)/2% !CENTRE JUSTIFY 490 Y9%=FNB(U2)+S%+8%*M2% !VERTICAL POSITION 500 PRINT #1%,USING A$,X9%-6%*M1%,Y9%-M2% !GRAPH TITLE FRAME 510 PRINT #1%,X9%-6%*M1%;Y9%-M2% 520 PRINT #1%,X9%+8%*M1%+(T%(0%)-1%)*6%*M1%;Y9%-M2%;B$; X9%+8%*M1%+(T%(0%)-1%)*6%*M1%;Y9%+6%*M2%;B$; X9%-6%*M1%;Y9%+6%*M2%;B$; X9%-6%*M1%;Y9%-M2% 530 FOR J%=1% TO T%(0%)-2% !GRAPH TITLE 540 X9%=X9%+M1%*6% : K9%=T%(J%)-32% : IF K9%=0% THEN 560 550 GOSUB 970 560 NEXT J% 570 IF T1%(0%)=2% THEN 660 580 REM....SET X-TITLE START POINT 590 Y9%=2%*M2%:X9%=B%-6%*M1%+((Z%-2%*B%)-(T1%(0%)-2%)*6%*M1%)/2%!CENTRE 600 FOR J%=1% TO T1%(0%)-2% !-2 TO CLIP CR & LF ADDED BY INPUT LINE 610 K9%=T1%(J%)-32% !SPECIFY ASCII.VIR SUBSCRIPT 620 IF K9%=0% THEN 640 !SPACE 630 GOSUB 970 !ASCII CHARACTER WRITE 640 X9%=X9%+6%*M1% !CHARACTER SPACE 650 NEXT J% 660 IF T2%(0%)=2% THEN 740 670 REM...SET Y-TITLE START POINT 680 M2%=M2%*R1 : M1%=M1%/R1 : X9%=6%*M2% 690 Y9%=B%+((Z1%-2%*B%)-(T2%(0%)-2%)*6%*M1%)/2% !CENTRE JUSTIFY 700 FOR J%=1% TO T2%(0%)-2% : K9%=T2%(J%)-32% : IF K9%=0% THEN 720 710 GOSUB 1100 !WRITE SIDEWAYS-ON 720 Y9%=Y9%+6%*M1% !CHARACTER SPACE 730 NEXT J% 740 PRINT #1%,USING A$,Z%,Z% !EXPOSE PLOT 750 PRINT #1%," PLTT" 760 CLOSE 1% : CHAIN G$+"[10,30]" 770 !!!!!!!!!!!!!!!!!PROGRAM ENDS!!!!!!!!!!!!!!!!!!!!!!!! 780 REM...NUMBER ANALYSE & WRITE 790 N$=NUM$(I2) !STRING FROM NUMBER 800 L%=LEN(N$) !-SIGN,NUMBER STRING,END SPACE 810 FOR C%=1% TO L% !PRINT LOOP 820 K9%=ASCII(MID(N$,C%,1%))-32% !ASSIGN ASCII.VIR SUBSCRIPT 830 IF K9%=0% THEN 850 !SPACE 840 GOSUB 970 !CHARACTER WRITE SUBROUTINE 850 X9%=X9%+6%*M1% !CHARACTER SHIFT 860 NEXT C% 870 RETURN 880 REM...NUMBER CONDITIONER (CORRECTS "7TH DIGIT" ERROR) 890 OPEN "TEMP.TMP" FOR OUTPUT AS FILE 5%!CREATES FILE AND BUFFER 900 KILL "TEMP.TMP" !DESTROYS FILE ONLY 910 FIELD #5%,11% AS I3$ !ASSIGNS I3$ TO BUFFER 920 PRINT #5%,USING".######^^^^",ABS(I2)!PRINT ON BUFFER 930 I2=VAL(I3$)*SGN(I2) !I2 ROUNDED 940 CLOSE 5% 950 RETURN 960 !SUBROUTINE FOR X-AXIS SCALE & TITLE AND Y-AXIS SCALE ONLY 970 CHANGE K$(K9%) TO K1% !CONVERT ASCII.VIR LIST ITEM 980 V1%=X9%+M1%*(K1%(1%)-48%) : V2%=Y9%+M2%*(K1%(2%)-48%) !FIRST POINT 990 PRINT #1%,USING A$,V1%,V2% : PRINT #1%,V1%;V2% !PLOTTED 1000 FOR I%=3% TO K1%(0%) STEP 2% !LOOP THROUGH REMAINING POINTS 1010 IF K1%(I%)=56% THEN 1070 !PEN LIFT CUE - SKIP TO NEXT 1020 X8%=X9%+M1%*(K1%(I%)-48%) : Y8%=Y9%+M2%*(K1%(I%+1%)-48%) !NEXT 1030 IF K1%(I%-2%)=56% THEN 1060 !PEN LIFT TO COORDINATES 1040 PRINT #1%,X8%;Y8% !PLOT IT 1050 GOTO 1070 1060 PRINT #1%,USING A$,X8%,Y8% : GOTO 1040 1070 NEXT I% 1080 RETURN 1090 !SUBROUTINE FOR Y-AXIS TITLE (SIDEWAYS-ON). 1100 CHANGE K$(K9%) TO K1% 1110 V1%=X9%-M2%*(K1%(2%)-48%): V2%=Y9%+M1%*(K1%(1%)-48%) 1120 PRINT #1%,USING A$,V1%,V2% : PRINT #1%,V1%;V2% 1130 FOR I%=3% TO K1%(0%) STEP 2% 1140 IF K1%(I%)=56% THEN 1200 1150 X8%=X9%-M2%*(K1%(I%+1%)-48%) : Y8%=Y9%+M1%*(K1%(I%)-48%) 1160 IF K1%(I%-2%)=56% THEN 1190 1170 PRINT #1%,X8%;Y8% 1180 GOTO 1200 1190 PRINT #1%,USING A$,X8%,Y8% : GOTO 1170 1200 NEXT I% 1210 RETURN 1220 IF (ERR=11% OR ERR=59%) AND ERL=120% THEN RESUME 130 ELSE GOTO 32760 32700 !SUBROUTINE TO DEASSIGN PLOTTER OR DEVICE ON ERROR OR CTRL/C 32740 CHANGE P$ TO D% : A%(0%)=30% : A%(1%)=6% : A%(2%)=11% : A%(I%)=0% FOR I%=3% TO 30% : A%(23%)=D%(1%) : A%(24%)=D%(2%) : IF D%(3%)=58% THEN 32745 ELSE A%(25%)=VAL(CHR$(D%(3%))): A%(26%)=255% 32745 CHANGE A% TO A1$ : S$=SYS(A1$) : &P$" DEASSIGNED" 32750 IF ERR>0% AND ERR<>28% THEN E$=SYS(CHR$(6%)+CHR$(9%)+CHR$(ERR)) : E$=MID(E$,3%,INSTR(3%,E$,CHR$(0%))-3%) : &"***"E$ 32755 RETURN 32760 IF INSTR(1%,P$,":")=0% THEN GOSUB 32750 ELSE GOSUB 32740 32765 RESUME 32766 32766 CLOSE I% FOR I%=1% TO 12% 32767 END U0&