subroutine symbol(x,y,ht,ihol,angle,n) C C subroutine to plot labels C C x,y(real)=co-ordinates in mm. C ht(real)=height of the characters C ihol(integer)=string of characters to be plotted C angle(real)=angle,in degrees,which to rotate the string C n(integer)=number of characters in the string C common/init/ilun,factor,imode,ipenst common/char/slant byte ihol(1),idum(100) !maximum string length C C Take the string,prefix it with 'LB' and suffix it with 'ETX' C ash=sign(1.,ht) asn=sign(1.,angle) hite=abs(ht) angl=abs(angle)+360. height=hite*factor*2.54 theta=angl*0.0174532925 !convert to radians run=cos(theta) rise=sin(theta) width=height*.67 !fix the width for now strlen=float(n-1)+.67 !find no.of character spaces call plot(x,y,3) !move to x,y - pen up if(n.lt.0)height=width*2. !change aspect ratio for symbols write(ilun,20)slant,width,height,run,rise 20 format(' ','SL'F7.3';SI'F6.2','F6.2';DI'F6.2','F6.2';') if(ash.gt.0.and.asn.gt.0.)goto 1 hafx=-strlen/2. hafy=0. if(ash.lt.0.and.asn.lt.0)hafy=-.5 if(ash.gt.0.and.asn.lt.0.)hafx=-strlen write(ilun,8)hafx,hafy 8 format(' CP'F8.3','F8.3';') 1 do 5 i=1,100 5 idum(i)=0 j=3 do 10 i=1,n idum(j)=ihol(i) j=j+1 10 continue idum(1)="114 !L idum(2)="102 !B idum(n+3)="3 !ETX if(n.lt.0)goto 30 call putstr(ilun,idum,'0',err) goto 520 30 strlen=1.0 isym=ihol(1) goto(100,110,120,130,140,150,160,170,180,190,200,210, + 220,230,240),isym+1 100 write(ilun,105) 105 format(' UC-99,-4,-4,99,8,0,0,8,-8,0,0,-8,-99,4,4;') !square goto 500 110 call circle(x,y,.065) !circle goto 500 120 write(ilun,125) 125 format(' UC-99,-4,-4,99,4,8,4,-8,-8,0,-99,4,4;') !triangle goto 500 130 write(ilun,135) 135 format(' UC-99,0,-4,99,0,8,-99,-4,-4,99,8,0,-99,4,0;') !+ sign goto 500 140 write(ilun,145) 145 format(' UC-99,-4,-4,99,8,8,-99,-8,0,99,8,-8,-99,-4,4;') !X goto 500 150 write(ilun,155) 155 format(' UC-99,0,-4,99,-4,4,4,4,4,-4,-4,-4,-99,0,4;') !diamond goto 500 160 write(ilun,165) 165 format(' UC-99,-4,0,99,4,4,4,-4,-8,0,-99,4,-4,99,0,4;') !arrow goto 500 170 write(ilun,175) 175 format(' UC-99,-4,-4,99,8,8,-8,0,8,-8,-99,-4,4;')!triangle with legs goto 500 180 write(ilun,185) 185 format(' UC-99,-4,4,99,8,0,-8,-8,8,0,-99,-4,4;') !Z goto 500 190 write(ilun,195) 195 format(' UC-99,-4,4,99,4,-4,4,4,-99,-4,-8,99,0,4;') !Y goto 500 200 write(ilun,205) 205 format(' UC-99,-2,-2,99,0,4,4,0,0,-4,-4,0,-2,-2,-99,2,6,99, + -2,2,-99,6,-2,99,2,2,-99,-2,-6,99,2,-2,-99,-4,4;') !star goto 500 210 write(ilun,215) 215 format(' UC-99,-4,0,99,8,0,-99,0,4,99,-8,-8,-99, + 4,0,99,0,8,-99,-4,0,99,8,-8,-99,-4,4;') !asterisk goto 500 220 write(ilun,225) 225 format(' UC-99,-4,-4,99,8,8,-8,0,8,-8,-8,0,-99,4,4;') !hourglass goto 500 230 write(ilun,235) 235 format(' UC-99,0,-4,99,0,8,-99,0,-4;') !vertical bar | goto 500 240 write(ilun,245) 245 format(' UC-99,-4,-2,99,4,6,4,-6,-8,0,-99,0,4,99, + 4,-6,4,6,-8,0,-99,4,-2;') !star of David 500 write(ilun,510)width,height 510 format(' SM;SI'F7.2','F7.2';') !cancel symbol mode,reset height 520 xr=x+strlen*cos(theta) yr=y+strlen*sin(theta) call plot(xr,yr,0) !redefine current pen position return end