1C*GRLEN -- inquire plotted length of character string 2C+ 3 SUBROUTINE GRLEN (STRING, D) 4C 5C GRPCKG: length of text string (absolute units) 6C-- 7C (3-Mar-1983) 8C 19-Jan-1988 - remove unused label [TJP]. 9C 9-Sep-1989 - standardize [TJP]. 10C----------------------------------------------------------------------- 11 INCLUDE 'grpckg1.inc' 12 LOGICAL UNUSED 13 INTEGER XYGRID(300) 14 INTEGER LIST(256) 15 CHARACTER*(*) STRING 16 REAL FACTOR, COSA, SINA, DX, D, RATIO, FNTBAS, FNTFAC 17 INTEGER I, IFNTLV, LX, NLIST 18 INTRINSIC ABS, LEN 19C 20 D = 0.0 21 IF (LEN(STRING).LE.0) RETURN 22C----------------------------------------------------------------------- 23C Compute scaling and orientation 24C----------------------------------------------------------------------- 25 FACTOR = GRCFAC(GRCIDE)/2.5 26 RATIO = GRPXPI(GRCIDE)/GRPYPI(GRCIDE) 27 COSA = FACTOR 28 SINA = 0.0 29 FNTBAS = 0.0 30 FNTFAC = 1.0 31 IFNTLV = 0 32C 33C Convert string to symbol numbers: 34C \u and \d escape sequences are converted to -1,-2 35C 36 CALL GRSYDS(LIST,NLIST,STRING,GRCFNT(GRCIDE)) 37C 38C Plot the string of characters 39C 40 DO 380 I = 1,NLIST 41 IF (LIST(I).LT.0) THEN 42 IF (LIST(I).EQ.-1) THEN 43 IFNTLV = IFNTLV+1 44 FNTBAS = FNTBAS + 16.0*FNTFAC 45 FNTFAC = 0.6**ABS(IFNTLV) 46 ELSE IF (LIST(I).EQ.-2) THEN 47 IFNTLV = IFNTLV-1 48 FNTFAC = 0.6**ABS(IFNTLV) 49 FNTBAS = FNTBAS - 16.0*FNTFAC 50 END IF 51 GOTO 380 52 END IF 53 CALL GRSYXD(LIST(I),XYGRID,UNUSED) 54 LX = XYGRID(5)-XYGRID(4) 55 DX = COSA*LX*RATIO 56 D = D + DX*FNTFAC 57 380 CONTINUE 58C 59 END 60