/* pwritf.f -- translated by f2c (version 19961017). You must link the resulting object file with the libraries: -lf2c -lm (in that order) */ #include "f2c.h" /* Common Block Declarations */ extern struct { real xpgmin, ypgmin, xpgmax, ypgmax, xclbot, yclbot, xcltop, ycltop, xbot, ybot, xtop, ytop, xmin, ymin, xmax, ymax; integer ixcoor, iycoor; real alphxx, betaxx, alphyy, betayy, tmajx, tminx, tmajy, tminy; integer majrx, minrx, majry, minry, isizx, isizy; real xphold, yphold; } zzzplt_; #define zzzplt_1 zzzplt_ extern struct { real xphmax, yphmax; integer ixpmax, iypmax; real xpscal, ypscal; integer iflip, nplotr; char cfile[64]; } zzpltr_; #define zzpltr_1 zzpltr_ /* Subroutine */ int pwritf_(real *x, real *y, char *ch, integer *nch, integer *isiz, integer *ior, integer *icent, ftnlen ch_len) { /* System generated locals */ integer i__1, i__2; real r__1, r__2; /* Local variables */ static real xold, yold, size, xorg, yorg; static integer lstr[69999], nstr; static real xstr[69999], ystr[69999]; static integer i__; static char chloc[6666]; static integer nchar; extern /* Subroutine */ int color_(integer *); static integer isize; static real ct; static integer nchloc; static real st, xr, yr, xx, yy; extern integer lastnb_(char *, ftnlen); extern /* Subroutine */ int zzline_(real *, real *, real *, real *), zzconv_(char *, integer *, char *, integer *, ftnlen, ftnlen), zzphys_(real *, real *), zzstro_(char *, integer *, integer *, real *, real *, integer *, ftnlen); static real orr; /* ....................................................................... */ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ /* Calculate character width in terms of 1/1000 of the x-width. */ /* Internal Data for PLOTPAK */ isize = *isiz; if (isize <= 0) { isize = 8; } else if (isize == 1) { isize = 12; } else if (isize == 2) { isize = 16; } else if (isize == 3) { isize = 24; } size = isize * .001f * (zzzplt_1.xpgmax - zzzplt_1.xpgmin); /* Rotation/scaling factors for digitization */ orr = *ior * .017453292f; ct = size * cos(orr); st = size * sin(orr); /* Base location, in internal coordinates */ xx = *x; yy = *y; if (*nch >= 0) { zzphys_(&xx, &yy); } /* Get no. of characters in string. Special option 999 must be checked. */ nchar = abs(*nch); if (nchar == 999) { i__1 = nchar; for (i__ = 1; i__ <= i__1; ++i__) { if (*(unsigned char *)&ch[i__ - 1] == '\0') { goto L20; } /* L10: */ } L20: nchar = i__ - 1; } else if (nchar == 0) { nchar = lastnb_(ch, ch_len); } /* Digitize string into line segments */ zzconv_(ch, &nchar, chloc, &nchloc, ch_len, 6666L); zzstro_(chloc, &nchloc, &nstr, xstr, ystr, lstr, 6666L); if (nstr <= 0) { return 0; } /* Find min, max of x and y */ zzzplt_1.xbot = xstr[0]; zzzplt_1.ybot = ystr[0]; zzzplt_1.xtop = zzzplt_1.xbot; zzzplt_1.ytop = zzzplt_1.ybot; i__1 = nstr; for (i__ = 2; i__ <= i__1; ++i__) { /* Computing MIN */ r__1 = zzzplt_1.xbot, r__2 = xstr[i__ - 1]; zzzplt_1.xbot = dmin(r__1,r__2); /* Computing MAX */ r__1 = zzzplt_1.xtop, r__2 = xstr[i__ - 1]; zzzplt_1.xtop = dmax(r__1,r__2); /* Computing MIN */ r__1 = zzzplt_1.ybot, r__2 = ystr[i__ - 1]; zzzplt_1.ybot = dmin(r__1,r__2); /* Computing MAX */ r__1 = zzzplt_1.ytop, r__2 = ystr[i__ - 1]; zzzplt_1.ytop = dmax(r__1,r__2); /* L100: */ } /* Now compute origin of string, based on centering option; */ /* the origin of the string goes at (XX,YY) */ if (*icent == -1) { xorg = zzzplt_1.xbot; yorg = (zzzplt_1.ybot + zzzplt_1.ytop) * .5f; } else if (*icent == 0) { xorg = (zzzplt_1.xbot + zzzplt_1.xtop) * .5f; yorg = (zzzplt_1.ybot + zzzplt_1.ytop) * .5f; } else if (*icent == 1) { xorg = zzzplt_1.xtop; yorg = (zzzplt_1.ybot + zzzplt_1.ytop) * .5f; } else { xorg = zzzplt_1.xbot; yorg = zzzplt_1.ybot; } /* Now draw the strokes */ i__1 = nstr; for (i__ = 1; i__ <= i__1; ++i__) { if (lstr[i__ - 1] <= 1) { xr = xx + ct * (xstr[i__ - 1] - xorg) - st * (ystr[i__ - 1] - yorg); yr = yy + st * (xstr[i__ - 1] - xorg) + ct * (ystr[i__ - 1] - yorg); if (lstr[i__ - 1] == 1) { zzline_(&xold, &yold, &xr, &yr); } xold = xr; yold = yr; } else if (lstr[i__ - 1] > 100 && lstr[i__ - 1] <= 107) { i__2 = lstr[i__ - 1] - 100; color_(&i__2); } /* L200: */ } zzzplt_1.xphold = xold; zzzplt_1.yphold = yold; return 0; } /* pwritf_ */ integer lastnb_(char *cline, ftnlen cline_len) { /* System generated locals */ integer ret_val; /* Builtin functions */ integer i_len(char *, ftnlen); /* Local variables */ static integer npos; /* Return the position of the last nonblank character in the input */ /* character string. CLINE is CHARACTER*(*). Even if CLINE is all */ /* blanks, LASTNB will be returned as 1 so that operations of the */ /* form CLINE(1:LASTNB) won't be garbage. */ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ /* Start at the end and work backwards until a nonblank is found. */ /* Loop back to 100 to check position # NPOS each time. */ npos = i_len(cline, cline_len); L100: /* quit if at the beginning */ if (npos <= 1) { goto L200; } /* quit if not a blank or a null */ if (*(unsigned char *)&cline[npos - 1] != ' ' && *(unsigned char *)&cline[ npos - 1] != '\0') { goto L200; } /* move back one position and try again */ --npos; goto L100; /* ....................................................................... */ L200: ret_val = npos; return ret_val; } /* lastnb_ */ /* Subroutine */ int zzstro_(char *ch, integer *nch, integer *nstr, real * xstr, real *ystr, integer *lstr, ftnlen ch_len) { /* Initialized data */ static integer noff[256] = { 3452,3452,3452,3452,3452,3452,3452,3452,3452, 3452,3452,3452,3452,3452,3452,3452,3452,3452,3452,3452,3452,3452, 3452,3452,3452,3452,3452,3452,3452,3452,3452,3452,3448,2598,2646, 3307,3268,3138,3168,2641,2672,2691,3439,2790,2566,2787,2560,2669, 2205,2243,2252,2294,2338,2348,2383,2429,2456,2514,2574,2585,2832, 2820,2836,2611,3215,1,14,54,85,112,129,144,180,199,208,226,245, 256,277,292,334,359,419,458,491,504,524,535,552,567,582,2710,3818, 2719,3564,3597,2953,595,631,660,687,718,747,766,821,843,857,879, 898,907,942,964,998,1029,1058,1077,1108,1122,1144,1155,1172,1187, 1205,2728,2784,2752,3593,3452,2856,3033,2802,2807,3600,2980,2916, 3615,2776,2780,3384,2795,2840,3316,3759,3783,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,2890,2655,3022,2971,2962,2944,3651,3064,2929,3666, 3805,3812,3815,3430,2848,3683,3463,3468,3473,3479,3485,3498,3511, 3524,3537,3554,2877,3715,3737,3359,2825,2903,3689,1,14,1218,1229, 112,582,180,1240,199,226,1290,256,277,1301,292,1326,334,1341,491, 1357,1386,552,1428,1463,3702,3449,3455,3450,3454,3451,3453,3456, 1502,1539,1591,1616,1658,1681,1711,1740,1780,1794,1819,1839,1863, 1883,1924,1954,1971,2000,2032,2045,2074,2112,2133,2164,3457,3458, 3459,3460,3461,3462,3112 }; static integer numstr[256] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, 1,1,1,1,1,1,1,1,1,1,1,1,13,9,9,39,30,47,5,19,19,9,5,8,3,6,3,38,9, 42,44,10,35,46,27,58,46,11,13,4,5,4,30,53,13,40,31,27,17,15,36,19, 9,18,19,11,21,15,42,25,60,39,33,13,20,11,17,15,15,13,9,3,9,29,3,9, 36,29,27,31,29,19,55,22,14,22,19,9,35,22,34,31,29,19,31,14,22,11, 17,15,18,13,24,3,24,4,1,21,31,5,13,15,42,13,36,4,4,46,7,8,43,24, 22,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,13,14,11,9,9,9,15,48,15, 17,7,3,3,9,8,6,5,5,6,6,13,13,13,13,17,10,13,22,22,25,7,13,13,13, 40,11,11,17,13,19,50,9,19,11,21,15,25,42,15,25,16,13,29,42,15,35, 39,13,1,1,1,1,1,1,1,37,52,25,42,23,30,29,40,14,25,20,24,20,41,30, 17,29,32,13,29,38,21,31,41,1,1,1,1,1,1,26 }; static struct { integer e_1[3820]; } equiv_38 = { 8011, 23723, 9173, 25515, 7378, 25390, 6854, 25792, 6586, 25408, 9024, 25408, 6858, 7371, 24619, 8405, 24619, 7765, 26176, 25023, 24767, 24766, 24638, 24510, 24511, 24255, 8266, 24895, 24767, 24766, 24638, 24510, 24511, 24383, 7232, 25664, 25023, 24767, 24766, 24637, 24510, 24511, 24255, 23104, 9803, 24895, 24767, 24766, 24637, 24510, 24511, 24383, 7754, 8904, 24765, 24646, 24509, 24386, 24257, 24384, 24255, 24382, 24510, 24509, 24635, 24765, 24766, 24894, 25023, 24896, 25025, 24898, 24770, 7248, 24383, 24382, 24510, 24509, 24635, 24765, 24766, 24894, 24895, 8138, 7371, 24619, 8405, 24619, 7765, 25920, 25023, 24894, 24766, 24765, 24635, 24509, 24510, 24382, 24255, 23360, 9557, 24895, 24894, 24766, 24765, 24635, 24509, 24510, 24382, 24383, 8010, 7371, 24619, 8405, 24619, 9039, 24632, 6990, 26688, 24634, 24518, 6838, 25408, 6965, 26688, 24646, 24506, 7242, 7371, 24619, 8405, 24619, 9039, 24632, 6990, 26688, 24634, 24518, 6838, 25408, 6965, 25536, 8138, 8904, 24765, 24646, 24509, 24386, 24257, 24384, 24255, 24382, 24510, 24509, 24635, 24765, 24766, 24894, 25023, 24896, 25025, 24898, 7378, 24383, 24382, 24510, 24509, 24635, 24765, 24766, 24894, 24895, 9160, 24632, 8392, 24632, 7752, 25536, 6978, 7371, 24619, 8405, 24619, 9813, 24619, 8405, 24619, 6101, 25536, 9024, 25536, 6198, 26176, 6197, 25536, 9024, 25536, 6986, 7371, 24619, 8405, 24619, 7765, 25536, 7339, 25536, 6986, 8011, 24623, 24509, 24383, 24384, 24385, 24514, 24642, 24769, 24767, 24511, 9041, 24623, 24509, 24511, 8149, 25536, 6965, 7371, 24619, 8405, 24619, 9941, 22963, 8900, 25652, 7116, 25652, 6229, 25536, 9024, 25408, 5803, 25536, 9024, 25408, 6858, 7371, 24619, 8405, 24619, 7765, 25536, 7339, 26560, 24646, 24506, 6986, 7371, 24619, 8405, 25390, 7378, 25515, 9173, 23723, 9173, 24619, 8405, 24619, 5973, 25152, 9920, 25152, 5547, 25408, 9280, 25536, 6986, 7371, 24619, 8405, 26157, 6737, 26157, 8277, 24619, 6229, 25152, 9408, 25408, 5803, 25408, 8650, 8011, 24255, 24382, 24510, 24508, 24637, 24764, 24766, 24894, 25023, 24896, 25025, 24898, 24770, 24772, 24643, 24516, 24514, 24386, 24257, 24384, 8256, 24383, 24382, 24510, 24508, 24637, 24764, 24766, 24894, 24895, 8512, 24897, 24898, 24770, 24772, 24643, 24516, 24514, 24386, 24385, 7989, 7371, 24619, 8405, 24619, 7765, 26176, 25023, 24767, 24766, 24637, 24510, 24511, 24255, 23616, 9291, 24895, 24767, 24766, 24637, 24510, 24511, 24383, 6710, 25536, 8394, 8011, 24255, 24382, 24510, 24508, 24637, 24764, 24766, 24894, 25023, 24896, 25025, 24898, 24770, 24772, 24643, 24516, 24514, 24386, 24257, 24384, 8256, 24383, 24382, 24510, 24508, 24637, 24764, 24766, 24894, 24895, 8512, 24897, 24898, 24770, 24772, 24643, 24516, 24514, 24386, 24385, 7597, 24641, 24770, 24897, 24768, 24895, 24766, 24761, 24767, 24896, 24770, 24641, 7621, 24764, 24766, 24767, 24768, 24769, 7117, 7371, 24619, 8405, 24619, 7765, 26176, 25023, 24767, 24766, 24638, 24510, 24511, 24255, 23616, 9290, 24895, 24767, 24766, 24638, 24510, 24511, 24383, 6709, 25536, 8523, 24895, 24767, 25017, 24767, 24768, 24769, 7368, 24766, 24889, 24767, 24896, 24770, 24641, 6983, 8776, 24771, 24634, 24515, 24386, 24257, 24256, 24255, 24382, 24638, 24766, 24767, 24895, 25406, 24895, 24894, 6473, 24894, 24895, 25406, 24895, 24767, 24766, 24636, 24382, 24255, 24256, 24257, 24386, 24515, 24634, 24771, 8775, 7883, 24619, 8405, 24619, 7381, 24506, 24646, 26560, 24634, 24518, 6955, 25536, 7498, 7371, 24625, 24765, 24894, 25023, 24896, 25025, 24898, 24771, 24655, 6592, 24625, 24765, 24894, 24895, 7125, 25536, 9152, 25408, 6965, 7115, 25515, 7509, 25390, 9170, 23723, 7125, 25408, 9024, 25408, 6837, 7243, 25131, 7893, 25008, 8784, 24107, 8789, 25131, 7893, 25008, 8784, 24107, 6357, 25536, 9408, 25408, 6837, 7115, 26283, 6741, 26283, 8277, 22827, 8021, 25408, 9024, 25408, 5931, 25408, 9024, 25408, 6858, 7115, 25525, 24630, 7509, 25525, 24630, 9173, 23733, 6987, 25408, 9152, 25408, 6571, 25536, 7626, 8779, 22955, 10069, 22955, 8277, 24506, 24646, 26432, 6443, 26432, 24646, 24506, 7242, 7362, 24639, 24512, 24641, 24769, 24897, 25152, 24895, 24767, 24766, 24633, 24766, 24767, 7884, 24631, 24766, 24895, 24768, 7754, 24511, 23871, 24255, 24510, 24638, 24766, 25023, 25024, 24897, 24898, 7365, 24383, 24510, 24638, 24766, 24895, 8394, 7371, 24619, 8405, 24619, 8267, 24898, 24897, 24896, 25023, 24894, 24765, 24638, 24509, 24382, 24255, 24384, 24385, 24386, 9035, 24895, 24894, 24765, 24638, 24509, 24382, 24383, 6997, 25152, 8629, 8641, 24511, 24767, 24769, 24641, 24386, 24385, 24256, 24255, 24382, 24509, 24638, 24765, 24894, 25023, 24896, 25025, 24898, 7371, 24383, 24382, 24509, 24638, 24765, 24894, 24895, 8010, 8651, 24619, 8405, 24619, 8139, 24386, 24385, 24384, 24255, 24382, 24509, 24638, 24765, 24894, 25023, 24896, 24897, 24898, 7499, 24383, 24382, 24509, 24638, 24765, 24894, 24895, 8661, 25152, 8107, 25152, 6986, 7230, 26176, 24642, 24514, 24513, 24385, 24256, 24255, 24382, 24509, 24638, 24765, 24894, 25023, 24896, 25025, 24898, 8133, 24643, 24514, 7617, 24383, 24382, 24509, 24638, 24765, 24894, 24895, 8010, 8010, 24511, 24767, 24769, 24641, 24513, 24384, 24383, 24510, 24622, 8661, 24511, 24510, 24622, 7758, 25664, 7218, 25536, 7242, 7748, 24383, 24511, 24510, 24638, 24766, 24767, 24895, 24896, 24897, 24769, 24770, 24642, 24514, 24513, 24385, 24384, 7999, 24510, 24636, 24766, 9024, 24770, 24644, 24514, 8383, 24769, 24897, 24639, 24384, 7097, 24511, 24510, 24639, 24766, 25023, 25280, 25023, 24767, 6597, 24767, 25023, 25280, 25023, 24766, 24639, 24510, 24255, 23872, 24257, 24514, 24641, 24770, 25025, 8394, 7371, 24619, 8405, 24619, 8267, 24898, 25025, 24896, 25023, 24766, 24629, 7758, 24895, 24766, 24629, 6485, 25152, 7723, 25536, 8768, 25536, 6986, 7371, 24511, 24767, 24769, 24513, 8249, 24626, 8398, 24626, 7758, 25152, 7730, 25536, 6986, 7499, 24511, 24767, 24769, 24513, 8377, 24622, 24510, 24383, 24384, 24513, 24641, 24769, 24767, 24511, 8788, 24622, 24510, 24511, 8149, 25152, 7228, 7371, 24619, 8405, 24619, 9550, 23350, 8900, 25400, 7368, 25400, 6485, 25152, 9145, 25408, 6066, 25536, 8768, 25408, 6986, 7371, 24619, 8405, 24619, 7765, 25152, 7723, 25536, 6986, 7364, 24626, 8398, 24626, 8267, 24898, 25025, 24896, 25023, 24766, 24629, 7758, 24895, 24766, 24629, 8395, 24898, 25025, 24896, 25023, 24766, 24629, 7758, 24895, 24766, 24629, 5070, 25152, 7730, 25536, 8768, 25536, 8768, 25536, 6986, 7364, 24626, 8398, 24626, 8267, 24898, 25025, 24896, 25023, 24766, 24629, 7758, 24895, 24766, 24629, 6478, 25152, 7730, 25536, 8768, 25536, 6986, 7876, 24255, 24382, 24509, 24638, 24765, 24894, 25023, 24896, 25025, 24898, 24771, 24642, 24515, 24386, 24257, 24384, 8256, 24383, 24382, 24509, 24638, 24765, 24894, 24895, 8512, 24897, 24898, 24771, 24642, 24515, 24386, 24385, 7868, 7364, 24619, 8405, 24619, 8274, 24898, 24897, 24896, 25023, 24894, 24765, 24638, 24509, 24382, 24255, 24384, 24385, 24386, 9035, 24895, 24894, 24765, 24638, 24509, 24382, 24383, 6990, 25152, 7723, 25536, 8273, 8644, 24619, 8405, 24619, 8146, 24386, 24385, 24384, 24255, 24382, 24509, 24638, 24765, 24894, 25023, 24896, 24897, 24898, 7499, 24383, 24382, 24509, 24638, 24765, 24894, 24895, 8633, 25536, 6865, 7364, 24626, 8398, 24626, 8264, 24771, 24898, 24897, 25024, 24767, 24639, 24511, 24513, 24769, 6721, 25152, 7730, 25536, 7754, 8386, 24770, 24636, 24514, 24513, 24385, 24128, 24383, 24511, 24638, 24767, 24895, 25278, 24895, 24767, 6855, 24767, 24895, 25278, 24895, 24767, 24637, 24511, 24383, 24128, 24385, 24513, 24514, 24636, 24770, 8392, 7371, 24623, 24765, 24895, 24896, 24897, 24770, 7378, 24623, 24765, 24767, 7502, 25664, 7356, 7364, 24629, 24766, 25023, 24896, 25025, 24898, 6987, 24629, 24766, 24895, 9166, 24626, 8398, 24626, 6350, 25152, 9152, 25152, 8114, 25152, 6986, 7108, 25394, 7630, 25268, 9036, 23858, 7246, 25408, 8768, 25408, 6844, 7236, 25138, 7886, 25013, 8779, 24114, 8782, 25138, 7886, 25013, 8779, 24114, 6350, 25536, 9408, 25408, 6844, 7236, 26034, 6990, 26034, 8270, 23090, 8014, 25408, 8768, 25408, 6194, 25408, 8768, 25408, 6986, 7236, 25394, 7630, 25268, 9036, 23858, 24380, 24382, 24383, 24512, 24513, 24769, 24767, 8020, 25408, 8768, 25408, 6844, 8516, 23218, 9806, 23218, 8270, 24508, 24644, 26176, 6706, 26176, 24644, 24508, 7242, 7371, 24619, 8405, 24619, 7765, 26560, 24634, 24518, 6443, 25536, 7882, 8011, 23595, 9301, 25643, 7250, 25518, 6465, 26432, 6335, 26688, 6986, 8011, 24255, 24382, 24510, 24508, 24637, 24764, 24766, 24894, 25023, 24896, 25025, 24898, 24770, 24772, 24643, 24516, 24514, 24386, 24257, 24384, 8256, 24383, 24382, 24510, 24508, 24637, 24764, 24766, 24894, 24895, 8512, 24897, 24898, 24770, 24772, 24643, 24516, 24514, 24386, 24385, 7737, 24633, 9031, 24633, 7492, 25408, 7487, 25408, 7744, 8011, 23723, 9173, 25515, 7378, 25390, 6336, 25408, 9024, 25408, 6858, 7244, 24507, 10309, 24507, 6972, 24507, 9285, 24507, 6972, 24507, 10309, 24507, 6485, 26432, 6463, 26432, 6968, 25408, 7487, 25408, 6968, 26432, 6463, 26432, 7241, 7371, 24619, 8405, 24619, 9813, 24619, 8405, 24619, 6101, 27200, 5675, 25536, 9024, 25536, 6986, 7115, 25526, 23605, 8277, 25526, 7370, 26560, 24762, 24390, 6572, 26304, 6463, 26560, 24774, 24378, 7370, 6982, 24642, 24770, 24769, 24896, 24767, 24766, 24764, 24626, 7378, 24898, 24896, 24894, 9406, 24642, 24514, 24513, 24384, 24511, 24510, 24508, 24626, 9170, 24386, 24384, 24382, 7598, 25536, 7498, 8011, 24619, 8405, 24619, 7888, 24255, 24511, 24510, 24637, 24766, 24767, 25023, 25280, 25025, 24769, 24770, 24643, 24514, 24513, 24257, 24000, 8256, 24383, 24511, 24510, 24637, 24766, 24767, 24895, 8896, 24897, 24769, 24770, 24643, 24514, 24513, 24385, 7493, 25536, 7339, 25536, 7626, 8139, 24619, 8405, 24619, 6990, 24769, 24895, 24764, 24766, 24767, 24895, 7369, 24767, 24764, 24766, 24767, 25023, 25024, 25025, 24769, 24770, 24772, 24769, 7351, 24897, 24769, 24770, 24772, 24897, 24767, 6599, 25536, 7339, 25536, 7754, 7097, 24765, 25152, 24388, 24388, 24515, 24644, 24771, 24898, 25025, 25152, 25023, 24894, 24765, 24636, 24509, 24380, 24380, 25152, 24771, 6593, 24515, 24516, 24644, 24771, 24898, 24897, 8768, 24895, 24894, 24765, 24636, 24508, 24509, 6717, 25024, 9280, 25024, 7241, 8004, 24255, 24382, 24510, 24509, 24637, 24766, 25023, 24896, 24897, 25027, 24899, 24900, 24771, 7104, 24383, 24382, 24510, 24509, 24637, 24766, 24895, 8654, 24896, 24895, 24766, 24888, 24766, 24767, 7374, 24767, 24766, 24888, 24766, 24895, 24768, 7114, 8395, 24255, 24382, 24380, 24509, 24508, 24506, 24504, 9692, 24383, 24382, 24380, 24509, 24508, 24506, 24504, 9564, 24896, 24895, 24767, 24637, 24510, 24511, 24255, 24128, 9033, 24894, 24637, 24510, 24511, 24383, 7744, 25151, 24894, 24766, 24637, 24510, 24511, 24255, 24384, 24385, 24513, 24515, 8775, 25023, 24894, 24766, 24637, 24510, 24511, 24383, 8010, 6849, 24898, 24897, 24896, 24895, 24767, 24765, 24636, 24508, 24248, 7635, 24897, 25152, 24895, 9282, 24509, 24510, 23993, 24251, 24380, 9685, 24509, 24510, 24121, 7880, 8387, 24385, 24384, 24255, 24381, 24509, 24637, 24766, 24767, 24895, 24896, 25025, 24899, 24771, 24643, 24514, 24133, 24514, 24642, 24769, 24896, 24895, 24894, 7355, 24383, 24381, 24509, 24636, 24766, 8767, 24897, 24899, 24771, 24644, 24514, 24387, 24514, 24642, 24769, 24896, 25022, 7095, 8515, 24385, 24256, 24255, 24382, 24509, 24637, 24765, 24767, 25023, 25024, 24897, 7757, 24383, 24382, 24509, 24637, 24765, 24767, 24895, 7751, 25664, 7363, 8139, 24383, 24511, 24639, 24767, 25023, 25280, 24641, 24255, 24126, 24254, 24253, 24509, 24638, 24766, 25022, 25022, 24766, 24638, 24511, 24384, 24513, 8917, 24125, 24253, 24509, 24638, 24766, 24894, 8138, 6848, 24770, 24898, 25024, 24767, 24638, 24508, 24377, 8398, 24767, 24638, 24508, 24377, 8647, 24900, 24898, 24897, 24896, 24895, 24767, 24637, 24507, 24245, 8405, 24894, 24637, 24507, 24245, 7889, 8139, 24255, 24381, 24510, 24509, 24507, 24636, 24766, 24895, 24896, 25025, 24899, 24770, 24771, 24773, 24644, 24514, 24385, 24384, 8256, 24383, 24381, 24510, 24509, 24507, 24636, 24766, 24767, 8512, 24897, 24899, 24770, 24771, 24773, 24644, 24514, 24513, 7222, 25792, 7359, 7492, 24377, 24508, 24638, 24767, 25024, 24898, 24770, 7882, 24377, 24508, 24638, 24767, 7626, 7492, 24114, 8910, 24114, 9934, 24767, 24768, 24513, 24384, 24383, 24124, 24383, 24384, 8512, 24895, 24890, 24767, 7624, 24767, 24890, 24767, 24896, 24897, 24899, 7110, 7115, 24896, 24895, 24767, 24766, 25394, 24766, 24767, 6741, 24894, 24766, 25394, 24766, 24895, 24768, 7246, 23602, 9294, 23730, 8906, 7620, 23851, 9173, 23851, 8914, 24506, 24637, 24894, 24896, 24897, 24898, 24899, 8520, 24245, 24638, 24767, 25024, 24898, 24770, 7882, 24245, 24638, 24767, 7498, 7492, 24370, 8654, 24506, 24507, 24509, 9934, 24508, 24380, 8776, 24509, 24510, 24381, 24382, 24254, 24383, 24255, 8142, 25152, 8380, 8139, 24383, 24511, 24639, 24767, 25023, 25024, 7872, 24127, 24383, 24510, 24638, 24894, 25023, 25024, 8137, 24255, 24383, 24510, 24638, 24894, 24895, 8256, 24127, 24383, 24510, 24638, 24894, 25278, 24767, 24638, 24383, 24384, 8654, 24255, 24383, 24510, 24638, 24894, 25150, 7629, 7876, 24255, 24381, 24509, 24637, 24766, 24767, 24895, 24896, 25025, 24899, 24771, 24643, 24514, 24513, 24385, 24384, 8256, 24383, 24381, 24509, 24636, 24766, 8767, 24897, 24899, 24771, 24644, 24514, 7357, 7875, 24115, 8781, 24243, 9421, 24627, 8269, 24755, 6475, 24898, 25025, 26304, 5949, 24897, 25025, 26304, 6973, 7227, 24765, 24767, 24895, 24896, 25025, 24899, 24771, 24643, 24514, 24513, 24385, 24384, 24255, 24381, 24509, 24114, 9543, 24897, 24899, 24771, 24644, 24514, 7745, 24383, 24381, 24509, 24114, 9041, 9156, 23360, 24255, 24381, 24509, 24637, 24766, 24767, 24895, 24896, 25025, 24899, 24771, 24643, 24514, 24513, 24385, 8000, 24383, 24381, 24509, 24636, 24766, 8767, 24897, 24899, 24771, 24644, 24514, 8256, 25408, 6973, 8131, 24243, 8653, 24371, 7371, 24898, 25025, 26048, 6205, 24897, 25025, 26048, 6973, 6848, 24770, 24898, 25024, 24767, 24638, 24378, 24637, 24894, 8014, 24767, 24638, 24378, 24637, 24767, 24895, 24768, 25025, 24898, 24899, 24771, 24643, 24514, 24511, 24767, 24765, 8125, 24774, 7102, 8523, 23844, 9180, 23588, 8661, 24127, 24382, 24509, 24637, 24766, 24894, 25023, 25024, 25153, 24898, 24771, 24643, 24514, 24386, 24257, 24256, 8256, 24255, 24382, 24509, 24637, 24766, 24894, 24895, 8640, 25025, 24898, 24771, 24643, 24514, 24386, 24385, 7868, 6980, 24896, 24895, 24766, 25265, 24766, 24767, 6997, 24767, 24766, 25265, 24766, 24895, 24896, 8405, 24510, 24381, 23349, 24381, 24510, 8913, 8651, 23844, 9180, 23588, 7377, 24770, 24898, 25024, 24767, 24638, 24507, 24637, 24894, 25024, 24897, 25027, 24899, 6598, 24767, 24638, 24507, 24637, 24766, 24895, 25024, 24897, 24898, 24899, 24770, 24902, 6972, 7232, 24898, 25025, 24513, 24383, 24381, 24509, 24637, 24765, 24767, 24896, 24897, 24899, 24771, 7101, 24766, 24767, 24896, 24897, 24898, 8259, 24637, 24765, 24767, 24896, 24897, 24899, 24771, 24643, 24515, 24513, 24511, 24895, 24766, 7098, 24766, 24767, 24896, 24897, 24898, 7238, 7883, 24255, 24381, 24507, 24637, 24763, 24893, 25023, 24896, 25025, 24899, 24773, 24643, 24517, 24387, 24257, 24384, 8256, 24383, 24511, 24510, 24507, 24637, 24763, 24766, 24767, 24895, 8512, 24897, 24769, 24770, 24773, 24643, 24517, 24514, 24513, 24385, 7861, 7495, 24897, 25027, 24619, 8148, 24620, 7744, 25792, 7370, 7239, 24767, 24511, 24513, 24641, 24770, 24769, 25025, 25152, 25023, 24767, 24766, 24638, 24510, 24254, 23998, 24383, 24382, 24509, 24637, 9429, 24895, 24767, 24766, 24638, 24510, 24254, 24126, 7609, 24769, 24896, 25278, 25024, 24897, 24769, 6848, 25277, 25152, 24769, 24770, 24642, 7109, 7239, 24767, 24511, 24513, 24641, 24770, 24769, 25025, 25152, 25023, 24766, 24637, 24510, 24255, 24256, 8649, 24895, 24766, 24637, 24510, 24383, 8256, 24895, 24894, 24766, 24637, 24510, 24511, 24255, 24128, 24257, 24513, 24514, 24641, 24769, 24767, 24511, 9670, 24765, 24637, 24510, 24511, 24383, 7754, 8265, 24621, 8405, 24619, 8277, 23217, 26688, 7098, 25536, 7242, 7371, 24374, 8256, 24898, 25025, 25024, 25023, 24894, 24765, 24638, 24509, 24382, 24255, 24256, 24257, 24513, 24514, 24641, 24769, 24767, 24511, 9162, 24895, 24894, 24765, 24638, 24509, 24382, 24383, 7509, 25920, 6975, 25280, 25281, 7349, 8648, 24511, 24767, 24769, 24641, 24514, 24385, 24256, 24255, 24382, 24510, 24508, 24634, 24765, 24894, 25023, 24896, 25025, 24898, 24771, 24641, 24515, 24386, 24257, 24512, 24255, 24382, 24509, 9038, 24383, 24382, 24510, 24508, 24634, 24765, 24894, 24895, 8512, 24897, 24898, 24771, 24641, 24515, 24386, 24385, 7869, 7115, 24634, 8258, 24770, 24898, 24896, 25277, 24896, 24769, 24770, 6590, 24897, 24896, 25278, 8771, 24637, 24509, 24123, 24510, 24509, 24635, 9039, 23995, 24510, 24509, 24635, 8138, 7755, 24255, 24510, 24637, 24766, 25023, 25152, 25025, 24770, 24643, 24514, 24257, 24128, 8256, 24383, 24510, 24637, 24766, 24895, 8768, 24897, 24770, 24643, 24514, 24385, 7735, 24255, 24511, 24510, 24636, 24766, 24767, 25023, 25152, 25025, 24769, 24770, 24644, 24514, 24513, 24257, 7744, 24383, 24511, 24510, 24636, 24766, 24767, 24895, 8768, 24897, 24769, 24770, 24644, 24514, 24513, 24385, 7742, 8772, 24509, 24382, 24255, 24512, 24257, 24386, 24515, 24641, 24771, 24898, 25025, 24896, 25023, 24894, 24765, 24634, 24508, 24510, 24382, 24255, 24256, 24385, 24514, 24641, 24769, 24767, 24511, 8773, 24385, 24386, 24515, 24641, 24771, 24898, 24897, 8512, 24895, 24894, 24765, 24634, 24508, 24510, 24382, 24383, 8010, 7352, 24511, 24767, 24769, 24513, 7368, 7350, 24513, 24769, 24767, 24638, 24510, 24511, 7502, 7364, 24511, 24767, 24769, 24513, 8244, 24511, 24767, 24769, 24513, 7368, 7364, 24511, 24767, 24769, 24513, 8242, 24513, 24769, 24767, 24638, 24510, 24511, 7502, 7371, 24510, 24756, 24780, 24514, 8254, 24634, 8245, 24511, 24767, 24769, 24513, 7368, 7239, 24767, 24511, 24513, 24641, 24770, 24769, 24897, 25024, 25023, 24767, 24766, 24638, 24510, 24511, 24126, 24637, 8398, 24895, 24767, 24766, 24638, 24510, 24382, 7991, 24511, 24767, 24769, 24513, 7880, 7243, 24505, 8519, 24377, 7356, 7243, 24505, 8519, 24377, 9415, 24505, 8519, 24377, 7356, 7499, 24383, 24510, 24638, 24766, 24895, 24896, 24897, 24770, 24642, 24514, 24385, 24384, 7733, 9295, 22304, 9297, 8143, 24382, 24381, 24380, 24507, 24636, 24763, 24892, 24893, 24894, 8030, 24380, 24509, 24507, 24636, 24763, 24765, 24892, 7375, 7119, 24894, 24893, 24892, 24763, 24636, 24507, 24380, 24381, 24382, 8542, 24892, 24765, 24763, 24636, 24507, 24509, 24380, 7887, 7247, 24608, 8416, 24608, 8160, 25536, 7328, 25536, 7121, 7887, 24608, 8416, 24608, 7392, 25536, 7328, 25536, 7249, 7887, 24253, 24509, 24638, 24765, 25021, 8012, 24509, 24636, 24765, 8510, 24254, 25022, 8256, 24253, 24509, 24638, 24765, 25021, 8012, 24509, 24636, 24765, 7631, 7375, 25021, 24765, 24638, 24509, 24253, 8524, 24765, 24636, 24509, 7998, 25022, 24254, 8256, 25021, 24765, 24638, 24509, 24253, 8524, 24765, 24636, 24509, 7631, 8015, 23728, 25520, 7249, 7247, 25520, 23728, 8017, 7247, 24608, 7249, 7231, 26944, 7233, 8392, 24622, 7113, 26944, 7233, 8263, 24623, 7241, 26688, 6199, 26688, 7242, 7238, 26418, 8270, 22834, 9032, 8392, 24511, 24767, 24769, 24513, 7095, 26944, 7097, 24511, 24767, 24769, 24513, 8392, 7234, 26944, 5946, 26944, 7236, 9288, 22830, 8012, 26944, 5946, 26944, 7236, 9288, 22583, 26679, 7242, 7240, 26679, 22583, 9290, 9291, 22585, 26681, 6206, 26688, 6203, 26688, 7242, 7243, 26681, 22585, 8254, 26688, 6203, 26688, 7242, 9402, 24384, 24385, 24386, 24260, 24513, 24385, 24384, 24383, 24510, 24638, 24766, 24895, 24896, 24897, 24769, 25028, 24898, 24897, 24896, 7228, 9287, 23744, 24127, 24383, 24382, 24509, 24638, 24765, 24894, 24895, 25151, 25536, 7241, 7239, 24633, 24764, 24766, 24894, 25023, 24896, 25025, 24898, 24770, 24772, 24647, 7225, 7239, 25536, 25151, 24895, 24894, 24765, 24638, 24509, 24382, 24383, 24127, 23744, 9289, 7223, 24647, 24772, 24770, 24898, 25025, 24896, 25023, 24894, 24766, 24764, 24633, 7241, 9287, 23744, 24127, 24383, 24382, 24509, 24638, 24765, 24894, 24895, 25151, 25536, 6216, 26176, 7745, 9153, 25022, 24254, 7879, 25275, 23995, 6725, 26816, 7361, 7493, 24899, 24893, 7357, 25285, 25275, 7621, 24623, 7754, 7617, 24254, 25022, 8647, 23995, 25275, 7621, 26816, 7233, 7481, 24893, 24899, 7363, 25275, 25285, 7628, 24623, 7753, 8639, 24515, 24513, 24385, 24384, 24255, 24381, 24509, 24637, 24766, 24767, 24895, 24896, 25025, 24898, 24771, 24773, 24645, 24515, 24513, 24385, 24256, 24383, 24511, 24639, 24768, 24641, 8507, 24383, 24381, 24509, 24636, 24766, 8767, 24897, 24898, 24771, 24773, 24645, 24515, 24386, 7605, 6987, 25643, 7381, 25517, 9299, 23595, 7253, 26688, 6335, 26432, 7094, 9422, 24511, 24767, 24769, 24641, 24513, 24384, 24383, 24382, 24510, 24509, 24508, 24372, 24508, 24510, 9308, 24510, 24508, 24372, 24508, 24509, 24510, 24382, 24383, 24384, 24513, 24641, 24769, 24767, 24511, 9424, 9422, 24511, 24767, 24769, 24641, 24513, 24384, 24383, 24382, 24510, 24509, 24508, 24372, 24508, 24510, 9308, 24510, 24508, 24372, 24508, 24509, 24510, 24382, 24383, 24384, 24513, 24641, 24769, 24767, 24511, 9302, 24255, 24382, 24509, 24638, 24765, 24894, 25023, 24896, 25025, 24898, 24771, 24642, 24515, 24386, 24257, 24384, 8378, 9534, 24510, 24383, 24384, 24385, 24513, 24260, 24513, 24385, 24384, 24383, 24510, 24638, 24766, 24895, 24896, 24897, 24769, 25028, 24769, 24897, 24896, 24895, 24766, 24638, 7106, 9419, 22315, 8917, 24894, 24638, 24510, 24383, 24384, 24386, 24642, 24770, 24897, 24896, 24895, 25023, 25024, 25025, 24897, 7730, 24383, 24510, 24638, 24894, 24896, 24897, 24770, 24642, 24386, 24384, 7619, 9411, 24511, 24767, 24769, 24641, 24513, 24512, 24511, 24510, 24379, 24381, 24382, 24383, 24256, 24257, 24514, 24643, 24770, 25412, 24898, 24770, 24642, 24514, 24385, 24383, 24510, 24638, 24765, 24893, 25273, 24894, 25023, 24768, 24769, 24641, 6334, 24385, 24514, 24643, 24770, 24898, 8262, 24766, 25653, 24894, 24895, 7370, 9027, 24514, 24385, 24256, 24383, 24511, 24509, 24637, 24766, 24895, 25024, 24897, 24770, 7624, 24382, 24509, 24637, 24766, 24767, 9163, 24504, 24638, 24895, 24896, 24898, 24771, 24642, 24515, 24514, 24386, 24385, 24257, 24256, 24255, 24383, 24382, 24510, 24509, 24637, 24765, 24766, 24894, 24895, 25023, 25024, 25025, 24897, 24769, 8013, 24504, 24638, 24767, 7749, 7759, 24611, 8797, 24611, 8790, 24511, 24767, 24769, 24641, 24386, 24257, 24128, 24255, 24382, 24638, 24766, 24767, 24895, 25406, 24895, 24894, 6473, 24894, 24895, 25406, 24895, 24767, 24766, 24636, 24382, 24255, 24128, 24257, 24386, 24641, 24769, 24767, 24511, 8775, 8139, 23716, 9948, 23716, 7505, 26432, 6330, 26432, 7238, 8136, 24511, 24767, 24769, 24641, 24514, 24385, 24384, 24383, 24510, 24638, 24766, 24894, 25277, 7365, 25277, 24894, 24766, 24638, 24510, 24382, 7756, 24382, 24510, 24638, 24766, 24894, 25277, 7365, 25277, 24894, 24766, 24638, 24510, 24383, 24384, 24385, 24514, 24641, 24769, 24767, 24511, 8142, 7755, 24510, 24766, 24770, 24514, 8256, 24612, 8273, 24509, 24754, 24782, 24515, 7492, 24895, 24897, 24385, 24383, 8256, 26176, 7744, 24895, 24897, 24385, 24383, 7484, 7755, 24510, 24766, 24770, 24514, 8256, 24626, 8260, 24510, 24892, 24510, 24514, 24900, 24514, 8252, 24626, 8260, 24510, 24766, 24770, 24514, 7505, 24895, 24897, 24385, 24383, 8256, 26176, 7744, 24895, 24897, 24385, 24383, 7218, 24895, 24897, 24385, 24383, 8256, 26176, 7744, 24895, 24897, 24385, 24383, 7498, 8651, 24619, 6613, 26304, 7222, 25664, 6581, 26304, 7242, 7622, 25394, 8270, 23858, 7754, 26426, 8262, 22842, 8900, 7232, 6720, 6208, 5696, 5184, 4672, 4160, 3648, 3136, 5196, 5172, 5192, 5176, 5188, 5180, 7232, 26688, 7240, 24624, 8264, 7224, 26704, 6208, 26672, 7240, 8248, 25672, 23624, 23608, 25656, 8264, 7224, 26688, 24656, 22592, 24624, 9288, 7232, 25152, 25156, 8260, 24636, 25148, 8768, 24128, 24124, 8252, 24644, 24132, 8768, 7224, 25156, 24648, 7748, 25148, 25664, 8772, 24124, 24632, 8764, 24132, 23616, 8772, 7232, 26688, 7240, 24624, 8768, 23616, 7748, 24648, 8772, 25664, 8764, 24632, 7236, 7224, 26704, 6208, 26672, 8260, 24124, 7232, 24132, 8264, 25156, 9280, 25148, 7228, 7744, 24128, 8264, 25148, 8768, 24644, 9280, 24124, 8252, 25152, 8248, 24132, 7744, 24636, 7232, 25156, 8772, 7228, 24648, 25156, 25664, 25148, 24632, 24124, 23616, 24132, 9284, 8644, 24511, 24767, 24769, 24641, 24386, 24385, 24256, 24255, 24382, 24509, 24638, 24765, 24894, 25023, 24896, 25025, 24898, 7371, 24383, 24382, 24509, 24638, 24765, 24894, 24895, 8401, 24620, 7882, 7234, 26944, 24636, 7234, 6964, 26944, 6988, 7235, 24770, 24897, 24896, 25023, 24895, 25023, 24896, 24897, 24770, 5945, 26944, 5948, 26944, 7237, 7237, 24767, 24511, 24513, 24641, 24770, 24769, 24897, 25024, 25023, 24767, 24766, 24638, 24510, 24511, 24126, 8395, 24895, 24767, 24766, 24638, 24510, 24382, 8013, 24510, 24753, 24783, 24514, 8254, 24632, 8246, 24511, 24767, 24769, 24513, 7880, 7745, 24254, 25022, 8647, 23995, 25275, 7621, 26944, 7621, 25275, 23995, 8647, 25022, 24254, 7747, 9287, 23744, 24127, 24383, 24382, 24509, 24638, 24765, 24894, 24895, 25151, 25536, 6216, 26176, 8138, 23980, 8523, 6987, 25515, 25557, 6714, 25920, 7227, 9287, 23232, 24383, 24382, 24510, 24638, 24766, 24894, 24895, 26048, 6204, 26688, 7241, 7239, 26048, 24895, 24894, 24766, 24638, 24510, 24382, 24383, 23232, 8252, 26688, 7241, 7879, 24255, 24382, 24509, 24638, 24765, 24894, 25023, 24896, 25025, 24898, 24771, 24642, 24515, 24386, 24257, 24384, 8382, 24630, 7621, 25920, 7360, 7879, 24255, 24382, 24509, 24638, 24765, 24894, 25023, 24896, 25025, 24898, 24771, 24642, 24515, 24386, 24257, 24384, 8893, 23608, 8264, 25656, 7492, 7499, 24619, 8405, 24619, 8267, 24898, 25025, 24896, 25023, 24766, 24629, 7758, 24895, 24766, 24629, 6485, 25152, 7723, 25536, 8768, 25536, 7636, 22840, 9406, 7115, 24896, 24895, 24767, 24766, 25394, 24766, 24767, 6741, 24894, 24766, 25394, 24766, 24895, 24768, 7246, 23602, 9294, 23730, 9556, 23351, 8895, 7108, 25152, 25396, 7372, 25522, 25819, 6703, 6704, 27456, 6736, 6737, 27456, 6703, 6991, 26912, 6993 }; /* System generated locals */ integer i__1, i__2; /* Local variables */ static integer ioff, istr; static real xcur, ycur, scale; static integer is; #define nstrok ((integer *)&equiv_38) static integer ich, inc; #define ns01 ((integer *)&equiv_38) #define ns02 ((integer *)&equiv_38 + 100) #define ns03 ((integer *)&equiv_38 + 200) #define ns04 ((integer *)&equiv_38 + 300) #define ns05 ((integer *)&equiv_38 + 400) #define ns06 ((integer *)&equiv_38 + 500) #define ns07 ((integer *)&equiv_38 + 600) #define ns08 ((integer *)&equiv_38 + 700) #define ns09 ((integer *)&equiv_38 + 800) #define ns10 ((integer *)&equiv_38 + 900) #define ns11 ((integer *)&equiv_38 + 1000) #define ns12 ((integer *)&equiv_38 + 1100) #define ns13 ((integer *)&equiv_38 + 1200) #define ns14 ((integer *)&equiv_38 + 1300) #define ns15 ((integer *)&equiv_38 + 1400) #define ns16 ((integer *)&equiv_38 + 1500) static integer kst; #define ns17 ((integer *)&equiv_38 + 1600) #define ns18 ((integer *)&equiv_38 + 1700) #define ns19 ((integer *)&equiv_38 + 1800) #define ns20 ((integer *)&equiv_38 + 1900) #define ns21 ((integer *)&equiv_38 + 2000) #define ns22 ((integer *)&equiv_38 + 2100) #define ns23 ((integer *)&equiv_38 + 2200) #define ns24 ((integer *)&equiv_38 + 2300) #define ns25 ((integer *)&equiv_38 + 2400) #define ns26 ((integer *)&equiv_38 + 2500) #define ns27 ((integer *)&equiv_38 + 2600) #define ns28 ((integer *)&equiv_38 + 2700) #define ns29 ((integer *)&equiv_38 + 2800) #define ns30 ((integer *)&equiv_38 + 2900) #define ns31 ((integer *)&equiv_38 + 3000) #define ns32 ((integer *)&equiv_38 + 3100) #define ns33 ((integer *)&equiv_38 + 3200) #define ns34 ((integer *)&equiv_38 + 3300) #define ns35 ((integer *)&equiv_38 + 3400) #define ns36 ((integer *)&equiv_38 + 3500) #define ns37 ((integer *)&equiv_38 + 3600) #define ns38 ((integer *)&equiv_38 + 3700) #define ns39 ((integer *)&equiv_38 + 3800) /* Convert a string of generalized characters into a set of strokes, */ /* normalized to character size = 1. The stroke tables are taken */ /* from the C source code to the program "axis". */ /* ..................................................................... */ /* A list of the offsets of the start of the stroke data for each */ /* character. 0 means a control character */ /* Parameter adjustments */ --lstr; --ystr; --xstr; /* Function Body */ /* ..................................................................... */ /* List of the number of strokes in each character. */ /* For control characters, the entry is the switch index. */ /* ..................................................................... */ /* List of the strokes, stored in the format */ /* 16384*blanking + 128*(DX+64) + (DY+64) */ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ *nstr = 0; xcur = 0.f; ycur = 0.f; scale = .051f; i__1 = *nch; for (inc = 1; inc <= i__1; ++inc) { /* Load the offset into the stroke table and the number of strokes */ ich = *(unsigned char *)&ch[inc - 1]; if (ich <= 0) { ich += 256; } ioff = noff[ich]; istr = numstr[ich]; /* ................................................................... .. */ /* If the offset is 0, this is a control character, so treat it */ /* specially -- ISTR is the control code in this case: */ /* 1 = start superscript */ /* 2 = end superscript */ /* 3 = start subscript */ /* 4 = end subscript */ /* 5,6,7,8,9,10,11 = change color */ if (ioff <= 0) { if (istr == 1) { xcur -= scale * 2.666667f; ycur += scale * 12.f; scale *= .6666667f; } else if (istr == 2) { scale *= 1.5f; xcur += scale * 4.f; ycur -= scale * 12.f; } else if (istr == 3) { xcur -= scale * 2.666667f; ycur -= scale * 12.f; scale *= .6666667f; } else if (istr == 4) { scale *= 1.5f; xcur += scale * 4.f; ycur += scale * 12.f; } else if (istr >= 5 && istr <= 11) { ++(*nstr); lstr[*nstr] = istr + 96; xstr[*nstr] = xcur; ystr[*nstr] = ycur; } /* ............................................................... ...... */ /* Check if this is a newline character */ } else if (ich == 10) { xcur = 0.f; ycur += -1.1f; /* ............................................................... ...... */ /* Otherwise, this is a real character with real strokes */ } else { i__2 = istr - 1; for (is = 0; is <= i__2; ++is) { ++(*nstr); kst = nstrok[ioff + is - 1]; lstr[*nstr] = 0; if (kst >= 16384) { lstr[*nstr] = 1; kst += -16384; } xcur += scale * (real) (kst / 128 - 64); ycur += scale * (real) (kst % 128 - 64); if (is == istr - 1) { xcur += scale * 24.f; } xstr[*nstr] = xcur; ystr[*nstr] = ycur; /* L500: */ } } /* L900: */ } return 0; } /* zzstro_ */ #undef ns39 #undef ns38 #undef ns37 #undef ns36 #undef ns35 #undef ns34 #undef ns33 #undef ns32 #undef ns31 #undef ns30 #undef ns29 #undef ns28 #undef ns27 #undef ns26 #undef ns25 #undef ns24 #undef ns23 #undef ns22 #undef ns21 #undef ns20 #undef ns19 #undef ns18 #undef ns17 #undef ns16 #undef ns15 #undef ns14 #undef ns13 #undef ns12 #undef ns11 #undef ns10 #undef ns09 #undef ns08 #undef ns07 #undef ns06 #undef ns05 #undef ns04 #undef ns03 #undef ns02 #undef ns01 #undef nstrok /* Subroutine */ int zzconv_(char *chin, integer *nchin, char *chout, integer *nchout, ftnlen chin_len, ftnlen chout_len) { /* Initialized data */ static char chesc[15] = "\\esc "; static char chnesc[15] = "\\noesc "; static char chtex[15*113] = "\\Plus " "\\Cross " "\\Dia" "mond " "\\Box " "\\FDiamond " "\\FBox " " " "\\FPlus " "\\FCross " "\\Burst " "\\Octagon " "\\alpha " "\\beta " "\\gamm" "a " "\\delta " "\\epsilon " "\\zeta " " " "\\eta " "\\theta " "\\iota " "\\kappa " "\\lambda " "\\mu " "\\nu " " " "\\xi " "\\omicron " "\\pi " " " "\\rho " "\\sigma " "\\tau " "\\upsilon " "\\phi " "\\chi " "\\psi " " " "\\omega " "\\Alpha " "\\Beta " " " "\\Gamma " "\\Delta " "\\Epsilon " "\\Zeta " "\\Eta " "\\Theta " "\\Iota" " " "\\Kappa " "\\Lambda " "\\Mu " " " "\\Nu " "\\Xi " "\\Omicron " "\\Pi " "\\Rho " "\\Sigma " "\\Tau " " " "\\Upsilon " "\\Phi " "\\Chi " " " "\\Psi " "\\Omega " "\\propto " "\\int " "\\times " "\\div " "\\appr" "ox " "\\partial " "\\cap " "\\? " " " "\\langle " "\\rangle " "\\ddagger " "\\pm " "\\leq " "\\S " "\\hbar" " " "\\lambar " "\\cup " "\\degree " " " "\\nabla " "\\downarrow " "\\leftarrow " "\\rightarrow " "\\leftrightarrow" "\\oint " "\\in " " " "\\notin " "\\surd " "\\_ " " " "\\bar " "\\exists " "\\geq " "\\forall " "\\subset " "\\oplus " "\\otim" "es " "\\dagger " "\\neq " "\\supset " " " "\\infty " "\\uparrow " "\\# " "\\$ " "\\% " "\\& " "\\{ " " " "\\} " "\\\\ " "\\cents " " " "\\black " "\\red " "\\blue " "\\green " "\\yellow " "\\magenta " "\\cyan" " "; static integer ichext[113] = { 176,177,178,179,180,181,182,183,184,185, 225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240, 241,242,243,244,245,246,247,248,193,194,195,196,197,198,199,200, 201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216, 128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143, 160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175, 186,187,188,189,190,191,255,96,35,36,37,38,123,125,92,94,148,149, 150,151,152,153,154 }; /* System generated locals */ integer i__1; /* Builtin functions */ integer s_cmp(char *, char *, ftnlen, ftnlen); /* Subroutine */ int s_copy(char *, char *, ftnlen, ftnlen); /* Local variables */ static logical lesc; static integer itop; static logical lout; static integer i__, nused, nsupb; static char chcont[15]; static integer ntsupb[10], inc; /* Convert input string (using TeX-like escapes) to extended character */ /* set, for plotting with ZZSTRO. */ /* ....................................................................... */ /* super/subscript control characters */ /* ....................................................................... */ /* INC = input character being scanned */ /* NUSED = no. of input characters consumed by this operation */ /* NSUPB = super/subscript level */ /* NTSUPB = super/subscript type at each level: */ /* 1 = single character superscript -- like a^b */ /* 2 = multi-character superscript -- like a^{b+c} */ /* -1,-2 = similar for subscripts */ /* LOUT = .TRUE. if we just output something to CHOUT, */ /* otherwise .FALSE. */ /* Table of Tex-like escapes */ /* Corresponding extended character set bytes */ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ /* Test if a character is alphabetic */ /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ *nchout = 0; nsupb = 0; inc = 1; /* ----------------------------------------------------------------------- */ /* Process input character no. INC */ lesc = TRUE_; L100: /* CC WRITE(*,666) 'ZZCONV at: ' // CHIN(INC:INC) */ /* CC666 FORMAT(A) */ lout = FALSE_; /* Superscript: ^{ starts a multi-character superscript, otherwise */ /* ^ starts a single-character superscript */ if (lesc && *(unsigned char *)&chin[inc - 1] == '^' && inc < *nchin) { ++nsupb; i__1 = inc; if (s_cmp(chin + i__1, "{", inc + 1 - i__1, 1L) == 0) { ntsupb[nsupb - 1] = 2; nused = 2; } else { ntsupb[nsupb - 1] = 1; nused = 1; } ++(*nchout); *(unsigned char *)&chout[*nchout - 1] = 144; /* CC WRITE(*,666) ' start superscript' */ /* ................................................................... .... */ /* Subscript: similar to above code */ } else if (lesc && *(unsigned char *)&chin[inc - 1] == '_' && inc < * nchin) { ++nsupb; i__1 = inc; if (s_cmp(chin + i__1, "{", inc + 1 - i__1, 1L) == 0) { ntsupb[nsupb - 1] = -2; nused = 2; } else { ntsupb[nsupb - 1] = -1; nused = 1; } ++(*nchout); *(unsigned char *)&chout[*nchout - 1] = 146; /* CC WRITE(*,666) ' start subscript' */ /* ................................................................... .... */ /* If in super/subscript mode and we have a '}', then this terminates */ /* the current level of super/subscripts */ } else if (lesc && *(unsigned char *)&chin[inc - 1] == '}' && nsupb > 0) { nused = 1; ++(*nchout); if (ntsupb[nsupb - 1] > 0) { *(unsigned char *)&chout[*nchout - 1] = 145; } else { *(unsigned char *)&chout[*nchout - 1] = 147; } --nsupb; /* CC WRITE(*,666) ' end compound super/subscript' */ /* ................................................................... .... */ /* Anything else that doesn't start with a \ is passed straight throu gh */ } else if (! lesc || *(unsigned char *)&chin[inc - 1] != '\\') { lout = TRUE_; nused = 1; ++(*nchout); *(unsigned char *)&chout[*nchout - 1] = *(unsigned char *)&chin[inc - 1]; /* CC WRITE(*,666) ' passthru' */ /* ................................................................... .... */ /* If it started with a \ but we are at the last character, quit */ } else if (inc == *nchin) { /* CC WRITE(*,666) ' end of input' */ goto L8000; /* ................................................................... .... */ /* TeX-like escapes -- there are 2 possibilities: */ /* 1) \asciistring */ /* 2) \specialcharacter */ } else { itop = inc + 1; /* If the next character is alphabetic, then scan until end-of-input */ /* or a non-alphabetic character is found. This will be the end */ /* of the escape sequence. */ i__1 = *(unsigned char *)&chin[itop - 1]; if (i__1 >= 'A' && i__1 <= 'Z' || i__1 >= 'a' && i__1 <= 'z') { L200: ++itop; if (itop > *nchin) { goto L300; } i__1 = *(unsigned char *)&chin[itop - 1]; if (i__1 >= 'A' && i__1 <= 'Z' || i__1 >= 'a' && i__1 <= 'z') { goto L200; } L300: --itop; /* If the character following the \asciistring is a blank, skip i t also */ if (itop < *nchin) { i__1 = itop; if (s_cmp(chin + i__1, " ", itop + 1 - i__1, 1L) == 0) { ++itop; } } } /* At this point, characters INC thru ITOP are the escape sequence. */ /* Check for a match with the table. */ nused = itop - inc + 1; s_copy(chcont, chin + (inc - 1), 15L, itop - (inc - 1)); for (i__ = 1; i__ <= 113; ++i__) { if (s_cmp(chcont, chtex + (i__ - 1) * 15, 15L, 15L) == 0) { goto L410; } /* L400: */ } i__ = 0; L410: /* If a match, enter the control character into the output; */ /* if no match, just ignore it */ if (i__ > 0) { lout = TRUE_; ++(*nchout); *(unsigned char *)&chout[*nchout - 1] = (char) ichext[i__ - 1]; /* CC WRITE(*,666) ' TeX escape: ' // CHCONT */ /* CC ELSE */ /* CC WRITE(*,666) ' unknown TeX escape: ' // CHCONT */ } else if (s_cmp(chcont, chnesc, 15L, 15L) == 0) { lesc = FALSE_; } else if (s_cmp(chcont, chesc, 15L, 15L) == 0) { lesc = TRUE_; } } /* ....................................................................... */ /* If we are in single-character super/subscript mode, we must drop */ /* out of it after outputting something */ if (lout && nsupb > 0) { if (ntsupb[nsupb - 1] == 1) { --nsupb; ++(*nchout); *(unsigned char *)&chout[*nchout - 1] = 145; /* CC WRITE(*,666) ' end single-character superscript' */ } else if (ntsupb[nsupb - 1] == -1) { --nsupb; ++(*nchout); *(unsigned char *)&chout[*nchout - 1] = 147; /* CC WRITE(*,666) ' end single-character subscript' */ } } /* "Use up" the appropriate number of characters, and go on to */ /* the next bunch */ inc += nused; if (inc <= *nchin) { goto L100; } /* ----------------------------------------------------------------------- */ L8000: return 0; } /* zzconv_ */