pls.parseopts(args, pls.PL_PARSE_FULL | pls.PL_PARSE_NOPROGRAM );
pls.parseopts(args, PLStream.PL_PARSE_FULL | PLStream.PL_PARSE_NOPROGRAM );
    public x23(String[] args)    {	double xmin[], xmax[], ymin[], ymax[], ycharacter_scale, yoffset;	double chardef[], charht[], deltax, deltay, x, y;	int i, j, page, length, slice;	String cmdString = null;	pls.parseopts(args, pls.PL_PARSE_FULL | pls.PL_PARSE_NOPROGRAM );	pls.init();    	for (page=0; page<11; page++) {	    pls.adv(0);	    // Set up viewport and window	    pls.vpor(0.02, 0.98, 0.02, 0.90);	    pls.wind(0.0, 1.0, 0.0, 1.0);	    xmin = new double[1];	    xmax = new double[1];	    ymin = new double[1];	    ymax = new double[1];	    pls.gspa(xmin, xmax, ymin, ymax);	    pls.schr(0., 0.8);	    ycharacter_scale = (1.0 - 0.0)/(ymax[0]-ymin[0]);	    // Factor should be 0.5, but heuristically it turns out to be larger.	    chardef = new double[1];	    charht = new double[1];	    pls.gchr(chardef, charht);	    yoffset = 1.0*charht[0]*ycharacter_scale;	    // Draw the grid using PLStream.box	    pls.col0(2);	    deltax = 1.0/((double)nxcells[page]);	    deltay = 1.0/((double)nycells[page]);	    pls.box("bcg", deltax, 0, "bcg", deltay, 0);	    pls.col0(15);	    length=hi[page]-lo[page];	    slice = 0;	    for (j=nycells[page]-1;j>=-1;j--) {		y = (0.5+j)*deltay;		for (i=0;i<nxcells[page];i++) {		    x  = (0.5+i)*deltax;		    if (slice < length) {			if (page == 0) {			    cmdString=Greek[slice];			}			else if ((page >= 1) && (page <= 3)) {			    cmdString="#["+Type1[offset[page]+slice]+"]";			}			else if (page >= 4) {			    cmdString="#[0x"+Integer.toHexString(lo[page]+slice)+"]";			}			pls.ptex(x,y+yoffset,1.,0.,0.5, cmdString);			pls.ptex(x,y-yoffset,1.,0.,0.5, "#"+cmdString);		    }		    slice += 1;		}	    }	    pls.schr(0., 1.0);	    // Page title	    pls.mtex("t", 1.5, 0.5, 0.5, title[page]);	}	// Restore defaults	pls.col0(1);	pls.end();    }