Sunteți pe pagina 1din 62

*******************************************************************************

* SOURCE CODE and DOCUMENTATION COPYRIGHT (C) 1987-89 KEVIN G. RHOADS AND THE*
* HIGH VOLTAGE RESEARCH LAB., L.E.E.S, Massachusetts Institute of Technology *
*******************************************************************************
*******************************************************************************
*
*
* This file is part of the GRAPHICS.LIB library, the other library components *
* are in files: PLOT.FOR, XGRAPH.FOR, MGRAPH.FOR & GRPRIM.FOR. This library *
* uses routines from the UTILS.LIB and ASMUTILS.LIB libraries and should be *
* listed before them at link time. In particular, routines used from outside *
* this library are primarily concentrated in SUTIL.FOR.
*
*-----------------------------------------------------------------------------*
$SEGMENT MULT_PLT
*compiler is directed to place object code in segment MULT_PLT
*
*-----------------------------------------------------------------------------*
$CHAREQU
*compiler is directed NOT to barf on CHARACTER and numeric data types mixed in*
*same COMMON BLOCK or EQUIVALENCE
*
*******************************************************************************
*
*
* Routines included below are arranged in groups of multiple entry points
*
*
1) FQUERY - Fancy Plotting Group
*
*
2) MLTPLT - Multi-Plotting Group
*
*
3) FULLSC - Plot Window Selection Group
*
*
4) PLOT49 - Older Multi-Plotting (line plots)
*
*
5) BARG49 - Older Multi-Plotting (solid plots)
*
*=============================================================================*
*
*
* THE PLOTTING ENTRY POINTS TAKE STANDARD ARGUMENT ARRANGEMENT, UNLESS NOTED *
*
*
* CALL entrypoint(ARRAY,NUMPNT,NUMPLT)
*
* where ARRAY is dimensioned: REAL*4 ARRAY(NUMPNT,2,NUMPLT) and contains the *
* X and Y coordinates for the plots, NUMPNT and NUMPLT are INTEGER*4
*
*
*
* NUMPNT is the number of points in each plot
*
* NUMPLT is the number of plots
*
* ARRAY(N,1,K) is the X coordinate of the Nth point in the Kth plot
*
* ARRAY(N,2,K) is the Y coordinate of the Nth point in the Kth plot
*
*=============================================================================*
*
1) FQUERY - Fancy Plotting Group
*
*
*
* The FANCY plotting group has newer and older versions. The older version *
* required the screen layout to be prechosen, the new version does automatic *
* setting of the screen layout. The basic screen layout is a single, larger, *
* multiple line plot in the lower right corner with individual plots, smaller,*
* arranged about the left and top margins. The individual plots may be line *
* or solid plots and are filled from the upper left corner, down in a column, *
* filling each column before proceeding to next. The various layouts allow *
* 5, 7, 11, 12, 15, 20, 27 or 48 marginal plots.
*
*
*
* PLOTTING ENTRY POINTS USE STANDARD ARGUMENT ARRANGEMENT
*
*
*
* FANCYP - PreScales, Waits after plotting, autodetermines marginal format
*
* PFANCY - PreScales, Waits after plotting, uses preset marginal format (old) *
* FANCYB - PreScales, Waits, DOES SOLID, autodetermines marginal format
*
* BFANCY - PreScales, Waits, DOES SOLID, uses preset marginal format (old)
*
* FANCYD - PreScales, Waits, DOES DOTS, autodetermines marginal format
*
* DFANCY - PreScales, Waits, DOES DOTS, uses preset marginal format (old)
*
*
*
* FANCYR - PreScales, Waits, REVERSE PLOT, autodetermines marginal format
*

* RFANCY - PreScales, Waits, REVERSE PLOT, uses preset marginal format (old) *
* FANCRB - PreScales, Waits, REV/ SOLID, autodetermines marginal format
*
* BFANCR - PreScales, Waits, REV/ SOLID, uses preset marginal format (old)
*
* FANCRD - PreScales, Waits, REV/ DOTS, autodetermines marginal format
*
* DFANCR - PreScales, Waits, REV/ DOTS, uses preset marginal format (old)
*
*
*
* FANWYP - PreScales, NO Wait after plot, autodetermines marginal format
*
* PFANWY - PreScales, NO Wait after plot, uses preset marginal format (old) *
* FANWYB - PreScales, NO Wait, DOES SOLID, autodetermines marginal format
*
* BFANWY - PreScales, NO Wait, DOES SOLID, uses preset marginal format (old) *
* FANWYD - PreScales, NO Wait, DOES DOTS, autodetermines marginal format
*
* DFANWY - PreScales, NO Wait, DOES DOTS, uses preset marginal format (old) *
*
*
* FANCY0 - NO PreScale, NO Wait after plot, autodetermines marginal format
*
* F0ANCY - NO PreScale, NO Wait after plot, uses preset marginal format (old) *
* BANWY0 - NO PreScale, NO Wait, DOES SOLID, autodetermines marginal format *
* B0ANWY - NO PreScale, NO Wait, DOES SOLID, uses preset marginal format (old)*
* DANWY0 - NO PreScale, NO Wait, DOES DOTS, autodetermines marginal format
*
* D0ANWY - NO PreScale, NO Wait, DOES DOTS, uses preset marginal format (old) *
*
*
* FANCYA - ABS. SCALE, NO Wait after plot, autodetermines marginal format
*
* FAANCY - ABS. SCALE, NO Wait after plot, uses preset marginal format (old) *
* BANWYA - ABS. SCALE, NO Wait, DOES SOLID, autodetermines marginal format *
* BAANWY - ABS. SCALE, NO Wait, DOES SOLID, uses preset marginal format (old)*
* DANWYA - ABS. SCALE, NO Wait, DOES DOTS, autodetermines marginal format
*
* DAANWY - ABS. SCALE, NO Wait, DOES DOTS, uses preset marginal format (old) *
*
*
* FANCYI - ABS./INDIV., NO Wait after plot, autodetermines marginal format
*
* FIANCY - ABS./INDIV., NO Wait after plot, uses preset marginal format (old) *
* BANWYI - ABS./INDIV., NO Wait, DOES SOLID, autodetermines marginal format *
* BIANWY - ABS./INDIV., NO Wait, DOES SOLID, uses preset marginal format (old)*
* DANWYI - ABS./INDIV., NO Wait, DOES DOTS, autodetermines marginal format
*
* DIANWY - ABS./INDIV., NO Wait, DOES DOTS, uses preset marginal format (old) *
*
*
* FANWC0 - NO PreScale, NO Wait, OVERLAY plot, autodetermines marginal format *
*
*
* OLD STYLE ENTRY POINTS ALSO INCLUDE:
*
*
*
* FQUERY - takes no arguments, returns an INTEGER specifying the current default
* number of marginal plots.
*
* FSET48 - takes no arguments, sets the default number of marginals to 48
*
* FSET27 - takes no arguments, sets the default number of marginals to 27
*
* FSET20 - takes no arguments, sets the default number of marginals to 20
*
* FSET15 - takes no arguments, sets the default number of marginals to 15
*
* FSET12 - takes no arguments, sets the default number of marginals to 12
*
* FSET11 - takes no arguments, sets the default number of marginals to 11
*
* FSET07 - takes no arguments, sets the default number of marginals to 07
*
* FRESET - ANOTHER NAME FOR FSET07
*
* FSET05 - takes no arguments, sets the default number of marginals to 05
*
* FSETON - ANOTHER NAME FOR FSET05
*
*=============================================================================*
*
2) MLTPLT - Multi-Plotting Group
*
*
*
* The multi plotting group is an advanced version of the PLOT49 and BARG49, *
* and is similar to the fancy plot group except all windows are the same size.*
* The normal mode plots a multiple line plot in the lower right corner, and *
* the individual plots in seperate windows starting in the upper left corner *
* and proceeding across and down. Optionally, the multiline plot in the lower*
* right corner can be skipped; the individual plots can be solid instead of *
* line plots, the scaling can modified or suppressed. After all the plotting *

* is complete the routine will wait for an operator signal (or timeout) before*
* returning, optionally this can be suppressed. Normally a scaling message is*
* generated, optionally this can be suppressed.
*
*
*
* Arguments are standard format for plotting, EXCEPT THAT THE NUMBER OF PLOTS *
* MAY BE NEGATIVE. The number of plots is taken by absolute value, negative *
* is a flag which indicates suppression of the lower right multiple line plot.*
*
*
* MAJOR ENTRY POINTS ARE
*
*
*
* MLTPLT - waits after plotting, line plots, does normal scaling
*
* MLTBLT - waits after plotting, solid plots, does normal scaling
*
* MLTDLT - waits after plotting, DOT plots, does normal scaling
*
* MLAPLT - waits after plotting, line plots, does absolute scaling
*
* MLABLT - waits after plotting, solid plots, does absolute scaling
*
* MLADLT - waits after plotting, DOT plots, does absolute scaling
*
* MNWPLT - NO wait after plotting, line plots, does normal scaling
*
* MNWBLT - NO wait after plotting, solid plots, does normal scaling
*
* MNWDLT - NO wait after plotting, DOT plots, does normal scaling
*
*
*
* MINOR ENTRY POINTS ARE
*
*
*
* MNWPC0 - no wait, OVERLAY, no scaling, no scaling message
*
* MNWBL0 - no wait, no scaling, no scaling message if 1 plot SOLID
*
* MNWDL0 - no wait, no scaling, no scaling message if 1 plot DOTS
*
*
*
* MLTARG(ARRAY,NUMPNT,NUMPLT,WAIT,OVRLAY,SOLID,ABSCAL,NOMESS,NOSCAL,DOTS)
*
* - specify options by LOGICAL*4 inputs
*
* do wait if WAIT true, do overlaying if OVRLAY true, do solid plots if SOLID *
* true, absolute scaling if ABSCAL, etc.
*
*
*
* Also PLOTFS and PLOTMW - plot to full screen and plot to max. window
*
*=============================================================================*
*
3) FULLSC - Plot Window Selection Group
*
*
*
* This group of routines set windows for the plotting routines,; unlike just *
* setting a window with SETWIN these also record the window parameters in a *
* common block with a flag to indicate that windows are in use. This allows *
* routines that adjust windows to restore the plotting window when down. These
* are called from within the fancy and multi-plotting routines elsewhere in *
* this file. Many entry points take no arguments, some take one argument and *
* one takes four arguments. THE COMMON BLOCK IS DEFINED AS
*
*
INTEGER*4 LEFT,BOTTOM,RIGHT,TOP
*
*
LOGICAL*2 USEWIN
*
*
COMMON /WIN/USEWIN,LEFT,BOTTOM,RIGHT,TOP
*
*
where Coordinates are in absolute screen coordinates: the lower left
*
*
corner is 0,0; left to right ranges 0 to 767;
*
*
bottom to top ranges 0 to 479
*
*
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
* SET YOUR OWN WINDOW ENTRY POINT:
*
*
*
* PLTWIN(LEFT,BOTTOM,RIGHT,TOP) - where all arguments are INTEGER*4
*
* This sets the plotting window as specified. Arguments that are out of range*
* get set to their full screen value, if all are full screen equivalents the *
* windowing flag is turned off. Coordinates are entered in absolute screen *
* coordinates: lower left corner is 0,0; left to right ranges 0 to 767; bottom*
* to top ranges 0 to 479
*
*
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *

* ENTRY POINTS FOR CHOOSE YOUR OWN DIVISIONS HORIZ AND VERT:
*
*
*
* SKXL(N,NX,M,MY) chooses the Nth column of NX horizontal divisions and the *
* Mth row of MY vertical divisions. NX and MY must be 2, 3, 4, 6, 8, 12, or 16
* If less than 2, 2 is used; if greater than 13, 16 is used; else the next highe
r
* allowable value is used. N and M must range from 1 to NX, MY respectively. *
* They count from left to right and bottom to top. This entry does NOT set *
* margins.
*
*
*
* SKXLM(N,NX,M,MY) is similar, but with ONE PIXEL margins about the windows. *
*
*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
* ENTRY POINTS WHICH HAVE ONE ARGUMENT
*
*
*
* There are several entry points which have a single argument, almost all are *
* partitioning the screen into equal divisions horizontally and vertically. *
* The argument specifies which window according to a numberin scheme that starts
* at 1 in the upper left corner, and increases by one across the top and
*
* proceeds to the next lower row when any row is completed. Numbers outside *
* the primary range are accepted, the numbering is wrapped around from the last
* window to first. So for a three by three division of the screen the major *
* numbers would be:
& for 4 by 4:
*
*
1 2 3
1 2 3 4
*
*
4 5 6
5 6 7 8
*
*
7 8 9
9 10 11 12
*
*
13 14 15 16
*
*
*
* S1X1(N) - Included for completeness; chooses FULL SCREEN; same as FULLSC
*
* S1X1M(N) - 1 PIXEL MARGIN around full screen; same as MAXWIN
*
* S2X2(N) - divides screen into quadrants; same as QUADXX(N)
*
* S2X2M(N) - sets screen to quadrants with 1 pixel margin; same as XXQUAD(N) *
* S3X3(N) - divides screen into ninths; same as NON00X(N)
*
* S3X3M(N) - sets screen to ninths with 1 pixel margin; same as NONMGX(N)
*
* S4X4(N) - divides screen into sixteenths; same as HEX00X(N)
*
* S4X4M(N) - sets screen to sixteenths with 1 pixel margin; same as HEXMGX(N) *
*
also same as HEXN0X(N) *
* S6X6(N) - divides screen into thirtysixths
*
* S6X6M(N) - sets screen to thirtysixths with 1 pixel margin
*
* S8X8(N) - divides screen into sixtyfourths
*
* S8X8M(N) - sets screen to sixtyfourths with 1 pixel margin
*
* SCXC(N) - divides screen into 144ths
*
* SCXCM(N) - sets screen to 144ths with 1 pixel margin
*
* SGXG(N) - divides screen into 256ths
*
* SGXGM(N) - sets screen to 256ths with 1 pixel margin
*
*
*
*---------- these do not divide the screen evenly ...
*
* S5X5(N) - divides screen into twentyfifths
*
* S5X5M(N) - sets screen to twentyfifths with 1 pixel margin
*
* S7X7(N) - divides screen into fortyninths
*
* S7X7M(N) - sets screen to fortyninths with 1 pixel margin
*
* S9X9(N) - divides screen into eightyfirsts
*
* S9X9M(N) - sets screen to eightyfirsts with 1 pixel margin
*
* SAXA(N) - divides screen into hundredths
*
* SAXAM(N) - sets screen to hundredths with 1 pixel margin
*
* SBXB(N) - divides screen into 121TH'S
*
* SBXBM(N) - sets screen to 121TH'S with 1 pixel margin
*
* SDXD(N) - divides screen into 169TH'S
*
* SDXDM(N) - sets screen to 169TH'S with 1 pixel margin
*
* SEXE(N) - divides screen into 196TH'S
*

* SEXEM(N) - sets screen to 196TH'S with 1 pixel margin


*
* SFXF(N) - divides screen into 225TH'S
*
* SFXFM(N) - sets screen to 225TH'S with 1 pixel margin
*
*-----------------------------------------------------------------------------*
* S1X2M(N) - SAME AS COLS2(N); divides screen vertically in half
*
* S1X3M(N) - SAME AS COLS3(N); divides screen vertically in thirds
*
* S1X4M(N) - SAME AS COLS4(N); divides screen vertically in fourths
*
* S1X4(N) - divides screen vertically in fourths W/O LEAVING MARGINS
*
* S1X5M(N) - SAME AS COLS5(N); divides screen vertically in fifths
*
* S1X5(N) - divides screen vertically in fifths W/O LEAVING MARGINS
*
* S1X6M(N) - SAME AS COLS6(N); divides screen vertically in sixths
*
* S1X6(N) - divides screen vertically in sixths W/O LEAVING MARGINS
*
* S1X7M(N) - SAME AS COLS7(N); divides screen vertically in sevenths
*
* S1X7(N) - divides screen vertically in sevenths W/O LEAVING MARGINS
*
* S1X8M(N) - SAME AS COLS8(N); divides screen vertically in eighths
*
* S1X8(N) - divides screen vertically in eighths W/O LEAVING MARGINS
*
* S1X9M(N) - SAME AS COLS9(N); divides screen vertically in ninths
*
* S1X9(N) - divides screen vertically in ninths W/O LEAVING MARGINS
*
* S1XAM(N) - SAME AS COLSA(N); divides screen vertically in tenths
*
* S1XA(N) - divides screen vertically in tenths W/O LEAVING MARGINS
*
* S1XBM(N) - SAME AS COLSB(N); divides screen vertically in elevenths
*
* S1XB(N) - divides screen vertically in elevenths W/O LEAVING MARGINS
*
* S1XCM(N) - SAME AS COLS12(N); divides screen vertically in twelfths
*
* S1XC(N) - divides screen vertically in twelfths W/O LEAVING MARGINS
*
* S1XDM(N) - SAME AS COLSD(N); divides screen vertically in thirteenths
*
* S1XD(N) - divides screen vertically in thirteenths W/O LEAVING MARGINS
*
* S1XEM(N) - SAME AS COLSE(N); divides screen vertically in fourteenths
*
* S1XE(N) - divides screen vertically in fourteenths W/O LEAVING MARGINS
*
* S1XFM(N) - SAME AS COLSF(N); divides screen vertically in fifteenths
*
* S1XF(N) - divides screen vertically in fifteenths W/O LEAVING MARGINS
*
* S1XGM(N) - SAME AS COLS16(N); divides screen vertically in sixteenths
*
* S1XG(N) - divides screen vertically in sixteenths W/O LEAVING MARGINS
*
*-----------------------------------------------------------------------------*
* S2X1M(N) - SAME AS ROWS2(N); divides screen horizontally in half
*
* S3X1M(N) - SAME AS ROWS3(N); divides screen horizontally in thirds
*
* S4X1M(N) - SAME AS ROWS4(N); divides screen horizontally in fourths
*
* S4X1(N) - divides screen horizontally in fourths W/O LEAVING MARGINS
*
* S5X1M(N) - SAME AS ROWS5(N); divides screen horizontally in fifths
*
* S5X1(N) - divides screen horizontally in fifths W/O LEAVING MARGINS
*
* S6X1M(N) - SAME AS ROWS6(N); divides screen horizontally in sixths
*
* S6X1(N) - divides screen horizontally in sixths W/O LEAVING MARGINS
*
* S7X1M(N) - SAME AS ROWS7(N); divides screen horizontally in sevenths
*
* S7X1(N) - divides screen horizontally in sevenths W/O LEAVING MARGINS
*
* S8X1M(N) - SAME AS ROWS8(N); divides screen horizontally in eighths
*
* S8X1(N) - divides screen horizontally in eighths W/O LEAVING MARGINS
*
* S9X1M(N) - SAME AS ROWS9(N); divides screen horizontally in ninths
*
* S9X1(N) - divides screen horizontally in ninths W/O LEAVING MARGINS
*
* SAX1M(N) - SAME AS ROWSA(N); divides screen horizontally in tenths
*
* SAX1(N) - divides screen horizontally in tenths W/O LEAVING MARGINS
*
* SBX1M(N) - SAME AS ROWSB(N); divides screen horizontally in elevenths
*
* SBX1(N) - divides screen horizontally in elevenths W/O LEAVING MARGINS
*
* SCX1M(N) - SAME AS ROWS12(N); divides screen horizontally in twelfths
*
* SCX1(N) - divides screen horizontally in twelfths W/O LEAVING MARGINS
*
* SDX1M(N) - SAME AS ROWSD(N); divides screen horizontally in thirteenths
*
* SDX1(N) - divides screen horizontally in thirteenths W/O LEAVING MARGINS *
* SEX1M(N) - SAME AS ROWSE(N); divides screen horizontally in fourteenths
*
* SEX1(N) - divides screen horizontally in fourteenths W/O LEAVING MARGINS *
* SFX1M(N) - SAME AS ROWSF(N); divides screen horizontally in fifteenths
*
* SFX1(N) - divides screen horizontally in fifteenths W/O LEAVING MARGINS
*
* SGX1M(N) - SAME AS ROWS16(N); divides screen horizontally in sixteenths
*

* SGX1(N) - divides screen horizontally in sixteenths W/O LEAVING MARGINS


*
*-----------------------------------------------------------------------------*
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
*
*
* ENTRY POINTS WHICH HAVE NO ARGUMENTS
*
*
*
* FULLSC - sets windowing off, use full screen
*
* MAXWIN - windowing on, window is full screen with 1 pixel margin on all sides
*-----------------------------------------------------------------------------*
* QUADUL - Upper Left QUADrant - no margin
*
* QUADUR - Upper Right QUADrant - no margin
*
* QUADLL - Lower Left QUADrant - no margin
*
* QUADLR - Lower Right QUADrant - no margin
*
* ULQUAD - Upper Left QUADrant - w/ margin
*
* URQUAD - Upper Right QUADrant - w/ margin
*
* LLQUAD - Lower Left QUADrant - w/ margin
*
* LRQUAD - Lower Right QUADrant - w/ margin
*
* NON00x - where x = 1 to 9, chooses that ninth, no margin
*
* NONMGx - where x = 1 to 9, chooses that ninth, w/ margin
*
* HEX0xx - where xx = 01 to 16, chooses that sixteenth, no margin
*
* HEXNxx - where xx = 01 to 16, chooses that sixteenth, w/ margin
*
*-----------------------------------------------------------------------------*
* TOPHLF - sets window to the TOP half of the screen
*
* MIDHLF - sets window to the MIDDLE half of the screen, quarter above & below*
* BOTHLF - sets window to the BOTTOM half of the screen
*
* UTHIRD - sets window to the TOP third of the screen
*
* U2THRD - sets window to the TOP TWO-THIRDS of the screen
*
* MTHIRD - sets window to the MIDDLE third of the screen
*
* B2THRD - sets window to the BOTTOM TWO-THIRDS of the screen
*
* BTHIRD - sets window to the BOTTOM third of the screen
*
*-----------------------------------------------------------------------------*
* LEFTSD - sets window to LEFT half of screen
*
* RGHTSD - sets window to RIGHT half of screen
*
* LTHIRD - sets window to LEFT THIRD OF screen
*
* CTHIRD - sets window to CENTER THIRD OF screen
*
* RTHIRD - sets window to RIGHT THIRD OF screen
*
*=============================================================================*
*
SUBROUTINE FSOVFL
*
* this is overflow from FULLSC; CS/9000 FORTRAN has 16K code limit
*
* (relaxable to 32K with $BigCode option, which I don't trust)
*
*=============================================================================*
*SEGMENT OLD_WNDW
*
*----------------*
*
4) PLOT49 - Older Multi-Plotting (line plots)
*
*
*
* PLOT49 and its related entry points plot multiple plots on screen each in *
* a seperate window, UNLIKE MLTPLT EACH PLOT IS SELF SCALED. Plot windows are*
* normally done from left to right and from top to bottom. PLOT49 cannot do *
* solid plots, BARG49 does those. The major entry points are PLOT49 and PLNW49*
* Theese choose the window size based on how many windows need be fit on
*
* screen, other entry points allow 9 or 16 window formats to be forced; if *
* more plots than windows exist, the extra plots will be all plotted in the *
* last window.
*
*
*
* ALL ENTRY POINTS BELOW TAKE STANDARD ARGUMENTS FOR PLOTTING ENTRIES
*
*
*
* PLOT49 plot multiple windows, wait for time out or operator signal
*
* PLNW49 plot multiple windows, no waiting
*
*
*
* PLOT9W force 9 window format (3 by 3) and wait after plotting
*

* PLT9NW force 9 window format (3 by 3), no waiting


*
* PLOT16 force 16 window format (4 by 4) and wait after plotting
*
* PLT16N force 16 window format (4 by 4), no waiting
*
*
*
* these plot backward, ie. right to left, bottom to top:
*
* PLRT9W backward, force 9 window format (3 by 3) and wait after plotting *
* PLR9NW backward, force 9 window format (3 by 3), no waiting
*
* PLRT16 backward, force 16 window format (4 by 4) and wait after plotting *
* PLR16N backward, force 16 window format (4 by 4), no waiting
*
*
*
* DLOT49 plot multiple windows, wait for time out or operator signal DOTS *
* DLNW49 plot multiple windows, no waiting DOTS
*
*
*
* DLOT9W force 9 window format (3 by 3) and wait after plotting DOTS
*
* DLT9NW force 9 window format (3 by 3), no waiting DOTS
*
* DLOT16 force 16 window format (4 by 4) and wait after plotting DOTS
*
* DLT16N force 16 window format (4 by 4), no waiting DOTS
*
*
*
* these plot backward, ie. right to left, bottom to top: DOTS
*
* DLRT9W backward, force 9 window format (3 by 3) and wait after plotting *
* DLR9NW backward, force 9 window format (3 by 3), no waiting
*
* DLRT16 backward, force 16 window format (4 by 4) and wait after plotting *
* DLR16N backward, force 16 window format (4 by 4), no waiting
*
*=============================================================================*
*
5) BARG49 - Older Multi-Plotting (solid plots)
*
*
*
* BARG49 and its related entry points plot multiple solid filled plots on the *
* screen each in its own window and each self scaled. This is the solid plot *
* version of PLOT49. The major entry points are BARG49 and BRNW49. These
*
* choose the window size based on how many windows need be fit on screen, other
* entry points allow 9 or 16 window formats to be forced; if more plots exist *
* than windows the extra plots are ignored.
*
*
*
* ALL ENTRY POINTS BELOW TAKE STANDARD ARGUMENTS FOR PLOTTING ENTRIES
*
*
*
* BARG49 plot multiple windows, wait for time out or operator signal
*
* BRNW49 plot multiple windows, no waiting
*
* BRRG49 plot multiple windows, REVERSE PLOTS
*
* BLRG49 plot multiple windows, BACKWARD ORDERING
*
* BRLG49 plot multiple windows, BACKWARD ORDERING AND REVERSE PLOTS
*
*
*
* BARG9W force 9 window format (3 by 3) and wait after plotting
*
* BAR9NW force 9 window format (3 by 3), no waiting
*
* BARG16 force 16 window format (4 by 4) and wait after plotting
*
* BAR16N force 16 window format (4 by 4), no waiting
*
*
*
* these plot backward, ie. right to left, bottom to top:
*
* BLRT9W backward, force 9 window format (3 by 3) and wait after plotting *
* BLR9NW backward, force 9 window format (3 by 3), no waiting
*
* BLRT16 backward, force 16 window format (4 by 4) and wait after plotting *
* BLR16N backward, force 16 window format (4 by 4), no waiting
*
*******************************************************************************
*-----------------------------------------------------------------------------INTEGER*4 FUNCTION FQUERY()
CHARACTER*78 SCMESS,SCSAVE
REAL*4 AR(NOPNTS,2,NOPLTS)
INTEGER*4 NOPNTS,NOPLTS,L,B,R,T,N,FIRST,MXP
INTEGER*2 WHICHX(7),WHICH9(5),WHICH6(11),WHICH8(15),WHICHC(12),WHCH20(20)
INTEGER*2 WHCH27(27),WHCH48(48)
LOGICAL*2 USEWIN,WAIT,DOSCAL,OVRLAY,UPTO5,GETOUT,UPTO11,UPTO15,UPTO12

LOGICAL*2 DOBARS,UPTO20,UPTO27,UPTO48,GRIDS,DODOTS,REVERS,ABSCAL,INDIV
COMMON /WIN/USEWIN,L,B,R,T,/SCALEM/SCMESS,/PLTEXT/GETOUT
SAVE /WIN/,/SCALEM/,/PLTEXT/
SAVE FIRST,WHICHX,UPTO5,WHICH9,UPTO11,UPTO12,UPTO20,UPTO27,UPTO48
SAVE WHICH6,WHICH8,WHICHC,WHCH20,WHCH27,WHCH48
SAVE
DATA WHICHX/1,5,9,13,2,3,4/,FIRST/1/,UPTO5/.FALSE./,WHICH9/1,4,7,2,3/
DATA UPTO11/.FALSE./,WHICH6/1,7,13,19,25,31,2,3,4,5,6/,UPTO15/.FALSE./
DATA UPTO48/.FALSE./,GRIDS/.FALSE./
DATA WHICH8/1,9,17,25,33,41,49,57,2,3,4,5,6,7,8/,UPTO12/.FALSE./
DATA WHICHC/1,5,9,13,2,6,10,14,3,7,4,8/,UPTO20/.FALSE./,UPTO27/.FALSE./
DATA WHCH20/1,7,13,19,25,31,2,8,14,20,26,32,3,9,4,10,5,11,6,12/
DATA WHCH27/1,7,13,19,25,31,2,8,14,20,26,32,3,9,15,21,27,33,4,10,16,5,11,1
7,6,12,18/
DATA WHCH48/1,9,17,25,33,41,49,57,2,10,18,26,34,42,50,58,3,11,19,27,
& 35,43,51,59,4,12,20,28,36,44,52,60,5,13,21,29,6,14,22,30,7,15,23,31,
& 8,16,24,32/
IF (UPTO5) THEN
FQUERY = 5
ELSEIF (UPTO11) THEN
FQUERY = 11
ELSEIF (UPTO12) THEN
FQUERY = 12
ELSEIF (UPTO15) THEN
FQUERY = 15
ELSEIF (UPTO20) THEN
FQUERY = 20
ELSEIF (UPTO27) THEN
FQUERY = 27
ELSEIF (UPTO48) THEN
FQUERY = 48
ELSE
FQUERY = 7
ENDIF
IF (GRIDS) FQUERY = - FQUERY
RETURN
*---------ENTRY FANCYP(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY PFANCY(AR,NOPNTS,NOPLTS)
WAIT = .TRUE.
DOSCAL = .TRUE.
DOBARS = .FALSE.
DODOTS = .FALSE.
REVERS = .FALSE.
ABSCAL = .FALSE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY FANCYR(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20

UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY RFANCY(AR,NOPNTS,NOPLTS)
WAIT = .TRUE.
DOSCAL = .TRUE.
DOBARS = .FALSE.
DODOTS = .FALSE.
REVERS = .TRUE.
ABSCAL = .FALSE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY FANCYD(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY DFANCY(AR,NOPNTS,NOPLTS)
WAIT = .TRUE.
DOSCAL = .TRUE.
DOBARS = .FALSE.
DODOTS = .TRUE.
REVERS = .FALSE.
ABSCAL = .FALSE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY FANCRD(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY DFANCR(AR,NOPNTS,NOPLTS)
WAIT = .TRUE.
DOSCAL = .TRUE.
DOBARS = .FALSE.
DODOTS = .TRUE.
REVERS = .TRUE.
ABSCAL = .FALSE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY DANWY0(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY D0ANWY(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .FALSE.

DOBARS = .FALSE.
DODOTS = .TRUE.
REVERS = .FALSE.
ABSCAL = .FALSE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY FANCYB(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY BFANCY(AR,NOPNTS,NOPLTS)
WAIT = .TRUE.
DOSCAL = .TRUE.
DOBARS = .TRUE.
DODOTS = .FALSE.
REVERS = .FALSE.
ABSCAL = .FALSE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY DANWYA(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY DAANWY(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .FALSE.
DOBARS = .FALSE.
DODOTS = .TRUE.
REVERS = .FALSE.
ABSCAL = .TRUE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY BANWYA(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY BAANWY(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .FALSE.
DOBARS = .TRUE.
DODOTS = .FALSE.
REVERS = .FALSE.
ABSCAL = .TRUE.
INDIV = .FALSE.
GOTO 9999

*---------ENTRY FANWYA(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY FAANWY(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .FALSE.
DOBARS = .FALSE.
DODOTS = .FALSE.
REVERS = .FALSE.
ABSCAL = .TRUE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY DANWYI(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY DIANWY(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .FALSE.
DOBARS = .FALSE.
DODOTS = .TRUE.
REVERS = .FALSE.
ABSCAL = .TRUE.
INDIV = .TRUE.
GOTO 9999
*---------ENTRY BANWYI(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY BIANWY(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .FALSE.
DOBARS = .TRUE.
DODOTS = .FALSE.
REVERS = .FALSE.
ABSCAL = .TRUE.
INDIV = .TRUE.
GOTO 9999
*---------ENTRY FANWYI(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20

UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY FIANWY(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .FALSE.
DOBARS = .FALSE.
DODOTS = .FALSE.
REVERS = .FALSE.
ABSCAL = .TRUE.
INDIV = .TRUE.
GOTO 9999
*---------ENTRY FANCRB(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY BFANCR(AR,NOPNTS,NOPLTS)
WAIT = .TRUE.
DOSCAL = .TRUE.
DOBARS = .TRUE.
DODOTS = .FALSE.
REVERS = .TRUE.
ABSCAL = .FALSE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY BANWY0(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY B0ANWY(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .FALSE.
DOBARS = .TRUE.
DODOTS = .FALSE.
REVERS = .FALSE.
ABSCAL = .FALSE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY FANWY0(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY F0ANWY(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .FALSE.

DOBARS = .FALSE.
DODOTS = .FALSE.
REVERS = .FALSE.
ABSCAL = .FALSE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY FANWC0(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .FALSE.
OVRLAY = .TRUE.
DOBARS = .FALSE.
DODOTS = .FALSE.
REVERS = .FALSE.
ABSCAL = .FALSE.
INDIV = .FALSE.
GOTO 9998
*---------ENTRY FANWYD(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY DFANWY(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .TRUE.
DOBARS = .FALSE.
DODOTS = .TRUE.
REVERS = .FALSE.
ABSCAL = .FALSE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY FANWYB(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27
UPTO48 = NOPLTS.GT.27
*---------ENTRY BFANWY(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .TRUE.
DOBARS = .TRUE.
DODOTS = .FALSE.
REVERS = .FALSE.
ABSCAL = .FALSE.
INDIV = .FALSE.
GOTO 9999
*---------ENTRY FANWYP(AR,NOPNTS,NOPLTS)
UPTO5 = NOPLTS.LE.4
UPTO12 = NOPLTS.LE.12.AND.NOPLTS.GT.6
UPTO15 = NOPLTS.GT.12.AND.NOPLTS.LE.14
UPTO20 = NOPLTS.GT.14.AND.NOPLTS.LE.20
UPTO27 = NOPLTS.GT.20.AND.NOPLTS.LE.27

UPTO48 = NOPLTS.GT.27
*---------ENTRY PFANWY(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
DOSCAL = .TRUE.
DOBARS = .FALSE.
DODOTS = .FALSE.
REVERS = .FALSE.
ABSCAL = .FALSE.
INDIV = .FALSE.
9999 CONTINUE
OVRLAY = .FALSE.
CALL FULLSC
CALL GRCLS
FIRST = 1
9998 CONTINUE
USEWIN = .TRUE.
GETOUT = .FALSE.
IF (UPTO5.OR.UPTO20) THEN
L = 261
B = 0
R = 767
T = 317
MXP = 5
IF (UPTO20) MXP = 20
ELSEIF (UPTO11) THEN
L = 130
B = 0
R = 767
T = 398
MXP = 11
ELSEIF (UPTO12.OR.UPTO27.OR.UPTO48) THEN
CALL LRQUAD
MXP = 12
IF (UPTO27) MXP = 27
IF (UPTO48) MXP = 48
ELSEIF (UPTO15) THEN
L = 98
B = 0
R = 767
T = 418
MXP = 15
ELSE
L = 195
B = 0
R = 767
T = 359
MXP = 7
ENDIF
CALL SETWIN(L,B,R,T)
*
CALL GENTIK
IF (DOSCAL.AND..NOT.ABSCAL) THEN
IF (DODOTS.AND.REVERS) THEN
CALL DLRTNW(AR,NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DLOTNW(AR,NOPNTS,NOPLTS)
ELSEIF (REVERS) THEN
CALL PLRTNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PLOTNW(AR,NOPNTS,NOPLTS)

ENDIF
SCSAVE = SCMESS
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR,NOPNTS,NOPLTS)
ELSE
IF (ABSCAL) THEN
CALL AUTOA(AR,NOPNTS,NOPLTS)
CALL MKPLMS
ENDIF
SCSAVE = SCMESS
IF (DODOTS.AND.REVERS) THEN
CALL DLR0NW(AR,NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR,NOPNTS,NOPLTS)
ELSEIF (REVERS) THEN
CALL PLR0NW(AR,NOPNTS,NOPLTS)
ELSE
CALL PL0TNW(AR,NOPNTS,NOPLTS)
ENDIF
ENDIF
IF (.NOT.OVRLAY) THEN
SCMESS = ' '
DO 8001 I = 1,78
IF (SCSAVE(I:I).EQ.';') THEN
J = I
GOTO 8002
ENDIF
8001
CONTINUE
J = 1
GOTO 8003
8002
CONTINUE
J = J - 1
SCMESS = SCSAVE(1:J)
IF (UPTO5.OR.UPTO20) THEN
CALL PLMS(7)
ELSEIF (UPTO12.OR.UPTO27) THEN
CALL PLMS(11)
ELSEIF (UPTO11) THEN
CALL PLMS(2)
ELSEIF (UPTO15) THEN
CALL PLMS(1)
ELSE
CALL PLMS(4)
ENDIF
J = J + 2
SCMESS = SCSAVE(J:78)
SCSAVE = SCMESS
8003
CONTINUE
SCMESS = SCSAVE
IF (UPTO5.OR.UPTO20) THEN
CALL PLMS(8)
ELSEIF (UPTO12.OR.UPTO27.OR.UPTO48) THEN
CALL PLMS(12)
ELSEIF (UPTO11) THEN
CALL PLMS(3)
ELSEIF (UPTO15) THEN
CALL PLMS(2)
ELSE
CALL PLMS(5)
ENDIF

ENDIF
NPLTS = MIN(MXP,NOPLTS)
NPLTS = NPLTS + FIRST - 1
DO 1 I = FIRST,NPLTS
IF (GETOUT) THEN
CALL PXLSET
CALL FILWRD(-1)
CALL FULLSC
DODOTS = .FALSE.
RETURN
ENDIF
IF (UPTO5) THEN
J = WHICH9(I)
CALL NONMGX(J)
ELSEIF (UPTO11) THEN
J = WHICH6(I)
CALL S6X6M(J)
ELSEIF (UPTO12) THEN
J = WHICHC(I)
CALL S4X4M(J)
ELSEIF (UPTO15) THEN
J = WHICH8(I)
CALL S8X8M(J)
ELSEIF (UPTO20) THEN
J = WHCH20(I)
CALL S6X6M(J)
ELSEIF (UPTO27) THEN
J = WHCH27(I)
CALL S6X6M(J)
ELSEIF (UPTO48) THEN
J = WHCH48(I)
CALL S8X8M(J)
ELSE
J = WHICHX(I)
CALL HEXN0X(J)
ENDIF
IF (I.EQ.FIRST) CALL GENTIK
LL = I - FIRST + 1
IF (INDIV.AND.ABSCAL) THEN
CALL AUTOA(AR(1,1,LL),NOPNTS,1)
ELSEIF (INDIV) THEN
CALL AUTO(AR(1,1,LL),NOPNTS,1)
ENDIF
IF (DOBARS.AND.GRIDS.AND.REVERS) THEN
CALL BGR0NW(AR(1,1,LL),NOPNTS,1)
ELSEIF (DOBARS.AND.GRIDS) THEN
CALL BG0TNW(AR(1,1,LL),NOPNTS,1)
ELSEIF (DODOTS.AND.GRIDS) THEN
CALL DG0TNW(AR(1,1,LL),NOPNTS,1)
ELSEIF (DODOTS.AND.GRIDS.AND.REVERS) THEN
CALL DGR0NW(AR(1,1,LL),NOPNTS,1)
ELSEIF (GRIDS.AND.REVERS) THEN
CALL PGR0NW(AR(1,1,LL),NOPNTS,1)
ELSEIF (GRIDS) THEN
CALL PG0TNW(AR(1,1,LL),NOPNTS,1)
ELSEIF (DOBARS.AND.REVERS) THEN
CALL BLR0NW(AR(1,1,LL),NOPNTS,1)
ELSEIF (DODOTS.AND.REVERS) THEN
CALL DLR0NW(AR(1,1,LL),NOPNTS,1)
ELSEIF (DOBARS) THEN

CALL BL0TNW(AR(1,1,LL),NOPNTS,1)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR(1,1,LL),NOPNTS,1)
ELSEIF (REVERS) THEN
CALL PLR0NW(AR(1,1,LL),NOPNTS,1)
ELSE
CALL PL0TNW(AR(1,1,LL),NOPNTS,1)
ENDIF
K = I
1 CONTINUE
FIRST = K + 1
IF (WAIT) THEN
CALL DOWAIT
CALL PLTTRM
ENDIF
CALL PXLSET
CALL FILWRD(-1)
CALL FULLSC
RETURN
*---------ENTRY FSET48
UPTO5 = .FALSE.
UPTO11 = .FALSE.
UPTO12 = .FALSE.
UPTO15 = .FALSE.
UPTO20 = .FALSE.
UPTO27 = .FALSE.
UPTO48 = .TRUE.
RETURN
*---------ENTRY FSET27
UPTO5 = .FALSE.
UPTO11 = .FALSE.
UPTO12 = .FALSE.
UPTO15 = .FALSE.
UPTO20 = .FALSE.
UPTO27 = .TRUE.
UPTO48 = .FALSE.
RETURN
*---------ENTRY FSET20
UPTO5 = .FALSE.
UPTO11 = .FALSE.
UPTO12 = .FALSE.
UPTO15 = .FALSE.
UPTO20 = .TRUE.
UPTO27 = .FALSE.
UPTO48 = .FALSE.
RETURN
*---------ENTRY FSET15
UPTO5 = .FALSE.
UPTO11 = .FALSE.
UPTO12 = .FALSE.
UPTO15 = .TRUE.
UPTO20 = .FALSE.
UPTO27 = .FALSE.
UPTO48 = .FALSE.
RETURN
*----------

ENTRY FSET12
UPTO5 = .FALSE.
UPTO11 = .FALSE.
UPTO12 = .TRUE.
UPTO15 = .FALSE.
UPTO20 = .FALSE.
UPTO27 = .FALSE.
UPTO48 = .FALSE.
RETURN
*---------ENTRY FSET11
UPTO5 = .FALSE.
UPTO11 = .TRUE.
UPTO12 = .FALSE.
UPTO15 = .FALSE.
UPTO20 = .FALSE.
UPTO27 = .FALSE.
UPTO48 = .FALSE.
RETURN
*---------ENTRY FSETON
ENTRY FSET05
UPTO5 = .TRUE.
UPTO11 = .FALSE.
UPTO12 = .FALSE.
UPTO15 = .FALSE.
UPTO20 = .FALSE.
UPTO27 = .FALSE.
UPTO48 = .FALSE.
RETURN
*---------ENTRY FRESET
ENTRY FSET07
UPTO5 = .FALSE.
UPTO11 = .FALSE.
UPTO12 = .FALSE.
UPTO15 = .FALSE.
UPTO20 = .FALSE.
UPTO27 = .FALSE.
UPTO48 = .FALSE.
RETURN
*---------ENTRY FSGRID
GRIDS = .TRUE.
RETURN
*---------ENTRY FRGRID
GRIDS = .FALSE.
RETURN
END
*-----------------------------------------------------------------------------SUBROUTINE MLTPLT(AR,NOPNTS,NOPLTS)
CHARACTER*78 SCMESS,SCSAVE
REAL*4 AR(NOPNTS,2,NOPLTS)
INTEGER*4 NOPNTS,NOPLTS,L,B,R,T,SQ
LOGICAL*4 IW,IO,IB,IA,INM,INS,ID
LOGICAL*2 USEWIN,WAIT,NOSCAL,OVRLAY,GETOUT,DOBARS,NOCOMB,MARKQ,ABSC
LOGICAL*2 NOMESS,LL,L2L,MSX,DODOTS
COMMON /WIN/USEWIN,L,B,R,T,/SCALEM/SCMESS,/PLTEXT/GETOUT
SAVE /WIN/,/SCALEM/,/PLTEXT/,MARKQ

SAVE
DATA MARKQ/.TRUE./
WAIT = .TRUE.
ABSC = .FALSE.
NOMESS = .FALSE.
GOTO 9999
*---------ENTRY MLAPLT(AR,NOPNTS,NOPLTS)
WAIT = .TRUE.
ABSC = .TRUE.
NOMESS = .FALSE.
GOTO 9999
*---------ENTRY MLTARG(AR,NOPNTS,NOPLTS,IW,IO,IB,IA,INM,INS,ID)
WAIT = IW
OVRLAY = IO
DOBARS = IB
DODOTS = ID
ABSC = IA
NOMESS = INM
NOSCAL = INS
GOTO 9997
*---------ENTRY MLTDLT(AR,NOPNTS,NOPLTS)
WAIT = .TRUE.
OVRLAY = .FALSE.
NOSCAL = .FALSE.
DODOTS = .TRUE.
DOBARS = .FALSE.
ABSC = .FALSE.
NOMESS = .FALSE.
GOTO 9997
*---------ENTRY MLADLT(AR,NOPNTS,NOPLTS)
WAIT = .TRUE.
OVRLAY = .FALSE.
NOSCAL = .FALSE.
DODOTS = .TRUE.
DOBARS = .FALSE.
ABSC = .TRUE.
NOMESS = .FALSE.
GOTO 9997
*---------ENTRY MNWDLT(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
OVRLAY = .FALSE.
NOSCAL = .FALSE.
DODOTS = .TRUE.
DOBARS = .FALSE.
ABSC = .FALSE.
NOMESS = .FALSE.
GOTO 9997
*---------ENTRY MLTBLT(AR,NOPNTS,NOPLTS)
WAIT = .TRUE.
OVRLAY = .FALSE.
NOSCAL = .FALSE.
DOBARS = .TRUE.
DODOTS = .FALSE.
ABSC = .FALSE.

NOMESS = .FALSE.
GOTO 9997
*---------ENTRY MLABLT(AR,NOPNTS,NOPLTS)
WAIT = .TRUE.
OVRLAY = .FALSE.
NOSCAL = .FALSE.
DOBARS = .TRUE.
DODOTS = .FALSE.
ABSC = .TRUE.
NOMESS = .FALSE.
GOTO 9997
*---------ENTRY MNWBLT(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
OVRLAY = .FALSE.
NOSCAL = .FALSE.
DOBARS = .TRUE.
DODOTS = .FALSE.
ABSC = .FALSE.
NOMESS = .FALSE.
GOTO 9997
*---------ENTRY MNWPC0(AR,NOPNTS,NOPLTS)
OVRLAY = .TRUE.
WAIT = .FALSE.
NOSCAL = .TRUE.
NOMESS = .TRUE.
GOTO 9998
*---------ENTRY MNWBL0(AR,NOPNTS,NOPLTS)
OVRLAY = .FALSE.
WAIT = .FALSE.
NOSCAL = .TRUE.
DOBARS = .TRUE.
DODOTS = .FALSE.
NOMESS = NOPLTS.EQ.1 .OR. NOPLTS.EQ.-1
GOTO 9997
*---------ENTRY MNWDL0(AR,NOPNTS,NOPLTS)
OVRLAY = .FALSE.
WAIT = .FALSE.
NOSCAL = .TRUE.
DODOTS = .TRUE.
DOBARS = .FALSE.
NOMESS = NOPLTS.EQ.1 .OR. NOPLTS.EQ.-1
GOTO 9997
*---------ENTRY MNWPL0(AR,NOPNTS,NOPLTS)
OVRLAY = .FALSE.
WAIT = .FALSE.
NOSCAL = .TRUE.
NOMESS = .TRUE.
GOTO 9998
*---------ENTRY MNWPLT(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
ABSC = .FALSE.
NOMESS = .FALSE.
9999 CONTINUE

9998
9997

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

8001
8002

8004
8003

NOSCAL = .FALSE.
OVRLAY = .FALSE.
CALL FULLSC
CALL GRCLS
CONTINUE
DOBARS = .FALSE.
DODOTS = .FALSE.
CONTINUE
NOCOMB = NOPLTS.LT.0
NOPLTS = IABS(NOPLTS)
IF (ABSC.AND..NOT.NOSCAL) THEN
CALL AUTOA(AR,NOPNTS,NOPLTS)
ELSEIF (.NOT.NOSCAL) THEN
CALL AUTO(AR,NOPNTS,NOPLTS)
ENDIF
IF (NOPLTS.GT.1.AND.NOPLTS.LE.4) THEN
CALL S2X2M(1)
ELSEIF (NOPLTS.GT.4.AND.NOPLTS.LE.9) THEN
CALL S3X3M(1)
ELSEIF (NOPLTS.GT.9.AND.NOPLTS.LE.16) THEN
CALL S4X4(1)
ELSEIF (NOPLTS.GT.16.AND.NOPLTS.LE.36) THEN
CALL S6X6(1)
ELSEIF (NOPLTS.GT.36.AND.NOPLTS.LE.64) THEN
CALL S8X8(1)
ELSEIF (NOPLTS.GT.64.AND.NOPLTS.LE.144) THEN
CALL SCXC(1)
ELSEIF (NOPLTS.GT.144.AND.NOPLTS.LE.256) THEN
CALL SGXG(1)
ENDIF
CALL GENTIK
GETOUT = .FALSE.
SCSAVE = SCMESS
IF (.NOT.(NOMESS.OR.DOBARS.OR.OVRLAY)) THEN
SCMESS = ' '
DO 8001 I = 1,78
IF (SCSAVE(I:I).EQ.';') THEN
J = I
GOTO 8002
ENDIF
CONTINUE
J = 1
GOTO 8003
CONTINUE
J = J - 1
SCMESS = SCSAVE(1:J)
CALL PLMSL(26)
J = J + 1
J = J + 1
IF (SCSAVE(J:J).EQ.' '.AND.J.LT.78) GOTO 8004
SCMESS = ' '
CONTINUE
SCMESS = SCSAVE(J:78)
CALL PLMSL(27)
ENDIF
IF (NOPLTS.EQ.1) THEN
SQ = 1
IF (NOSCAL) THEN
IF (OVRLAY.AND.DODOTS) THEN
CALL DL0TNC(AR,NOPNTS,NOPLTS)

ELSEIF (OVRLAY) THEN


CALL PL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR,NOPNTS,NOPLTS)
ELSEIF (DOBARS) THEN
CALL BL0TNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PL0TNW(AR,NOPNTS,NOPLTS)
ENDIF
ELSEIF (DOBARS) THEN
CALL BLOTNW(AR,NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DLOTNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PLOTNW(AR,NOPNTS,NOPLTS)
ENDIF
ELSEIF (NOPLTS.GT.1.AND.(NOPLTS.LE.3.OR.(NOCOMB.AND.NOPLTS.LE.4))) THEN
SQ = 2
DO 1 I = 1,NOPLTS
CALL XXQUAD(I)
IF (OVRLAY.AND.DODOTS) THEN
CALL DL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (DOBARS) THEN
CALL BL0TNW(AR(1,1,I),NOPNTS,1)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PL0TNW(AR(1,1,I),NOPNTS,1)
ENDIF
IF (GETOUT) GOTO 9772
1
CONTINUE
IF (.NOT.NOCOMB) THEN
CALL S2X2(4)
IF (NOSCAL) THEN
IF (OVRLAY.AND.DODOTS) THEN
CALL DL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR,NOPNTS,NOPLTS)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR,NOPNTS,NOPLTS)
ELSE
CALL PL0TNW(AR,NOPNTS,NOPLTS)
ENDIF
ELSEIF (DODOTS) THEN
CALL DLOTNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PLOTNW(AR,NOPNTS,NOPLTS)
ENDIF
ENDIF
ELSEIF (NOPLTS.GT.3.AND.(NOPLTS.LE.8.OR.(NOCOMB.AND.NOPLTS.LE.9))) THEN
SQ = 3
DO 2 I = 1,NOPLTS
CALL NONMGX(I)
IF (DODOTS.AND.OVRLAY) THEN
CALL DL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (DODOTS) THEN

CALL DL0TNW(AR(1,1,I),NOPNTS,1)
ELSEIF (DOBARS) THEN
CALL BL0TNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PL0TNW(AR(1,1,I),NOPNTS,1)
ENDIF
IF (GETOUT) GOTO 9772
2
CONTINUE
IF (.NOT.NOCOMB) THEN
CALL NON00X(9)
IF (NOSCAL) THEN
IF (DODOTS.AND.OVRLAY) THEN
CALL DL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PL0TNW(AR,NOPNTS,NOPLTS)
ENDIF
ELSEIF (DODOTS) THEN
CALL DLOTNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PLOTNW(AR,NOPNTS,NOPLTS)
ENDIF
ENDIF
ELSEIF (NOPLTS.GT.8.AND.(NOPLTS.LE.15.OR.(NOCOMB.AND.NOPLTS.LE.16))) THEN
SQ = 4
DO 3 I = 1,NOPLTS
CALL HEXN0X(I)
IF (DODOTS.AND.OVRLAY) THEN
CALL DL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR(1,1,I),NOPNTS,1)
ELSEIF (DOBARS) THEN
CALL BL0TNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PL0TNW(AR(1,1,I),NOPNTS,1)
ENDIF
IF (GETOUT) GOTO 9772
3
CONTINUE
IF (.NOT.NOCOMB) THEN
CALL HEX00X(16)
IF (NOSCAL) THEN
IF (DODOTS.AND.OVRLAY) THEN
CALL DL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PL0TNW(AR,NOPNTS,NOPLTS)
ENDIF
ELSEIF (DODOTS) THEN
CALL DLOTNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PLOTNW(AR,NOPNTS,NOPLTS)
ENDIF

ENDIF
ELSEIF (NOPLTS.GT.15.AND.(NOPLTS.LE.35.OR.(NOCOMB.AND.NOPLTS.LE.36))) THEN
SQ = 6
DO 4 I = 1,NOPLTS
CALL S6X6M(I)
IF (DODOTS.AND.OVRLAY) THEN
CALL DL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR(1,1,I),NOPNTS,1)
ELSEIF (DOBARS) THEN
CALL BL0TNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PL0TNW(AR(1,1,I),NOPNTS,1)
ENDIF
IF (GETOUT) GOTO 9772
4
CONTINUE
IF (.NOT.NOCOMB) THEN
CALL S6X6(36)
IF (NOSCAL) THEN
IF (DODOTS.AND.OVRLAY) THEN
CALL DL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PL0TNW(AR,NOPNTS,NOPLTS)
ENDIF
ELSEIF (DODOTS) THEN
CALL DLOTNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PLOTNW(AR,NOPNTS,NOPLTS)
ENDIF
ENDIF
ELSEIF (NOPLTS.GT.35.AND.(NOPLTS.LE.63.OR.(NOCOMB.AND.NOPLTS.LE.64))) THEN
SQ = 8
DO 5 I = 1,NOPLTS
CALL S8X8M(I)
IF (DODOTS.AND.OVRLAY) THEN
CALL DL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR(1,1,I),NOPNTS,1)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (DOBARS) THEN
CALL BL0TNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PL0TNW(AR(1,1,I),NOPNTS,1)
ENDIF
IF (GETOUT) GOTO 9772
5
CONTINUE
IF (.NOT.NOCOMB) THEN
CALL S8X8(64)
IF (NOSCAL) THEN
IF (DODOTS.AND.OVRLAY) THEN
CALL DL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR,NOPNTS,NOPLTS)

ELSEIF (DODOTS) THEN


CALL DL0TNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PL0TNW(AR,NOPNTS,NOPLTS)
ENDIF
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PLOTNW(AR,NOPNTS,NOPLTS)
ENDIF
ENDIF
ELSEIF (NOPLTS.GT.63.AND.(NOPLTS.LE.143.OR.(NOCOMB.AND.NOPLTS.LE.144))) TH
EN
SQ = 12
DO 6 I = 1,NOPLTS
CALL SCXCM(I)
IF (MARKQ.AND.MOD(I,4).EQ.0.AND.MOD(I/12,2).NE.0) CALL SCXC(I)
IF (DODOTS.AND.OVRLAY) THEN
CALL DL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR(1,1,I),NOPNTS,1)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (DOBARS) THEN
CALL BL0TNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PL0TNW(AR(1,1,I),NOPNTS,1)
ENDIF
IF (GETOUT) GOTO 9772
6
CONTINUE
IF (.NOT.NOCOMB) THEN
CALL SCXC(144)
IF (NOSCAL) THEN
IF (DODOTS.AND.OVRLAY) THEN
CALL DL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PL0TNW(AR,NOPNTS,NOPLTS)
ENDIF
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PLOTNW(AR,NOPNTS,NOPLTS)
ENDIF
ENDIF
ELSEIF (NOPLTS.GT.143.AND.(NOPLTS.LE.255.OR.(NOCOMB.AND.NOPLTS.LE.256))) T
HEN
SQ = 16
DO 7 I = 1,NOPLTS
CALL SGXGM(I)
IF (MARKQ.AND.MOD(I,4).EQ.0.AND.MOD(I/16,2).NE.0) CALL SGXG(I)
IF (DODOTS.AND.OVRLAY) THEN
CALL DL0TNC(AR(1,1,I),NOPNTS,1)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR(1,1,I),NOPNTS,1)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR(1,1,I),NOPNTS,1)

8011
8012

8014
8013

ELSEIF (DOBARS) THEN


CALL BL0TNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PL0TNW(AR(1,1,I),NOPNTS,1)
ENDIF
IF (GETOUT) GOTO 9772
CONTINUE
IF (.NOT.NOCOMB) THEN
CALL SGXG(256)
IF (NOSCAL) THEN
IF (DODOTS.AND.OVRLAY) THEN
CALL DL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (OVRLAY) THEN
CALL PL0TNC(AR,NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PL0TNW(AR,NOPNTS,NOPLTS)
ENDIF
ELSEIF (DODOTS) THEN
CALL DL0TNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PLOTNW(AR,NOPNTS,NOPLTS)
ENDIF
ENDIF
ENDIF
SCMESS = SCSAVE
IF (DOBARS.AND..NOT.(NOMESS.OR.OVRLAY)) THEN
LL = NOPLTS .LE. SQ*(SQ-1)
L2L = NOPLTS .LE. SQ*(SQ-2)
MSX = SQ.LT.12 .AND. .NOT.LL
IF (SQ.GE.12.AND..NOT.L2L) GOTO 8015
SCSAVE = SCMESS
J = 1
IF (NOPLTS.GT.16.AND.NOPLTS.LE.30) GOTO 8013
SCMESS = ' '
DO 8011 I = 1,78
IF (SCSAVE(I:I).EQ.';') THEN
J = I
GOTO 8012
ENDIF
CONTINUE
J = 1
GOTO 8013
CONTINUE
J = J - 1
SCMESS = SCSAVE(1:J)
IF (MSX) THEN
CALL PLMSXL(26)
ELSE
CALL PLMSL(26)
ENDIF
J = J + 1
J = J + 1
IF (SCSAVE(J:J).EQ.' '.AND.J.LT.78) GOTO 8014
SCMESS = ' '
CONTINUE
SCMESS = SCSAVE(J:78)
IF (MSX) THEN
CALL PLMSXL(27)

ELSE
CALL PLMSL(27)
ENDIF
8015
CONTINUE
ENDIF
IF (WAIT) THEN
CALL DOWAIT
CALL PLTTRM
ENDIF
GOTO 9772
RETURN
*---------ENTRY MLTPST
MARKQ = .TRUE.
RETURN
*---------ENTRY MLTPRS
MARKQ = .FALSE.
RETURN
9772 CONTINUE
CALL PXLSET
CALL FILWRD(-1)
CALL FULLSC
RETURN
*---------ENTRY PLOTFS(AR,NOPNTS,NOPLTS)
CALL FULLSC
CALL PLOTW(AR,NOPNTS,NOPLTS)
*---------ENTRY PLOTMW(AR,NOPNTS,NOPLTS)
CALL MAXWIN
CALL PLOTW(AR,NOPNTS,NOPLTS)
END
*-----------------------------------------------------------------------------* This is the window setting routine for the plotting package
* MAJOR Entry points are FULLSC, SnXn(IWHICH), SnXnM(IWHICH)
* ALSO: SKXL(N,NX,M,MY) chooses N of NX horiz and M of MY vert.
*
SUBROUTINE FULLSC
INTEGER*4 L,B,R,T,N,LL,BB,RR,TT,NNN,DX,DY,IX,IY,IIX,IIY,M,NN,MM
LOGICAL*2 USEWIN,DOCOLS,DOROWS
COMMON /WIN/USEWIN,L,B,R,T
SAVE /WIN/,DOCOLS,DOROWS
DATA DOCOLS/.FALSE./,DOROWS/.FALSE./
*---------ENTRY S1X1(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
9000 USEWIN = .FALSE.
L = 0
B = 0
R = 767
T = 479
GOTO 9998
*---------ENTRY S1X1M(N)
ENTRY MAXWIN
L = 1
B = 1
R = 766

T = 478
DOCOLS = .FALSE.
DOROWS = .FALSE.
GOTO 9999
*---------ENTRY PLTWIN(I,J,K,M)
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = I
B = J
R = K
T = M
GOTO 9999
*---------ENTRY QUADUL
1001 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 0
B = 240
R = 383
T = 479
9999 USEWIN = .TRUE.
IF (DOROWS.AND.DOCOLS) THEN
DOCOLS = .FALSE.
DOROWS = .FALSE.
ELSEIF (DOROWS) THEN
L = 0
R = 767
ELSEIF (DOCOLS) THEN
B = 0
T = 479
ENDIF
9998 CONTINUE
IF (T.GT.479) T = 479
IF (R.GT.767) R = 767
IF (B.LT.0) B = 0
IF (L.LT.0) L = 0
USEWIN = .NOT. (L.EQ.0.AND.B.EQ.0.AND.R.EQ.767.AND.T.EQ.479)
LL = L
BB = B
RR = R
TT = T
CALL SETWIN(LL,BB,RR,TT)
IF (USEWIN) THEN
CALL SMPMOD(2)
ELSE
CALL SMPMOD(0)
ENDIF
RETURN
*---------ENTRY QUADUR
1002 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 384
B = 240
R = 767
T = 479
GOTO 9999

*---------ENTRY QUADLR
1004 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 384
B = 0
R = 767
T = 239
GOTO 9999
*---------ENTRY QUADLL
1003 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 0
B = 0
R = 383
T = 239
GOTO 9999
*---------ENTRY URQUAD
1012 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 391
B = 245
R = 767
T = 479
GOTO 9999
*---------ENTRY LRQUAD
1014 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 391
B = 0
R = 767
T = 234
GOTO 9999
*---------ENTRY LLQUAD
1013 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 0
B = 0
R = 376
T = 234
GOTO 9999
*---------ENTRY ULQUAD
1011 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 0
B = 245
R = 376
T = 479
GOTO 9999

*---------ENTRY XXQUAD(N)
ENTRY S2X2M(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
NNN = MOD(N-1,4) + 1
IF (NNN.LE.0) NNN = NNN + 4
GOTO (1011,1012,1013,1014) NNN
*---------ENTRY QUADXX(N)
ENTRY S2X2(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
NNN = MOD(N-1,4) + 1
IF (NNN.LE.0) NNN = NNN + 4
GOTO (1001,1002,1003,1004) NNN
*---------ENTRY NON001
2001 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 0
B = 320
R = 255
T = 479
GOTO 9999
*---------ENTRY NON002
2002 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 256
B = 320
R = 511
T = 479
GOTO 9999
*---------ENTRY NON003
2003 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 512
B = 320
R = 767
T = 479
GOTO 9999
*---------ENTRY NON004
2004 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 0
B = 160
R = 255
T = 319
GOTO 9999
*---------ENTRY NON005
2005 CONTINUE
DOCOLS = .FALSE.

DOROWS = .FALSE.
L = 256
B = 160
R = 511
T = 319
GOTO 9999
*---------ENTRY NON006
2006 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 512
B = 160
R = 767
T = 319
GOTO 9999
*---------ENTRY NON007
2007 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 0
B = 0
R = 255
T = 159
GOTO 9999
*---------ENTRY NON008
2008 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 256
B = 0
R = 511
T = 159
GOTO 9999
*---------ENTRY NON009
2009 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 512
B = 0
R = 767
T = 159
GOTO 9999
*---------ENTRY NON00X(N)
ENTRY S3X3(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
NNN = MOD(N-1,9) + 1
IF (NNN.LE.0) NNN = NNN + 9
GOTO (2001,2002,2003,2004,2005,2006,2007,2008,2009) N
*---------ENTRY NONMG1
2011 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 0

B = 325
R = 245
T = 479
GOTO 9999
*---------ENTRY NONMG2
2012 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 261
B = 325
R = 506
T = 479
GOTO 9999
*---------ENTRY NONMG3
2013 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 522
B = 325
R = 767
T = 479
GOTO 9999
*---------ENTRY NONMG4
2014 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 0
B = 162
R = 245
T = 317
GOTO 9999
*---------ENTRY NONMG5
2015 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 261
B = 162
R = 506
T = 317
GOTO 9999
*---------ENTRY NONMG6
2016 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 522
B = 162
R = 767
T = 317
GOTO 9999
*---------ENTRY NONMG7
2017 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 0

B = 0
R = 245
T = 154
GOTO 9999
*---------ENTRY NONMG8
2018 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 261
B = 0
R = 506
T = 154
GOTO 9999
*---------ENTRY NONMG9
2019 CONTINUE
DOCOLS = .FALSE.
DOROWS = .FALSE.
L = 522
B = 0
R = 767
T = 154
GOTO 9999
*---------ENTRY NONMGX(N)
ENTRY S3X3M(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
NNN = MOD(N-1,9) + 1
IF (NNN.LE.0) NNN = NNN + 9
GOTO (2011,2012,2013,2014,2015,2016,2017,2018,2019) NNN
*---------ENTRY HEX001
DOCOLS = .FALSE.
DOROWS = .FALSE.
3001 CONTINUE
L = 0
B = 360
R = 191
T = 479
GOTO 9999
*---------ENTRY HEX002
DOCOLS = .FALSE.
DOROWS = .FALSE.
3002 CONTINUE
L = 192
B = 360
R = 383
T = 479
GOTO 9999
*---------ENTRY HEX003
DOCOLS = .FALSE.
DOROWS = .FALSE.
3003 CONTINUE
L = 384
B = 360
R = 575

T = 479
GOTO 9999
*---------ENTRY HEX004
DOCOLS = .FALSE.
DOROWS = .FALSE.
3004 CONTINUE
L = 576
B = 360
R = 767
T = 479
GOTO 9999
*---------ENTRY HEX005
DOCOLS = .FALSE.
DOROWS = .FALSE.
3005 CONTINUE
L = 0
B = 240
R = 191
T = 359
GOTO 9999
*---------ENTRY HEX006
DOCOLS = .FALSE.
DOROWS = .FALSE.
3006 CONTINUE
L = 192
B = 240
R = 383
T = 359
GOTO 9999
*---------ENTRY HEX007
DOCOLS = .FALSE.
DOROWS = .FALSE.
3007 CONTINUE
L = 384
B = 240
R = 575
T = 359
GOTO 9999
*---------ENTRY HEX008
DOCOLS = .FALSE.
DOROWS = .FALSE.
3008 CONTINUE
L = 576
B = 240
R = 767
T = 359
GOTO 9999
*---------ENTRY HEX009
DOCOLS = .FALSE.
DOROWS = .FALSE.
3009 CONTINUE
L = 0
B = 120
R = 191

T = 239
GOTO 9999
*---------ENTRY HEX010
DOCOLS = .FALSE.
DOROWS = .FALSE.
3010 CONTINUE
L = 192
B = 120
R = 383
T = 239
GOTO 9999
*---------ENTRY HEX011
DOCOLS = .FALSE.
DOROWS = .FALSE.
3011 CONTINUE
L = 384
B = 120
R = 575
T = 239
GOTO 9999
*---------ENTRY HEX012
DOCOLS = .FALSE.
DOROWS = .FALSE.
3012 CONTINUE
L = 576
B = 120
R = 767
T = 239
GOTO 9999
*---------ENTRY HEX013
DOCOLS = .FALSE.
DOROWS = .FALSE.
3013 CONTINUE
L = 0
B = 0
R = 191
T = 119
GOTO 9999
*---------ENTRY HEX014
DOCOLS = .FALSE.
DOROWS = .FALSE.
3014 CONTINUE
L = 192
B = 0
R = 383
T = 119
GOTO 9999
*---------ENTRY HEX015
DOCOLS = .FALSE.
DOROWS = .FALSE.
3015 CONTINUE
L = 384
B = 0
R = 575

T = 119
GOTO 9999
*---------ENTRY HEX016
DOCOLS = .FALSE.
DOROWS = .FALSE.
3016 CONTINUE
L = 576
B = 0
R = 767
T = 119
GOTO 9999
*---------ENTRY S1X4(N)
ENTRY COLS4N(N)
DOCOLS = .TRUE.
GOTO 3555
*---------ENTRY S4X1(N)
ENTRY ROWS4N(N)
DOROWS = .TRUE.
GOTO 3555
*---------ENTRY HEX00X(N)
ENTRY S4X4(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
3555 CONTINUE
NNN = MOD(N-1,16) + 1
IF (NNN.LE.0) NNN = NNN + 16
GOTO (3001,3002,3003,3004,3005,3006,3007,3008,3009,3010,
&
3011,3012,3013,3014,3015,3016) NNN
*---------ENTRY HEXN01
DOCOLS = .FALSE.
DOROWS = .FALSE.
3101 CONTINUE
L = 0
B = 367
R = 181
T = 479
GOTO 9999
*---------ENTRY HEXN02
DOCOLS = .FALSE.
DOROWS = .FALSE.
3102 CONTINUE
L = 195
B = 367
R = 376
T = 479
GOTO 9999
*---------ENTRY HEXN03
DOCOLS = .FALSE.
DOROWS = .FALSE.
3103 CONTINUE
L = 391
B = 367
R = 572

T = 479
GOTO 9999
*---------ENTRY HEXN04
DOCOLS = .FALSE.
DOROWS = .FALSE.
3104 CONTINUE
L = 586
B = 367
R = 767
T = 479
GOTO 9999
*---------ENTRY HEXN05
DOCOLS = .FALSE.
DOROWS = .FALSE.
3105 CONTINUE
L = 0
B = 245
R = 181
T = 356
GOTO 9999
*---------ENTRY HEXN06
DOCOLS = .FALSE.
DOROWS = .FALSE.
3106 CONTINUE
L = 195
B = 245
R = 376
T = 356
GOTO 9999
*---------ENTRY HEXN07
DOCOLS = .FALSE.
DOROWS = .FALSE.
3107 CONTINUE
L = 391
B = 245
R = 572
T = 356
GOTO 9999
*---------ENTRY HEXN08
DOCOLS = .FALSE.
DOROWS = .FALSE.
3108 CONTINUE
L = 586
B = 245
R = 767
T = 356
GOTO 9999
*---------ENTRY HEXN09
DOCOLS = .FALSE.
DOROWS = .FALSE.
3109 CONTINUE
L = 0
B = 123
R = 181

T = 234
GOTO 9999
*---------ENTRY HEXN10
DOCOLS = .FALSE.
DOROWS = .FALSE.
3110 CONTINUE
L = 195
B = 123
R = 376
T = 234
GOTO 9999
*---------ENTRY HEXN11
DOCOLS = .FALSE.
DOROWS = .FALSE.
3111 CONTINUE
L = 391
B = 123
R = 572
T = 234
GOTO 9999
*---------ENTRY HEXN12
DOCOLS = .FALSE.
DOROWS = .FALSE.
3112 CONTINUE
L = 586
B = 123
R = 767
T = 234
GOTO 9999
*---------ENTRY HEXN13
DOCOLS = .FALSE.
DOROWS = .FALSE.
3113 CONTINUE
L = 0
B = 0
R = 181
T = 112
GOTO 9999
*---------ENTRY HEXN14
DOCOLS = .FALSE.
DOROWS = .FALSE.
3114 CONTINUE
L = 195
B = 0
R = 376
T = 112
GOTO 9999
*---------ENTRY HEXN15
DOCOLS = .FALSE.
DOROWS = .FALSE.
3115 CONTINUE
L = 391
B = 0
R = 572

T = 112
GOTO 9999
*---------ENTRY HEXN16
DOCOLS = .FALSE.
DOROWS = .FALSE.
3116 CONTINUE
L = 586
B = 0
R = 767
T = 112
GOTO 9999
*---------ENTRY S1X4M(N)
ENTRY COLS4(N)
DOCOLS = .TRUE.
GOTO 3556
*---------ENTRY S4X1M(N)
ENTRY ROWS4(N)
DOROWS = .TRUE.
GOTO 3556
*---------ENTRY HEXN0X(N)
ENTRY HEXMGX(N)
ENTRY S4X4M(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
3556 CONTINUE
NNN = MOD(N-1,16) + 1
IF (NNN.LE.0) NNN = NNN + 16
GOTO (3101,3102,3103,3104,3105,3106,3107,3108,3109,3110,
&
3111,3112,3113,3114,3115,3116) NNN
GOTO 9000
*---------ENTRY S1X6(N)
DOCOLS = .TRUE.
GOTO 4506
*---------ENTRY S6X1(N)
DOROWS = .TRUE.
GOTO 4506
*---------ENTRY S6X6(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4506 CONTINUE
NN = MOD(N+35,36)
N = NN + 1
IV = 6 - NN/6
IH = MOD(NN,6) + 1
L = (IH-1)*128
R = IH*128 - 1
B = (IV-1)*80
T = IV*80 - 1
GOTO 9999
*---------ENTRY S1X8(N)
DOCOLS = .TRUE.
GOTO 4508

*---------ENTRY S8X1(N)
DOROWS = .TRUE.
GOTO 4508
*---------ENTRY S8X8(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4508 CONTINUE
NN = MOD(N+63,64)
N = NN + 1
IV = 8 - NN/8
IH = MOD(NN,8) + 1
L = (IH-1)*96
R = IH*96 - 1
B = (IV-1)*60
T = IV*60 - 1
GOTO 9999
*---------ENTRY S1XC(N)
DOCOLS = .TRUE.
GOTO 4512
*---------ENTRY SCX1(N)
DOROWS = .TRUE.
GOTO 4512
*---------ENTRY SCXC(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4512 CONTINUE
NN = MOD(N+143,144)
N = NN + 1
IV = 12 - NN/12
IH = MOD(NN,12) + 1
L = (IH-1)*64
R = IH*64 - 1
B = (IV-1)*40
T = IV*40 - 1
GOTO 9999
*---------ENTRY S1X6M(N)
ENTRY COLS6(N)
DOCOLS = .TRUE.
GOTO 4606
*---------ENTRY S6X1M(N)
ENTRY ROWS6(N)
DOROWS = .TRUE.
GOTO 4606
*---------ENTRY S6X6M(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4606 CONTINUE
NN = MOD(N+35,36)
N = NN + 1
IV = 6 - NN/6
IH = MOD(NN,6) + 1
L = (IH-1)*128 + 1

R = IH*128 - 2
B = (IV-1)*80 + 1
T = IV*80 - 2
GOTO 9999
*---------ENTRY S1X8M(N)
ENTRY COLS8(N)
DOCOLS = .TRUE.
GOTO 4608
*---------ENTRY S8X1M(N)
ENTRY ROWS8(N)
DOROWS = .TRUE.
GOTO 4608
*---------ENTRY S8X8M(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4608 CONTINUE
NN = MOD(N+63,64)
N = NN + 1
IV = 8 - NN/8
IH = MOD(NN,8) + 1
L = (IH-1)*96 + 1
R = IH*96 - 2
B = (IV-1)*60 + 1
T = IV*60 - 2
GOTO 9999
*---------ENTRY S1XCM(N)
ENTRY COLS12(N)
ENTRY COLSC(N)
DOCOLS = .TRUE.
GOTO 4612
*---------ENTRY SCX1M(N)
ENTRY ROWS12(N)
ENTRY ROWSC(N)
DOROWS = .TRUE.
GOTO 4612
*---------ENTRY SCXCM(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4612 CONTINUE
NN = MOD(N+143,144)
N = NN + 1
IV = 12 - NN/12
IH = MOD(NN,12) + 1
L = (IH-1)*64 + 1
R = IH*64 - 2
B = (IV-1)*40 + 1
T = IV*40 - 2
GOTO 9999
*---------ENTRY S1XG(N)
DOCOLS = .TRUE.
GOTO 4516
*---------ENTRY SGX1(N)

DOROWS = .TRUE.
GOTO 4516
*---------ENTRY SGXG(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4516 CONTINUE
NN = MOD(N+255,256)
N = NN + 1
IV = 16 - NN/16
IH = MOD(NN,16) + 1
L = (IH-1)*48
R = IH*48 - 1
B = (IV-1)*30
T = IV*30 - 1
GOTO 9999
*---------ENTRY S1XGM(N)
ENTRY COLS16(N)
ENTRY COLSG(N)
DOCOLS = .TRUE.
GOTO 4616
*---------ENTRY SGX1M(N)
ENTRY ROWS16(N)
ENTRY ROWSG(N)
DOROWS = .TRUE.
GOTO 4616
*---------ENTRY SGXGM(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4616 CONTINUE
NN = MOD(N+255,256)
N = NN + 1
IV = 16 - NN/16
IH = MOD(NN,16) + 1
L = (IH-1)*48 + 1
R = IH*48 - 2
B = (IV-1)*30 + 1
T = IV*30 - 2
GOTO 9999
*---------ENTRY S3X1(N)
ENTRY S3X1M(N)
ENTRY ROWS3(N)
M = MOD(N-1,3) + 1
GOTO (9871,9872,9873) M
9871 CONTINUE
*---------ENTRY LTHIRD
L = 0
R = 245
GOTO 9899
9872 CONTINUE
*---------ENTRY CTHIRD
L = 261
R = 506
GOTO 9899

9873 CONTINUE
*---------ENTRY RTHIRD
L = 522
R = 767
9899 B = 0
T = 479
DOCOLS = .TRUE.
DOROWS = .FALSE.
GOTO 9999
*---------ENTRY S2X1(N)
ENTRY S2X1M(N)
ENTRY ROWS2(N)
IF (MOD(N,2).NE.1) GOTO 9870
*---------ENTRY LEFTSD
L = 0
R = 376
GOTO 9899
9870 CONTINUE
*---------ENTRY RGHTSD
L = 391
R = 767
GOTO 9899
*---------ENTRY S1X3(N)
ENTRY S1X3M(N)
ENTRY COLS3(N)
M = MOD(N-1,3) + 1
GOTO (9874,9875,9876) M
9874 CONTINUE
*---------ENTRY UTHIRD
B = 325
T = 479
GOTO 9898
*---------ENTRY U2THRD
B = 162
T = 479
GOTO 9898
9875 CONTINUE
*---------ENTRY MTHIRD
B = 162
T = 317
GOTO 9898
*---------ENTRY B2THRD
B = 0
T = 317
GOTO 9898
9876 CONTINUE
*---------ENTRY BTHIRD
B = 0
T = 154
9898 L = 0

R = 767
DOCOLS = .FALSE.
DOROWS = .TRUE.
GOTO 9999
*---------ENTRY S1X2(N)
ENTRY S1X2M(N)
ENTRY COLS2(N)
IF (MOD(N,2).NE.1) GOTO 9877
*---------ENTRY TOPHLF
B = 245
T = 479
GOTO 9898
9877 CONTINUE
*---------ENTRY BOTHLF
B = 0
T = 234
GOTO 9898
*---------ENTRY MIDHLF
B = 120
T = 359
GOTO 9898
*---------* set plot window to Nth of IX regions horizontally and Mth of IY regions vertic
ally
* no margins
ENTRY SKXL(N,IX,M,IIY)
IF (IX.LT.2) THEN
IIX = 2
ELSEIF (IX.EQ.5) THEN
IIX = 6
ELSEIF (IX.EQ.7) THEN
IIX = 8
ELSEIF (IX.GE.9.AND.IX.LE.11) THEN
IIX = 12
ELSEIF (IX.GE.13) THEN
IIX = 16
ENDIF
IF (IY.LT.2) THEN
IIY = 2
ELSEIF (IY.EQ.5) THEN
IIY = 6
ELSEIF (IY.EQ.7) THEN
IIY = 8
ELSEIF (IY.GE.9.AND.IY.LE.11) THEN
IIY = 12
ELSEIF (IY.GE.13) THEN
IIY = 16
ENDIF
NN = MOD(N,IIX) + IIX
NN = MOD(NN,IIX)
IF (NN.EQ.0) NN = IIX
MM = MOD(M,IIY) + IIY
MM = MOD(MM,IIY)
IF (MM.EQ.0) MM = IIY
DX = 768.0/NN + 0.5
DY = 768.0/MM + 0.5

L = DX * (NN-1)
R = (DX * NN) - 1
B = DY * (NN-1)
T = (DY * NN) - 1
GOTO 9998
*---------* set plot window to Nth of IX regions horizontally and Mth of IY regions vertic
ally
* with margins
ENTRY SKXLM(N,IX,M,IIY)
IF (IX.LT.2) THEN
IIX = 2
ELSEIF (IX.EQ.5) THEN
IIX = 6
ELSEIF (IX.EQ.7) THEN
IIX = 8
ELSEIF (IX.GE.9.AND.IX.LE.11) THEN
IIX = 12
ELSEIF (IX.GE.13) THEN
IIX = 16
ENDIF
IF (IY.LT.2) THEN
IIY = 2
ELSEIF (IY.EQ.5) THEN
IIY = 6
ELSEIF (IY.EQ.7) THEN
IIY = 8
ELSEIF (IY.GE.9.AND.IY.LE.11) THEN
IIY = 12
ELSEIF (IY.GE.13) THEN
IIY = 16
ENDIF
NN = MOD(N,IIX) + IIX
NN = MOD(NN,IIX)
IF (NN.EQ.0) NN = IIX
MM = MOD(M,IIY) + IIY
MM = MOD(MM,IIY)
IF (MM.EQ.0) MM = IIY
DX = 768.0/NN + 0.5
DY = 768.0/MM + 0.5
L = DX * (NN-1)
IF (L.NE.0) L = L + 1
R = (DX * NN) - 1
IF (R.NE.767) R = R - 1
B = DY * (NN-1)
IF (B.NE.0) B = B + 1
T = (DY * NN) - 1
IF (T.NE.479) T = T - 1
GOTO 9998
END
*
*----------*---------*---------*---------*---------*--*--*---------*---------*---------*---------*---------*----------*---------*---------*---------*---------*--*
* this is overflow from FULLSC; CS/9000 FORTRAN has 32K code limit
*
SUBROUTINE FSOVFL
INTEGER*4 L,B,R,T,N,LL,BB,RR,TT,NNN,DX,DY,IX,IY,IIX,IIY,M,NN,MM
LOGICAL*2 USEWIN,DOCOLS,DOROWS

COMMON /WIN/USEWIN,L,B,R,T
SAVE /WIN/,DOCOLS,DOROWS
DATA DOCOLS/.FALSE./,DOROWS/.FALSE./
*---------9999 USEWIN = .TRUE.
IF (DOROWS.AND.DOCOLS) THEN
DOCOLS = .FALSE.
DOROWS = .FALSE.
ELSEIF (DOROWS) THEN
L = 0
R = 767
ELSEIF (DOCOLS) THEN
B = 0
T = 479
ENDIF
9998 CONTINUE
IF (T.GT.479) T = 479
IF (R.GT.767) R = 767
IF (B.LT.0) B = 0
IF (L.LT.0) L = 0
USEWIN = .NOT. (L.EQ.0.AND.B.EQ.0.AND.R.EQ.767.AND.T.EQ.479)
LL = L
BB = B
RR = R
TT = T
CALL SETWIN(LL,BB,RR,TT)
IF (USEWIN) THEN
CALL SMPMOD(2)
ELSE
CALL SMPMOD(0)
ENDIF
RETURN
*---------ENTRY S1X5(N)
DOCOLS = .TRUE.
GOTO 4505
*---------ENTRY S5X1(N)
DOROWS = .TRUE.
GOTO 4505
*---------ENTRY S5X5(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4505 CONTINUE
NN = MOD(N+24,25)
N = NN + 1
IV = 5 - NN/5
IH = MOD(NN,5) + 1
L = (IH-1)*153
R = IH*153 - 1
B = (IV-1)*96
T = IV*96 - 1
GOTO 9999
*---------ENTRY S1X7(N)
DOCOLS = .TRUE.
GOTO 4507
*---------ENTRY S7X1(N)

DOROWS = .TRUE.
GOTO 4507
*---------ENTRY S7X7(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4507 CONTINUE
NN = MOD(N+48,49)
N = NN + 1
IV = 7 - NN/7
IH = MOD(NN,7) + 1
L = (IH-1)*109
R = IH*109 - 1
B = (IV-1)*68
T = IV*68 - 1
GOTO 9999
*---------ENTRY S1X9(N)
DOCOLS = .TRUE.
GOTO 4509
*---------ENTRY S9X1(N)
DOROWS = .TRUE.
GOTO 4509
*---------ENTRY S9X9(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4509 CONTINUE
NN = MOD(N+80,81)
N = NN + 1
IV = 9 - NN/9
IH = MOD(NN,9) + 1
L = (IH-1)*85
R = IH*85 - 1
B = (IV-1)*53
T = IV*53 - 1
GOTO 9999
*---------ENTRY S1XA(N)
DOCOLS = .TRUE.
GOTO 4510
*---------ENTRY SAX1(N)
DOROWS = .TRUE.
GOTO 4510
*---------ENTRY SAXA(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4510 CONTINUE
NN = MOD(N+99,100)
N = NN + 1
IV = 10 - NN/10
IH = MOD(NN,10) + 1
L = (IH-1)*76
R = IH*76 - 1
B = (IV-1)*48
T = IV*48 - 1
GOTO 9999

*---------ENTRY S1XB(N)
DOCOLS = .TRUE.
GOTO 4511
*---------ENTRY SBX1(N)
DOROWS = .TRUE.
GOTO 4511
*---------ENTRY SBXB(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4511 CONTINUE
NN = MOD(N+120,121)
N = NN + 1
IV = 11 - NN/11
IH = MOD(NN,11) + 1
L = (IH-1)*69
R = IH*69 - 1
B = (IV-1)*43
T = IV*43 - 1
GOTO 9999
*---------ENTRY S1XD(N)
DOCOLS = .TRUE.
GOTO 4513
*---------ENTRY SDX1(N)
DOROWS = .TRUE.
GOTO 4513
*---------ENTRY SDXD(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4513 CONTINUE
NN = MOD(N+168,169)
N = NN + 1
IV = 13 - NN/13
IH = MOD(NN,13) + 1
L = (IH-1)*59
R = IH*59 - 1
B = (IV-1)*36
T = IV*36 - 1
GOTO 9999
*---------ENTRY S1XE(N)
DOCOLS = .TRUE.
GOTO 4514
*---------ENTRY SEX1(N)
DOROWS = .TRUE.
GOTO 4514
*---------ENTRY SEXE(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4514 CONTINUE
NN = MOD(N+195,196)
N = NN + 1
IV = 14 - NN/14

IH = MOD(NN,14) + 1
L = (IH-1)*54
R = IH*54 - 1
B = (IV-1)*34
T = IV*34 - 1
GOTO 9999
*---------ENTRY S1XF(N)
DOCOLS = .TRUE.
GOTO 4515
*---------ENTRY SFX1(N)
DOROWS = .TRUE.
GOTO 4515
*---------ENTRY SFXF(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4515 CONTINUE
NN = MOD(N+224,225)
N = NN + 1
IV = 15 - NN/15
IH = MOD(NN,15) + 1
L = (IH-1)*51
R = IH*51 - 1
B = (IV-1)*32
T = IV*32 - 1
GOTO 9999
*---------ENTRY S1X5M(N)
ENTRY COLS5(N)
DOCOLS = .TRUE.
GOTO 4605
*---------ENTRY S5X1M(N)
ENTRY ROWS5(N)
DOROWS = .TRUE.
GOTO 4605
*---------ENTRY S5X5M(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4605 CONTINUE
NN = MOD(N+24,25)
N = NN + 1
IV = 5 - NN/5
IH = MOD(NN,5) + 1
L = (IH-1)*153 + 1
R = IH*153 - 2
B = (IV-1)*96 + 1
T = IV*96 - 2
GOTO 9999
*---------ENTRY S1X7M(N)
ENTRY COLS7(N)
DOCOLS = .TRUE.
GOTO 4607
*---------ENTRY S7X1M(N)
ENTRY ROWS7(N)

DOROWS = .TRUE.
GOTO 4607
*---------ENTRY S7X7M(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4607 CONTINUE
NN = MOD(N+48,49)
N = NN + 1
IV = 7 - NN/7
IH = MOD(NN,7) + 1
L = (IH-1)*109 + 1
R = IH*109 - 2
B = (IV-1)*68 + 1
T = IV*68 - 2
GOTO 9999
*---------ENTRY S1X9M(N)
ENTRY COLS9(N)
DOCOLS = .TRUE.
GOTO 4609
*---------ENTRY S9X1M(N)
ENTRY ROWS9(N)
DOROWS = .TRUE.
GOTO 4609
*---------ENTRY S9X9M(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4609 CONTINUE
NN = MOD(N+80,81)
N = NN + 1
IV = 9 - NN/9
IH = MOD(NN,9) + 1
L = (IH-1)*85 + 1
R = IH*85 - 2
B = (IV-1)*53 + 1
T = IV*53 - 2
GOTO 9999
*---------ENTRY S1XAM(N)
ENTRY COLSA(N)
ENTRY COLS10(N)
DOCOLS = .TRUE.
GOTO 4610
*---------ENTRY SAX1M(N)
ENTRY ROWSA(N)
ENTRY ROWS10(N)
DOROWS = .TRUE.
GOTO 4610
*---------ENTRY SAXAM(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4610 CONTINUE
NN = MOD(N+99,100)
N = NN + 1
IV = 10 - NN/10

IH = MOD(NN,10) + 1
L = (IH-1)*76 + 1
R = IH*76 - 2
B = (IV-1)*48 + 1
T = IV*48 - 2
GOTO 9999
*---------ENTRY S1XBM(N)
ENTRY COLSB(N)
ENTRY COLS11(N)
DOCOLS = .TRUE.
GOTO 4611
*---------ENTRY SBX1M(N)
ENTRY ROWSB(N)
ENTRY ROWS11(N)
DOROWS = .TRUE.
GOTO 4611
*---------ENTRY SBXBM(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4611 CONTINUE
NN = MOD(N+120,121)
N = NN + 1
IV = 11 - NN/11
IH = MOD(NN,11) + 1
L = (IH-1)*69 + 1
R = IH*69 - 2
B = (IV-1)*43 + 1
T = IV*43 - 2
GOTO 9999
*---------ENTRY S1XDM(N)
ENTRY COLSD(N)
ENTRY COLS13(N)
DOCOLS = .TRUE.
GOTO 4613
*---------ENTRY SDX1M(N)
ENTRY ROWSD(N)
ENTRY ROWS13(N)
DOROWS = .TRUE.
GOTO 4613
*---------ENTRY SDXDM(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4613 CONTINUE
NN = MOD(N+168,169)
N = NN + 1
IV = 13 - NN/13
IH = MOD(NN,13) + 1
L = (IH-1)*59 + 1
R = IH*59 - 2
B = (IV-1)*36 + 1
T = IV*36 - 2
GOTO 9999
*---------ENTRY S1XEM(N)

ENTRY COLSE(N)
ENTRY COLS14(N)
DOCOLS = .TRUE.
GOTO 4614
*---------ENTRY SEX1M(N)
ENTRY ROWSE(N)
ENTRY ROWS14(N)
DOROWS = .TRUE.
GOTO 4614
*---------ENTRY SEXEM(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4614 CONTINUE
NN = MOD(N+195,196)
N = NN + 1
IV = 14 - NN/14
IH = MOD(NN,14) + 1
L = (IH-1)*54 + 1
R = IH*54 - 2
B = (IV-1)*34 + 1
T = IV*34 - 2
GOTO 9999
*---------ENTRY S1XFM(N)
ENTRY COLSF(N)
ENTRY COLS15(N)
DOCOLS = .TRUE.
GOTO 4615
*---------ENTRY SFX1M(N)
ENTRY ROWSF(N)
ENTRY ROWS15(N)
DOROWS = .TRUE.
GOTO 4615
*---------ENTRY SFXFM(N)
DOCOLS = .FALSE.
DOROWS = .FALSE.
4615 CONTINUE
NN = MOD(N+224,225)
N = NN + 1
IV = 15 - NN/15
IH = MOD(NN,15) + 1
L = (IH-1)*51 + 1
R = IH*51 - 2
B = (IV-1)*32 + 1
T = IV*32 - 2
GOTO 9999
END
*-----------------------------------------------------------------------------$SEGMENT OLD_WNDW
*---------* This is an older form of the multi-window plotting package, MLTPLT has overtak
en
* it. This is a twin to BARG49 (next) which plots bar graphs.
SUBROUTINE PLOT49(AR,NOPNTS,NOPLTS)
*---------ENTRY PLUL49(AR,NOPNTS,NOPLTS)

REAL*4 AR(NOPNTS,2,NOPLTS)
INTEGER*4 NOPNTS,NOPLTS
LOGICAL*2 WAIT,FRC9,FRC16,LR,GETOUT,DODOTS,ABSCAL
COMMON /PLTEXT/GETOUT
WAIT = .TRUE.
GOTO 9999
*---------ENTRY PLOT9W(AR,NOPNTS,NOPLTS)
FRC9 = .TRUE.
WAIT = .TRUE.
LR = .FALSE.
GOTO 9998
*---------ENTRY PLT9NW(AR,NOPNTS,NOPLTS)
FRC9 = .TRUE.
WAIT = .FALSE.
LR = .FALSE.
GOTO 9998
*---------ENTRY PLOT16(AR,NOPNTS,NOPLTS)
FRC16 = .TRUE.
WAIT = .TRUE.
LR = .FALSE.
GOTO 9998
*---------ENTRY PLT16N(AR,NOPNTS,NOPLTS)
FRC16 = .TRUE.
WAIT = .FALSE.
LR = .FALSE.
GOTO 9998
*---------ENTRY PLRT9W(AR,NOPNTS,NOPLTS)
FRC9 = .TRUE.
WAIT = .TRUE.
LR = .TRUE.
GOTO 9998
*---------ENTRY PLR9NW(AR,NOPNTS,NOPLTS)
FRC9 = .TRUE.
WAIT = .FALSE.
LR = .TRUE.
GOTO 9998
*---------ENTRY PLRT16(AR,NOPNTS,NOPLTS)
FRC16 = .TRUE.
WAIT = .TRUE.
LR = .TRUE.
GOTO 9998
*---------ENTRY PLR16N(AR,NOPNTS,NOPLTS)
FRC16 = .TRUE.
WAIT = .FALSE.
LR = .TRUE.
GOTO 9998
*---------ENTRY PLNW49(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
9999 CONTINUE
FRC9 = .FALSE.
FRC16 = .FALSE.

LR = .FALSE.
9998 CONTINUE
DODOTS = .FALSE.
ABSCAL = .FALSE.
9997 CONTINUE
CALL FULLSC
CALL GRCLS
GETOUT = .FALSE.
IF (NOPLTS.EQ.1) THEN
IF (DODOTS.AND.ABSCAL) THEN
CALL DLATNW(AR,NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DLOTNW(AR,NOPNTS,NOPLTS)
ELSE
CALL PLOTNW(AR,NOPNTS,NOPLTS)
ENDIF
ELSEIF ((NOPLTS.GT.1.AND.NOPLTS.LE.4).AND..NOT.(FRC9.OR.FRC16)) THEN
DO 1 I = 1,NOPLTS
J = I
IF (LR) J = 5 - I
IF (GETOUT) GOTO 9772
CALL XXQUAD(J)
IF (DODOTS.AND.ABSCAL) THEN
CALL DLATNW(AR(1,1,I),NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DLOTNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PLOTNW(AR(1,1,I),NOPNTS,1)
ENDIF
1
CONTINUE
ELSEIF (FRC9.OR.(NOPLTS.GT.4.AND.NOPLTS.LE.9)) THEN
NPLTS = MIN(NOPLTS,9)
DO 2 I = 1,NPLTS
J = I
IF (LR) J = 10 - I
IF (GETOUT) GOTO 9772
CALL NONMGX(J)
IF (DODOTS.AND.ABSCAL) THEN
IF (NPLTS.LT.9.OR.NOPLTS.LE.9) THEN
CALL DLATNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL DLATNW(AR(1,1,I),NOPNTS,NOPLTS-NPLTS+1)
ENDIF
ELSEIF (DODOTS) THEN
IF (NPLTS.LT.9.OR.NOPLTS.LE.9) THEN
CALL DLOTNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL DLOTNW(AR(1,1,I),NOPNTS,NOPLTS-NPLTS+1)
ENDIF
ELSE
IF (NPLTS.LT.9.OR.NOPLTS.LE.9) THEN
CALL PLOTNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PLOTNW(AR(1,1,I),NOPNTS,NOPLTS-NPLTS+1)
ENDIF
ENDIF
2
CONTINUE
ELSEIF (FRC16.OR.(NOPLTS.GT.9.AND.NOPLTS.LE.16)) THEN
NPLTS = MIN(NOPLTS,16)
DO 3 I = 1,NPLTS

J = I
IF (LR) J = 17 - I
IF (GETOUT) GOTO 9772
CALL HEXN0X(J)
IF (DODOTS.AND.ABSCAL) THEN
IF (NPLTS.LT.16.OR.NOPLTS.LE.16) THEN
CALL DLATNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL DLATNW(AR(1,1,I),NOPNTS,NOPLTS-NPLTS+1)
ENDIF
ELSEIF (DODOTS) THEN
IF (NPLTS.LT.16.OR.NOPLTS.LE.16) THEN
CALL DLOTNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL DLOTNW(AR(1,1,I),NOPNTS,NOPLTS-NPLTS+1)
ENDIF
ELSE
IF (NPLTS.LT.16.OR.NOPLTS.LE.16) THEN
CALL PLOTNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PLOTNW(AR(1,1,I),NOPNTS,NOPLTS-NPLTS+1)
ENDIF
ENDIF
3
CONTINUE
ELSEIF (NOPLTS.LE.36) THEN
DO 4 I = 1,NOPLTS
J = I
IF (LR) J = 37 - I
IF (GETOUT) GOTO 9772
CALL S6X6M(J)
IF (DODOTS.AND.ABSCAL) THEN
CALL DLATNW(AR(1,1,I),NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DLOTNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PLOTNW(AR(1,1,I),NOPNTS,1)
ENDIF
4
CONTINUE
ELSEIF (NOPLTS.LE.64) THEN
DO 5 I = 1,NOPLTS
J = I
IF (LR) J = 65 - I
IF (GETOUT) GOTO 9772
CALL S8X8M(J)
IF (DODOTS.AND.ABSCAL) THEN
CALL DLATNW(AR(1,1,I),NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DLOTNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PLOTNW(AR(1,1,I),NOPNTS,1)
ENDIF
5
CONTINUE
ELSEIF (NOPLTS.LE.144) THEN
DO 6 I = 1,NOPLTS
J = I
IF (LR) J = 145 - I
IF (GETOUT) GOTO 9772
CALL SCXCM(J)
IF (DODOTS.AND.ABSCAL) THEN
CALL DLATNW(AR(1,1,I),NOPNTS,NOPLTS)

ELSEIF (DODOTS) THEN


CALL DLOTNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PLOTNW(AR(1,1,I),NOPNTS,1)
ENDIF
6
CONTINUE
ELSEIF (NOPLTS.LE.256) THEN
DO 7 I = 1,NOPLTS
J = I
IF (LR) J = 257 - I
IF (GETOUT) GOTO 9772
CALL SGXGM(J)
IF (DODOTS.AND.ABSCAL) THEN
CALL DLATNW(AR(1,1,I),NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DLOTNW(AR(1,1,I),NOPNTS,1)
ELSE
CALL PLOTNW(AR(1,1,I),NOPNTS,1)
ENDIF
7
CONTINUE
ELSE
IF (DODOTS.AND.ABSCAL) THEN
CALL DLATNW(AR(1,1,I),NOPNTS,NOPLTS)
ELSEIF (DODOTS) THEN
CALL DLOTNW(AR(1,1,I),NOPNTS,NOPLTS)
ELSE
CALL PLOTNW(AR(1,1,I),NOPNTS,NOPLTS)
ENDIF
ENDIF
IF (WAIT) THEN
CALL DOWAIT
CALL PLTTRM
ENDIF
*
RETURN
9772 CONTINUE
CALL PXLSET
CALL FILWRD(-1)
CALL FULLSC
RETURN
*---------ENTRY DLAT49(AR,NOPNTS,NOPLTS)
FRC9 = .FALSE.
WAIT = .TRUE.
LR = .FALSE.
DODOTS = .TRUE.
ABSCAL = .TRUE.
GOTO 9997
*---------ENTRY DLOT49(AR,NOPNTS,NOPLTS)
FRC9 = .FALSE.
WAIT = .TRUE.
LR = .FALSE.
DODOTS = .TRUE.
ABSCAL = .FALSE.
GOTO 9997
*---------ENTRY DLNW49(AR,NOPNTS,NOPLTS)
FRC9 = .FALSE.
WAIT = .FALSE.
LR = .FALSE.

DODOTS = .TRUE.
ABSCAL = .FALSE.
GOTO 9997
*---------ENTRY DLOT9W(AR,NOPNTS,NOPLTS)
FRC9 = .TRUE.
WAIT = .TRUE.
LR = .FALSE.
DODOTS = .TRUE.
ABSCAL = .FALSE.
GOTO 9997
*---------ENTRY DLT9NW(AR,NOPNTS,NOPLTS)
FRC9 = .TRUE.
WAIT = .FALSE.
LR = .FALSE.
DODOTS = .TRUE.
ABSCAL = .FALSE.
GOTO 9997
*---------ENTRY DLOT16(AR,NOPNTS,NOPLTS)
FRC16 = .TRUE.
WAIT = .TRUE.
LR = .FALSE.
DODOTS = .TRUE.
ABSCAL = .FALSE.
GOTO 9997
*---------ENTRY DLT16N(AR,NOPNTS,NOPLTS)
FRC16 = .TRUE.
WAIT = .FALSE.
LR = .FALSE.
DODOTS = .TRUE.
ABSCAL = .FALSE.
GOTO 9997
*---------ENTRY DLRT9W(AR,NOPNTS,NOPLTS)
FRC9 = .TRUE.
WAIT = .TRUE.
LR = .TRUE.
DODOTS = .TRUE.
ABSCAL = .FALSE.
GOTO 9997
*---------ENTRY DLR9NW(AR,NOPNTS,NOPLTS)
FRC9 = .TRUE.
WAIT = .FALSE.
LR = .TRUE.
DODOTS = .TRUE.
ABSCAL = .FALSE.
GOTO 9997
*---------ENTRY DLRT16(AR,NOPNTS,NOPLTS)
FRC16 = .TRUE.
WAIT = .TRUE.
LR = .TRUE.
DODOTS = .TRUE.
ABSCAL = .FALSE.
GOTO 9997
*----------

ENTRY DLR16N(AR,NOPNTS,NOPLTS)
FRC16 = .TRUE.
WAIT = .FALSE.
LR = .TRUE.
DODOTS = .TRUE.
ABSCAL = .FALSE.
GOTO 9997
END
*-----------------------------------------------------------------------------* This uses BARGPH to plot basic bar graphs into multiple windows up to 256
* (16 by 16) windows
*
SUBROUTINE BARG49(AR,NOPNTS,NOPLTS)
REAL*4 AR(NOPNTS,2,NOPLTS)
INTEGER*4 NOPNTS,NOPLTS,I,J,NPLTS
LOGICAL*2 WAIT,FRC9,FRC16,LR,GETOUT,REVERS
COMMON /PLTEXT/GETOUT
WAIT = .TRUE.
GOTO 9999
*---------ENTRY BLRG49(AR,NOPNTS,NOPLTS)
FRC9 = .FALSE.
FRC16 = .FALSE.
WAIT = .TRUE.
LR = .TRUE.
REVERS = .FALSE.
GOTO 9998
*---------ENTRY BRRG49(AR,NOPNTS,NOPLTS)
FRC9 = .FALSE.
FRC16 = .FALSE.
WAIT = .TRUE.
LR = .FALSE.
REVERS = .TRUE.
GOTO 9998
*---------ENTRY BRLG49(AR,NOPNTS,NOPLTS)
FRC9 = .FALSE.
FRC16 = .FALSE.
WAIT = .TRUE.
LR = .TRUE.
REVERS = .TRUE.
GOTO 9998
*---------ENTRY BARG9W(AR,NOPNTS,NOPLTS)
FRC16 = .FALSE.
FRC9 = .TRUE.
WAIT = .TRUE.
LR = .FALSE.
REVERS = .FALSE.
GOTO 9998
*---------ENTRY BAR9NW(AR,NOPNTS,NOPLTS)
FRC16 = .FALSE.
FRC9 = .TRUE.
WAIT = .FALSE.
LR = .FALSE.
REVERS = .FALSE.
GOTO 9998
*----------

ENTRY BARG16(AR,NOPNTS,NOPLTS)
FRC9 = .FALSE.
FRC16 = .TRUE.
WAIT = .TRUE.
LR = .FALSE.
REVERS = .FALSE.
GOTO 9998
*---------ENTRY BAR16N(AR,NOPNTS,NOPLTS)
FRC9 = .FALSE.
FRC16 = .TRUE.
WAIT = .FALSE.
LR = .FALSE.
REVERS = .FALSE.
GOTO 9998
*---------ENTRY BLRT9W(AR,NOPNTS,NOPLTS)
FRC16 = .FALSE.
FRC9 = .TRUE.
WAIT = .TRUE.
LR = .TRUE.
REVERS = .FALSE.
GOTO 9998
*---------ENTRY BLR9NW(AR,NOPNTS,NOPLTS)
FRC16 = .FALSE.
FRC9 = .TRUE.
WAIT = .FALSE.
LR = .TRUE.
REVERS = .FALSE.
GOTO 9998
*---------ENTRY BLRT16(AR,NOPNTS,NOPLTS)
FRC9 = .FALSE.
FRC16 = .TRUE.
WAIT = .TRUE.
LR = .TRUE.
REVERS = .FALSE.
GOTO 9998
*---------ENTRY BLR16N(AR,NOPNTS,NOPLTS)
FRC9 = .FALSE.
FRC16 = .TRUE.
WAIT = .FALSE.
LR = .TRUE.
REVERS = .FALSE.
GOTO 9998
*---------ENTRY BRNW49(AR,NOPNTS,NOPLTS)
WAIT = .FALSE.
9999 CONTINUE
FRC9 = .FALSE.
FRC16 = .FALSE.
LR = .FALSE.
REVERS = .FALSE.
9998 CONTINUE
GETOUT = .FALSE.
CALL FULLSC
CALL GRCLS
IF (NOPLTS.EQ.1) THEN

IF (REVERS.AND..NOT.(FRC9.OR.FRC16)) THEN
CALL BRRGNW(AR,NOPNTS)
ELSE
CALL BARGNW(AR,NOPNTS)
ENDIF
ELSEIF ((NOPLTS.GT.1.AND.NOPLTS.LE.4).AND..NOT.(FRC9.OR.FRC16)) THEN
DO 1 I = 1,NOPLTS
J = I
IF (LR) J = 5 - I
CALL XXQUAD(J)
IF (GETOUT) GOTO 9772
IF (REVERS) THEN
CALL BRRGNW(AR(1,1,I),NOPNTS)
ELSE
CALL BARGNW(AR(1,1,I),NOPNTS)
ENDIF
1
CONTINUE
J = 4
IF (LR) J = 1
CALL XXQUAD(J)
ELSEIF (FRC9.OR.(NOPLTS.GT.3.AND.NOPLTS.LE.8)) THEN
NPLTS = MIN(8,NOPLTS)
DO 2 I = 1,NPLTS
J = I
IF (LR) J = 10 - I
CALL NONMGX(J)
IF (GETOUT) GOTO 9772
IF (REVERS) THEN
CALL BRRGNW(AR(1,1,I),NOPNTS)
ELSE
CALL BARGNW(AR(1,1,I),NOPNTS)
ENDIF
2
CONTINUE
J = 9
IF (LR) J = 1
CALL NONMGX(J)
IF (REVERS) THEN
CALL PLRTNW(AR(1,1,I),NOPNTS,NOPLTS-8)
ELSE
CALL PLOTNW(AR(1,1,I),NOPNTS,NOPLTS-8)
ENDIF
ELSEIF (FRC16.OR.(NOPLTS.LE.15.AND.NOPLTS.GT.8)) THEN
NPLTS = MIN(15,NOPLTS)
DO 3 I = 1,NPLTS
J = I
IF (LR) J = 17 - I
CALL HEXN0X(J)
IF (GETOUT) GOTO 9772
IF (REVERS) THEN
CALL BRRGNW(AR(1,1,I),NOPNTS)
ELSE
CALL BARGNW(AR(1,1,I),NOPNTS)
ENDIF
3
CONTINUE
J = 16
IF (LR) J = 1
CALL HEXN0X(J)
IF (REVERS) THEN
CALL PLRTNW(AR(1,1,I),NOPNTS,NOPLTS-15)
ELSE

7
*
*
*
*

CALL PLOTNW(AR(1,1,I),NOPNTS,NOPLTS-15)
ENDIF
ELSEIF (NOPLTS.LE.36) THEN
DO 4 I = 1,NOPLTS
J = I
IF (LR) J = 37 - I
CALL S6X6M(J)
IF (GETOUT) GOTO 9772
IF (REVERS) THEN
CALL BRRGNW(AR(1,1,I),NOPNTS)
ELSE
CALL BARGNW(AR(1,1,I),NOPNTS)
ENDIF
CONTINUE
ELSEIF (NOPLTS.LE.64) THEN
DO 5 I = 1,NOPLTS
J = I
IF (LR) J = 65 - I
CALL S8X8M(J)
IF (GETOUT) GOTO 9772
IF (REVERS) THEN
CALL BRRGNW(AR(1,1,I),NOPNTS)
ELSE
CALL BARGNW(AR(1,1,I),NOPNTS)
ENDIF
CONTINUE
ELSEIF (NOPLTS.LE.144) THEN
DO 6 I = 1,NOPLTS
J = I
IF (LR) J = 145 - I
CALL SCXCM(J)
IF (GETOUT) GOTO 9772
IF (REVERS) THEN
CALL BRRGNW(AR(1,1,I),NOPNTS)
ELSE
CALL BARGNW(AR(1,1,I),NOPNTS)
ENDIF
CONTINUE
ELSEIF (NOPLTS.LE.256) THEN
DO 7 I = 1,NOPLTS
J = I
IF (LR) J = 257 - I
CALL SGXGM(J)
IF (GETOUT) GOTO 9772
IF (REVERS) THEN
CALL BRRGNW(AR(1,1,I),NOPNTS)
ELSE
CALL BARGNW(AR(1,1,I),NOPNTS)
ENDIF
CONTINUE
ELSE
IF (REVERS) THEN
CALL PRNW49(AR,NOPNTS,NOPLTS)
ELSE
CALL PLNW49(AR,NOPNTS,NOPLTS)
ENDIF
ENDIF
IF (WAIT) THEN
CALL DOWAIT
CALL PLTTRM

ENDIF
RETURN
9772 CONTINUE
CALL PXLSET
CALL FILWRD(-1)
CALL FULLSC
RETURN
END

S-ar putea să vă placă și