SUBROUTINE LABEL(TITX,TITY,SIZE,ITYPE) COMMON /PLTCOM/IP1P2(2,2),DMNMX(2,2),PMNMX(2,2),IPAPER(2,2) COMMON /PLTCOM/LEGWIN(2,2) COMMON /PLTCOM/NTICK(2) COMMON /PLTCOM/NPEN,NLINE,ISYM,NCNVER,NSTRT,IPLTOK,LEGPOS COMMON /ADRS/IPLTTR C C... SUBROUTINE TO NUMBER AND LABEL AXES C... TITX IS LABEL FOR X-AXIS C... TITY IS LABEL FOR Y-AXIS C... TITX AND TITY MUST BE BYTE ARRAYS, EACH ENDING WITH A ZERO BYTE C.. TITX AND TITY MAY BE UP TO 60 CHARACTERS LONG (NOT COUNTING THE C... ZERO BYTE) C... TITX=0 AND TITY=0 GIVE NO LABEL ON EACH AXIS C... SIZE IS THE RATION OF CHARACTER SIZE TO DEFAULT SIZE C... SIZE(1) : AXIS TITLE SIZE C... SIZE(2) : AXIS LABEL SIZE (NUMBERS) C... ITYPE IS THE TYPE OF GRAPH. C... BIT 2 SET (2) ==> SUPPRESS CORNER NUMBERS DIMENSION TITXBF(63),TITYBF(63) DIMENSION DATA(2),IDATA(2), BUF(2) BYTE TITX(1),TITY(1),ETX,M1(33),M2(15),M3(29),M4(21) 1 ,M5(13),M6(17),TITXBF,TITYBF,M4BUF(23) DIMENSION IWFMT(2),IDFMT(2),SIZE(2) DATA FUDGE/.0001/ C... ETX IS THE TERMINATOR FOR USE WITH C... THE "LB" PLOTTER INSTRUCTION DATA ETX/3/ C C C... SETUP PLOTTER FOR LABELING ENCODE(34,10,M1) IPAPER 10 FORMAT('SM;IW',3(I6','),I6,';*') CALL XMT(M1) C... SET SIZE OF CHARACTERS FOR LABELING SW=.75*SIZE(2) SH=1.5*SIZE(2) ENCODE(15,15,M1) SW,SH 15 FORMAT('SR',F5.2,',',F5.2,';*') CALL XMT(M1) ICORN=IBIT(ITYPE,2) C... DECIDE WHAT FORMAT TO USE FOR LABELLING AXES C... (F.) C... CALCULATE # OF DIGITS AFTER DECIMAL POINT DO 20 I=1,2 IDFMT(I)=MAX0(0,-IFLOOR(ALOG10((PMNMX(I,2)-PMNMX(I,1))/ 1 NTICK(I))+FUDGE)) C... CALCULATE # OF DIGITS IN EXCESS OF 1 BEFORE DECIMAL POINT IDIGBF=MAX0(0,IFLOOR(ALOG10(AMAX1(PMNMX(I,2),-PMNMX(I,1))) 1 +FUDGE)) C... CALCULATE WIDTH OF FORMAT OUTPUT (ADD 2 FOR DECIMAL PT AND C... ALLOW SPACE FOR MINUS SIGN IWFMT(I)=IDIGBF+IDFMT(I)+2 20 IF (PMNMX(I,1) .LT. 0) IWFMT(I)=IWFMT(I)+1 C C... LABEL Y-AXIS C C... GO TO CORNER DATA(1)=PMNMX(1,1) DATA(2)=PMNMX(2,2) CALL POINT(DATA,0) C... OFSET FOR WRITING NUMBERS BCKSP2=IWFMT(2)+1 ENCODE(16,100,M2) BCKSP2 100 FORMAT('CP-',F3.1,',-.25;OC',';*') C... READ SHIFTED POSITION CALL REC(M2,M3,L) L=L-1 DECODE(L,110,M3) IDATA,ITMP 110 FORMAT(3I9) CALL UNSCL(DATA,IDATA) C... SHIFT IN Y DELY=PMNMX(2,2)-DATA(2) NTICKS=NTICK(2) C... DO LABELLING J1=NTICKS-ICORN DO 160 J=ICORN,J1 C... CALCULATE LABEL POS=PMNMX(2,2)-J*(PMNMX(2,2)-PMNMX(2,1))/NTICKS C... CALCULATE LOCATION DATA(2)=POS-DELY C... GO TO LOCATION CALL POINT(DATA,0) C... WRITE LABEL DO 140 K=1,20 140 M4(K)=0 POS=POS+SIGN(0.5,POS)/(10.**IDFMT(2)) ENCODE(30,150,M3) POS 150 FORMAT(F29.10) DO 155 K=1,IWFMT(2) KK=19+IDFMT(2)-IWFMT(2)+K 155 M4(K)=M3(KK) CALL STRPAD(M4,20) ENCODE(23,157,M4BUF)(M4(I),I=1,20),ETX 157 FORMAT(20A1,A1,';*') CALL XMT('LB*') CALL XMT(M4BUF) 160 CONTINUE C C... LABEL X-AXIS C C... GO TO CORNER DATA(1)=PMNMX(1,1) DATA(2)=PMNMX(2,1) CALL POINT(DATA,0) C... OFFSET FOR WRITING NUMBERS BCKSP1=0.5*IWFMT(1) ENCODE(14,200,M5) BCKSP1 200 FORMAT('CP-',F3.1,',-1;OC;*') C... READ SHIFTED POSITION CALL REC(M5,M3,L) L=L-1 DECODE(L,110,M3) IDATA,ITMP CALL UNSCL(DATA,IDATA) C... SHIFT IN X DELX=PMNMX(1,1)-DATA(1) NTICKS=NTICK(1) C... DO LABELLING J1=NTICKS-ICORN DO 260 J=ICORN,J1 C... CALCULATE LABEL POS=PMNMX(1,1)+J*(PMNMX(1,2)-PMNMX(1,1))/NTICKS C... CALCULATE LOCATION DATA(1)=POS-DELX C... GO TO LOCATION CALL POINT(DATA,0) C... WRITE LABEL DATA M4/21*0/ DO 210 K=1,20 210 M4(K)=0 POS=POS+SIGN(0.5,POS)/(10.**IDFMT(1)) ENCODE(30,250,M3) POS 250 FORMAT(F29.10) DO 255 K=1,IWFMT(1) KK=19+IDFMT(1)-IWFMT(1)+K 255 M4(K)=M3(KK) CALL STRPAD(M4,20) ENCODE(23,157,M4BUF)(M4(I),I=1,20),ETX CALL XMT('LB*') CALL XMT(M4BUF) 260 CONTINUE C C... TITLE X-AXIS C... SET UP CHARACTER SIZE FOR TITLES SW=.75*SIZE(1) SH=1.5*SIZE(1) ENCODE(15,15,M1) SW,SH CALL XMT(M1) C... FIND LENGTH OF TITLE NCHAR=LEN(TITX) NCHAR2=(-NCHAR/2) C CALL STRPAD(TITX,60) ENCODE (63,393,TITXBF)(TITX(I),I=1,60),ETX 393 FORMAT (60A1,A1,';*') C... WRITE TITLE C... LOCATE CENTER OF AXIS DATA(1)=0.5*(PMNMX(1,1)+PMNMX(1,2)) DATA(2)=PMNMX(2,1) CALL POINT(DATA,0) ENCODE(17,380,M6)NCHAR2 380 FORMAT('CP',I6,',-2.5;LB*') CALL XMT(M6) CALL XMT(TITXBF) C C... TITLE Y-AXIS C C... FIND LENGTH OF LABEL NCHAR=LEN(TITY) IF (NCHAR .EQ. 0) GOTO 600 NCHAR2=(-NCHAR/2) ENCODE (63,393,TITYBF)(TITY(I),I=1,60),ETX C... WRITE TITLE C... LOCATE CENTER OF AXIS DATA(1)=PMNMX(1,1) DATA(2)=0.5*(PMNMX(2,1)+PMNMX(2,2)) CALL POINT(DATA,0) C BCKSP2=(-BCKSP2) ENCODE(29,480,M3)BCKSP2,NCHAR2 C 480 FORMAT('CP-',F3.1,',0;DR0,1;CP',I6,',1;LB*') CALL XMT(M3) CALL XMT(TITYBF) C C... RESTORE PLOTTER SETTINGS 600 CALL XMT('DR;*') CALL PARAM RETURN END