/* 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_ */
syntax highlighted by Code2HTML, v. 0.9.1