Google
 

Trailing-Edge - PDP-10 Archives - decuslib10-12 - 43,50547/pltlib/v12a/plot.man
There is 1 other file named plot.man in the archive. Click here to see a list.


                    PPPP    L        OOO    TTTTT
                    P   P   L       O   O     T
                    PPPP    L       O   O     T
                    P       L       O   O     T
                    P       LLLLL    OOO      T

            M   M    AAA    N   N   U   U    AAA    L
            MM MM   A   A   NN  N   U   U   A   A   L
            M M M   AAAAA   N N N   U   U   AAAAA   L
            M   M   A   A   N   N   U   U   A   A   L
            M   M   A   A   N   N    UUU    A   A   LLLLL






                      CSM Plotting Manual

          ******** 1st draft for version 12A ********
         As of: March 10, 1983 *** NOT FINISHED YET ***
    **  This document has NOT been approved for printing **



          Colorado School of Mines - Computing Center
                      1600 Illinois Street
                        Golden, CO 80401
                         (303)273-3430



          This  manual  describes  the  hardware  and   software
     available for plotting at the Colorado School of Mines.

          The plotting package  is  a  set  of  FORTRAN-callable
     routines   written   in  MACRO-10  assembly  language.   In
     general, the plotting package is compatible  with  routines
     supplied  by  DEC  (Digital  Equipment Corporation) for use
     with  the  XY-10  CALCOMP  plotter,  but  with   additional
     features.













                               i


             Table of contents for Plotting Manual



Chapter 1       Policies
  1.1   Distribution
  1.2   Copies
  1.3   Graphic Terminals
  1.4   Window Size
  1.5   Standard Plotter Defaults

Chapter 2       Hardware
  2.1   General
  2.2   Houston Instruments DP-8 Plotter
  2.3   ARDS Graphics Terminal
  2.4   Tektronix Graphics Terminal
  2.5   GIGI Graphics Terminal
  2.6   ReGIS Plotter

Chapter 3       Software
  3.1   General
  3.2   Monitor PLOT Command
  3.3   Plot Window
  3.4   Coordinate System
  3.5   Symbol sets
  3.6   TEK Program

Chapter 4       Plotting Routines
  4.1   Core Plotting Routines
  4.1.1     Subroutine ERASE
  4.1.2     Subroutine FACTOR
  4.1.3     Subroutine NEWPEN
  4.1.4     Subroutine OPRTXT
  4.1.4     Subroutine ORIGIN
  4.1.6     Subroutine PAUSEP
  4.1.7     Subroutine PLOT
  4.1.8     Subroutine PLOTS
  4.1.9     Subroutine ROTATE
  4.1.10    Subroutine SETWIN
  4.1.11    Subroutine SUBWIN
  4.1.12    Subroutine TITLE
  4.1.13    Subroutine WHERE
  4.1.14    Subroutine XHAIRS
  4.2   Graphing Routines
  4.2.1     Subroutine AXES
  4.2.2     Subroutine AXIS
  4.2.3     Subroutine DASHLN
  4.2.4     Subroutine GRID
  4.2.5     Subroutine LINE
  4.2.6     Subroutine LOGAX
  4.2.7     Subroutine LOGAXS
  4.2.8     Subroutine SCALE



                               ii


  4.3   Labeling Routines
  4.3.1     Subroutine NUMBER
  4.3.2     Subroutine SETSYM
  4.3.3     Subroutine SYMBOL
  4.4   Obsolete Routines
  4.4.1     Function IPLOT
  4.4.2     Function ISETAB
  4.4.3     Function MSETAB

Chapter 5       3-D and Contouring Routines
  5.1   Contouring Routines
  5.1.1     Subroutine CALCNT
  5.1.2     Subroutine CALSIZ
  5.1.3     Subroutine GRIDER
  5.2   3-D Routines

Chapter 6       Programming Techniques
  6.1   Starting and Stopping Plotting
  6.2   Debugging Techniques
  6.3   Warning and Error Messages

Appendix A      Sample Programs
  A.1   LINPLT
  A.2   SYMBOL Tables

Appendix B      Library Programs
  B.1   LBY:EZPLOT
  B.2   LBY:GRAPH
  B.3   LBY:SIMPLT
  B.4   SYS:DRAW

Appendix C      Further Documentation
  C.1   HELP files
  C.2   DOC:PLOT.DOC

Appendix D      SYMBOL Tables
  D.1   CSM Standard
  D.2   CSM Secondary
  D.3   Olde English
  D.4   Old German
  D.5   Old Italian
  D.6   Script
  D.7   Simplex Roman
  D.8   Simplex Italics
  D.9   Triplex Roman
  D.10  Triplex Italics
  D.11  Hershey's letters
  D.12  Simplex Greek
  D.13  Duplex Greek

Index



                              iii











                           CHAPTER 1

                            POLICIES



     1.1  DISTRIBUTION.

          Plots sent to the  Houston  Instruments  DP-8  plotter
     will be removed from the plotter three times each day.  The
     plots will then be available for pick-up  at  the  Dispatch
     counter  in  room  287  of the Green Center.  The same plot
     removal schedule  will  be  observed  for  hours  that  the
     Computing Center is open on weekends.

           Plots will be removed from the plotter at:

                            11:30 AM

                             4:30 PM

                            11:30 PM



     1.2  COPIES.

          The preferred method of making multiple copies  is  to
     duplicate  a  single  copy  of a plot on a copying machine.
     This method is much less expensive than plotting each  copy
     that  is  needed.   If  multiple  copies  are  needed,  and
     duplicating is not possible (eg.  a 36 by 36 inch plot with
     multiple  colors), the use of the /COPIES:n switch with the
     plot command will cause multiple copies of the plot without
     the  expense  of  running  the plotting program repeatedly.
     Misuse of the copies specification may result  in  loss  of
     plotting privileges.








                              1-1
Policies


     1.3  GRAPHIC TERMINALS.

          There  are   five   TEKTRONIX   4000-series   graphics
     terminals  located  in the graphics room off of the Student
     Workroom  (Room  285,  Green  Center).   The  4025   Raster
     terminal  and the 4012 Interactive terminal may be used for
     creating plots.  The three 4006 terminals are restricted to
     viewing  plots  only.   There  is  30  minute  limit on the
     terminals when others are waiting.

          Use of the graphics terminal for non-graphics work  is
     prohibited;   such  use  may result in loss of all computer
     use privileges.  This restriction is made  to  help  extend
     the limited lifetime of the storage tube in the terminals.



     1.4  WINDOW SIZE.

          The plotting software by default limits a  plot  to  a
     size  of  11  by 11 inches.  Attempts to exceed this window
     are considered to be errors unless the window size has been
     increased.  With evidence of plotting ability, the user can
     have his allowed maximum window size  expanded  beyond  the
     standard  11 by 11 inches.  Permission to expand the window
     can be requested by submitting  the  Request  for  Plotting
     Window  Increase  form  which  is available at the Dispatch
     counter.  The overall maximum window size possible  on  the
     DP-8 plotter is 35 by 240 inches.



     1.5  STANDARD PLOTTER DEFAULTS.


     PAPER - Standard = 12 inches wide, /FORMS:NORMAL
           Extra Wide = 36 inches wide, /FORMS:P311

          The plotter uses a standard  form  of  12  inch  white
     tractor  driven  plotter  paper  (11 inches of useable plot
     area).  The default window size allows up to 11  inches  of
     this  continuous  form  to  be  used  in  a  plot.   Window
     expansion (if expansion privileges have been granted)  will
     allow  up to 240 inches of horizontal length (X-axis) for a
     single plot.  Vertical expansion (Y-axis) up to  35  inches
     is  possible  with window privileges and the use of Special
     Forms.  36 inch paper has a forms name of "P311".


     PENS - Standard = Blue,  NEWPEN(1) (default)
                     = Black, NEWPEN(2) (better for photocopies)
                     = Red,   NEWPEN(3)


                              1-2
                                                        Policies


          The standard (default) pen set up has three ball-point
     pens;   pen  1 has blue ink, pen 2 has black ink, and pen 3
     has red ink.  Other pen sets  can  be  requested  by  prior
     arrangement and use of the OPRTXT subroutine to communicate
     the desired change to the operator at plot time.

















































                              1-3
Policies


                               *






























                               *






















                              1-4











                           CHAPTER 2

                            HARDWARE



     2.1  GENERAL.

          The  hardware  that  the  CSM  Computing  Center   has
     available for use as graphics devices include:

     1.  The  Houston  Instruments  DP-8   digital   incremental
         plotter.

     2.  TEKTRONIX 4012 Storage  Tube  type  graphics  terminal.
         (The  TEK  software  will also drive Models 4006, 4014,
         4016, 4019, and 4025.)

     3.  Digital Equipment Corporation GIGI  graphics  terminal.
         (The GIGI software also works on VT125 terminal.)

     4.  Houston Instruments DMP-4R table-top ReGIS plotter.




     2.2  HOUSTON INSTRUMENTS DP-8 PLOTTER.

          The Houston Instruments  DP-8  Digital  Plotter  is  a
     three  pen  electromechanical drum plotter operating on the
     digital  incremental  principle.   The   plotter   has   an
     incremental  step  size  of  0.0025  inches  (400 steps per
     inch).  It produces a plot by movement of the pen  relative
     to the surface of the recording paper.  The plotter accepts
     up to 36 inch wide continuous roll paper (including tractor
     drive  holes).   For  plotting the paper is pulled around a
     drum for X-axis (horizontal) motion,  and  the  three  pens
     move  along a rail parallel to the drum axis to give Y-axis
     (vertical) motion.  Subroutine PLOT  generates  information
     to  produce  incremental steps of plotter movement with pen
     up or down, in either the plus (+) or minus (-)  direction,
     along  either  axis.   At  full plotting speed, the plotter
     makes 1800 incremental steps per second (4.5 inches of line
     per second).

                              2-1
Hardware


          Plots do not go directly to  the  Houston  Instruments
     DP-8  plotter,  but are spooled.  This means that the plots
     are accumulated on disk, and sent to the  plot  queue  when
     the  PLOT  monitor  command  is  given.   A  special system
     program called SPROUT is run by the  Operator  to  actually
     send the plots to the plotter.






     T   --------------------------------------------------
     A  (                                                  )  S
     K  (  +Y   11 or 35 inches max                        )  U
     E  (  ^                                               )  P
        (  !                                               )  P
     U  (  !                                               )  L
     P  (  !                                               )  Y
        (  !                                               )
     S  (  !                                               )  S
     P  ( -+--------------------->  +X   240 inches max    )  P
     O  ( 0!                                               )  O
     O  (                                                  )  O
     L   --------------------------------------------------   L





                     Drum plotter operation

          There are two ways to use the SPOOLER package:

     1.  Use 'SPOOL' for IPLT in CALL PLOTS(IERR,'SPOOL').

     2.  Use zero for IPLT in CALL PLOTS(IERR,0).   This  second
         method  makes  it  easy  to  change  to the TEK or GIGI
         package by including SYS:TEKPLT.REL  or  SYS:RGSPLT.REL
         in the LOAD/EXECUTE command.




     2.3  ARDS GRAPHICS TERMINAL.

          The  ARDS  (Advanced  Remote  Display  Station)  is  a
     storage  tube  terminal similar to the TEKTRONIX terminals.
     CSM no  longer  has  an  ARDS  terminal,  but  software  is
     available for it.




                              2-2
                                                        Hardware


     2.4  TEKTRONIX GRAPHICS TERMINAL.

          The TEKTRONIX 4012 Graphic terminal is  a  TTY  device
     which   contains  a  storage  mode  cathode  ray  tube  for
     displaying graphics.  Any material that has been written on
     the  screen of the storage tube will be displayed until the
     entire screen is erased.  The screen can be manually erased
     by  pressing  the  'RESET  PAGE'  key  on  the terminal.  A
     program may erase the  screen  by  calling  the  subroutine
     ERASE.

          The TEKTRONIX terminal has a screen resolution of  100
     points  per inch, and a screen size of 7.8 by 10.24 inches.
     The software for the  TEKTRONIX  plotting  package  ignores
     references  to points that are within the universal window,
     but are off-screen.  To place the full 11 by 11 inch  image
     on  the  screen,  software  such  as  the TEK program use a
     scaling factor of 0.7 to reduce the entire plot.  The  4006
     and 4025 terminals have similar characteristics.

          Previewing plots with the TEKTRONIX graphics  terminal
     before  sending  them  to  the plotter is encouraged, since
     this helps reduce the production of unwanted plots.

          There are two ways to use the TEKTRONIX package:

     1.  Use 'TEK' for IPLT in CALL PLOTS(IERR,'TEK').

     2.  Include SYS:TEKPLT.REL in the LOAD/EXECUTE  command  if
         you are using CALL PLOTS(IERR,0).
         Example:  .EXECUTE MYPROG.FOR,SYS:TEKPLT.REL


          The TEK program can be used to preview plots  destined
     for  the DP-8 plotter.  (The TEK program understands how to
     talk to both TEKTRONIX and GIGI terminals.)


















                              2-3
Hardware


     2.5  GIGI GRAPHICS TERMINAL.

          The  GIGI  Graphic  terminal  from  Digital  Equipment
     Corporation  is  a TTY device which drives a TV monitor for
     displaying graphics.  Although the GIGI has the  capability
     of  shading and selectively erasing portions of the screen,
     the PLOT package treats the GIGI like a  TEKTRONIX  storage
     tube.   Subroutine  ERASE  may  be used to clear the entire
     screen.

          The GIGI terminal  has  a  screen  resolution  of  768
     horizontal by 480 vertical points (pixels).  With a 12 inch
     monitor, this is approximately 75 dots per  inch,  measured
     on the TV screen.  The data sent to the GIGI is scaled such
     that a plot requiring 11 by 11 inches on the  DP-8  plotter
     will fit on the GIGI screen.

          To be compatible with the DP-8 pen  plotter,  function
     NEWPEN  will  change  the  color  of the lines drawn on the
     screen.  (For black and white monitors, colors show  up  as
     different shades of gray.)

     NEWPEN(1) = Cyan (light blue) = light gray
     NEWPEN(2) = White (not black) = white
     NEWPEN(3) = Magenta (reddish) = dim gray

          There are two ways to use the GIGI package:

     1.  Use 'GIGI' for IPLT in CALL PLOTS(IERR,'GIGI').

     2.  Include SYS:RGSPLT.REL in the LOAD/EXECUTE  command  if
         you are using CALL PLOTS(IERR,0).
         Example:  .EXECUTE MYPROG.FOR,SYS:RGSPLT.REL


          The TEK program can be used to preview plots  destined
     for  the DP-8 plotter.  (The TEK program understands how to
     talk to both TEKTRONIX and GIGI terminals.)
















                              2-4
                                                        Hardware


     2.6  REGIS PLOTTER.

          The Houston Instruments DMP-4R is  table  top  plotter
     that speaks ReGIS just like the GIGI terminal.  It produces
     plots of up to 6 colors on an 8.5 by 11 inch paper.

          The ReGIS plotter uses  the  same  resolution  as  the
     GIGI;   768  horizontal  by  480 vertical points.  The data
     sent to the DMP-4R is scaled such that a plot requiring  11
     by 11 inches on the DP-8 plotter will fit on the paper.

          Subroutine NEWPEN can be used to change the pen color.

     NEWPEN(1) = Blue   NEWPEN(4) = Purple (set up by user)
     NEWPEN(2) = Black  NEWPEN(5) = Green (set up by user)
     NEWPEN(3) = Red    NEWPEN(6) = Orange (set up by user)

          There are two ways to use the ReGIS package:

     1.  Use 'DMP4R' for IPLT in CALL PLOTS(IERR,'DMP4R').

     2.  Include SYS:RGSPLT.REL in the LOAD/EXECUTE  command  if
         you are using CALL PLOTS(IERR,0).
         Example:  .EXECUTE MYPROG.FOR,SYS:RGSPLT.REL






























                              2-5
Hardware


                               *






























                               *






















                              2-6











                           CHAPTER 3

                       GRAPHICS SOFTWARE



     3.1  GENERAL.

          The Colorado School  of  Mines  Computing  Center  has
     several  types  of  graphics software available.  The major
     package is a set of FORTRAN callable subprograms  that  are
     generally   consistent   with   CALCOMP   software.   These
     subprograms have been written in FORTRAN-10  and  MACRO-10,
     and are generally called from FORTRAN programs.


                                NOTE

         ** Plotting cannot be done from SITGO-FORTRAN.  **
                     ------



          There are several stand-alone programs  available  for
     convenient  generation  of  graphs.   These include EZPLOT,
     GRAPH, SIMPLT, and DRAW.

          The TEK program allows a user to preview any plot that
     has  been prepared for the Houston Instruments DP-8 plotter
     on the TEKTRONIX or GIGI graphics terminals.



     3.2  MONITOR 'PLOT' COMMAND.

          Plots do not go directly to the DP-8 plotter when they
     are  generated,  but  are  spooled  on  the disk.  Spooling
     allows many users to generate  plots  simultaneously,  even
     while  the  plotter  is  actively working on another user's
     plot.  The monitor command 'PLOT' will transfer the spooled
     plot  file  to  the  list  of  plots to be processed by the
     plotter.



                              3-1
Graphics Software


          The form of the 'PLOT' command is:

                          .PLOT *.PLT
                          -

                               or

              .PLOT JOBNAM=FILESPEC(s) /SWITCH(es)
              -


     JOBNAM  is the optional name given to  the  plot.   If  the
          parameter  is  missing, then the first file name given
          is used as the default.

     FILESPEC(s) is a series of file specifications separated by
          commas  which  identify the file names, and optionally
          the device the file resides on, the project-programmer
          number  of  the directory, and sub-file directory(ies)
          which specify  which  files  are  being  sent  to  the
          plotter.   The  default is files with ".PLT" extension
          in your directory area.

     /SWITCH(es) are optional switch parameters which define how
          the files are to be processed.




     Switch            Description
     ------            -----------


     /COPIES:n       Output the specified file(s)  repeatedly  n
               times.   The  use  of  a  photocopier is strongly
               suggested  instead  of  this  switch,  since  the
               duplication  costs  are less, and this also frees
               the plotter for use by other users.

     /DISPOSE:DELETE  Delete the named file(s) after output.

     /DISPOSE:PRESERVE  Save the file after output.

     /DISPOSE:RENAME  Remove  the  file  from   your   directory
               immediately,  and  plot  it  from the QUE:  area.
               This is the default action for ".PLT" files.

     /FORMS:name     Place the output on  a  non-standard  form.
               Standard  forms  are 12 inch (11 useable plotting
               inches) white plotter paper.  36 inch  paper  (35
               useable plotting inches) has a form name of P311.



                              3-2
                                               Graphics Software


     /KILL           Remove the specified job from  the  plotter
               output queue.

     /MODIFY         Modify  the  specified  plot  queue  entry.
               Must  be  used  to  alter  the  switches  used in
               previously requested jobs.

          All other switches available are documented in the CSM
     Users  Handbook  and  in  the DECsystem-10 Operating System
     Commands Manual (under the QUEUE command).



                            EXAMPLES
                            --------

     Example:  To plot the spooled plotter files you have
     generated;

                          .PLOT *.PLT
                          -

     Example:  To remove the request for EZPLOT from the
     queue (the equals sign is required);

                       .PLOT EZPLOT=/KILL
                       -

                               or

                      .CANCEL PLOT EZPLOT
                      -

     Example:  To check the status of the PLOT queue;

                             .PLOT
                             -

















                              3-3
Graphics Software


     3.3  PLOT WINDOW.

          The CSM graphics software observes a limitation on the
     useable plotting area, which is called the plotting window.
     The  main  reason  for  the  plot  window  is  to   prevent
     undebugged  programs  from  going  wild and wasting plotter
     paper.  The window starts as being 11  inches  wide  by  11
     inches high.  The user can move the pen anywhere inside the
     window, but any line that attempts to go outside the window
     will be truncated at the border.  The pen is not allowed to
     move outside the window,  but  its  theoretic  position  is
     still  calculated.  When the pen movement returns to inside
     the window, plotting resumes at the  correct  position.   A
     message  can be sent to the user each time the pen movement
     exceeds the plot window.  The number of  messages  actually
     sent depends on what is specified to subroutine PLOTS.

          The plot window starts out as being 11 by  11  inches,
     with  the  origin  of  X  =  0,  Y = 0 being the lower left
     corner.  The window can be made smaller by calling  SETWIN,
     such  as  to  limit  the  plot  to  an 8.5 by 11 inch area.
     Special privileges are required to extend the  window  past
     the 11 by 11 inch limit.

          The window as set by SETWIN is known as the  universal
     window.   It  is an absolute limit of pen travel.  There is
     also a second type of window, known as the subwindow.   The
     subwindow  can  be  turned  on  and off at will, and can be
     anywhere inside of the universal window.  The subwindow  is
     useful  for  limiting  a  section  of the plot to a smaller
     area.  For instance:  the user can call SETWIN to limit the
     entire plot to an 8.5 by 11 inch area.  Then call SUBWIN to
     limit a graph to a 5 by 4  inch  window.   The  user  calls
     SUBWIN  again to turn off the subwindow checking, to plot a
     title outside of the area, such as "Figure 1".  SUBWIN  may
     be  called again to define a limit for figure 2, and turned
     off again to plot the caption "Figure 2".

















                              3-4
                                               Graphics Software


     3.4  COORDINATE SYSTEM.

          The plotter software is based on a standard  Cartesian
     coordinate  system  that  uses  the inch as a basic unit of
     measure.  Angles used in the plotting package  are  assumed
     to be in degrees, and are measured relative to the positive
     X axis, in a counter-clockwise direction as in the standard
     trigonometric convention.


                               90

                               Y
                               ^
                               !
                               !
                               !     +angle
                               !
                  180  --------+--------> X  0
                               !
                               !     -angle
                               !
                               !

                              270

                 Coordinate system conventions.


          When the plot is first started, the origin is  set  to
     the  lower  left corner of the window.  This default allows
     only positive X and  Y  coordinates  until  the  origin  is
     shifted   by  CALL PLOT(XORG,YORG,-3).   Whenever  PLOT  is
     called with the function code of -3, the pen moves  to  the
     specified  coordinate  and the origin is set to that point.
     Note that multiple origin changes are cumulative.

          Subroutine ROTATE will rotate  the  coordinate  system
     and   subroutine  FACTOR  will  change  the  scaling.   The
     coordinate system will remain a Cartesian coordinate system
     measured  in  inches that will be suitably shifted, turned,
     and zoomed within the  universal  window  by  changing  the
     coordinate   system.    The   coordinate  changes  are  not
     retroactive;  the change is effective for only the plotting
     done after the call to the routine to make the change.









                              3-5
Graphics Software


     3.5  SYMBOL SETS

          There are two routines available for drawing  text  on
     the plot;  TITLE and SYMBOL.

          Subroutine TITLE is limited to a single character  set
     and  angles  that are multiples of 45 degrees.  It uses the
     hardware character generator if possible,  otherwise  TITLE
     calls  subroutine  SYMBOL.   (Currently,  only the GIGI and
     ReGIS plotter have this feature.)

          The SYMBOL  routine  allow  complete  freedom  in  the
     choice  of  position  and  angle of characters generated by
     labeling routines.  There are currently thirteen  different
     types of character sets and one set of centered symbols.

          The different character  sets  are  described  in  the
     "LABELING  ROUTINES"  section,  and  examples  are  in  the
     appendix.



     3.6  TEK PROGRAM

          The TEK program will display a spooled plot file on  a
     TEK  or  GIGI  graphics terminal.  It is strongly suggested
     that all plots be  viewed  before  they  are  sent  to  the
     Houston Instruments DP-8 plotter.

          To view the spooled plot stored in GRAPH.PLT, use  the
     command:

        .TEK GRAPH

     The TEK program will assume the extension  of  ".PLT",  and
     knows how to talk to both Tektronix and GIGI terminals.



     3.7  TEKVUE PROGRAM.

          Some of the 4006 terminals are limited to running  the
     TEKVUE  program.   TEKVUE  allows  the  user to preview and
     dispose of plot  files,  but  the  plots  must  be  created
     elsewhere.   This  limitation  is  imposed so that graphics
     terminals will be available for previewing plots.








                              3-6











                           CHAPTER 4

                      PLOTTING SUBROUTINES



     4.1  CORE PLOTTING ROUTINES

          The routines that follow are the core routines of  the
     plotting  package.   They  are written in MACRO-10 assembly
     language and handle the actual movement of the  pen,  in  a
     manner  suitable  for  the hardware selected.  The standard
     default plotting package outputs to the Houston Instruments
     DP-8  plotter,  but  this  can  be  changed  by appropriate
     arguments to subroutine PLOTS.

          The core routines are in FORLIB, the FORTRAN  library,
     and  are loaded automatically whenever any plotting routine
     is needed.




          The core routines are:

     1.  ERASE  - Clear the screen.

     2.  FACTOR - Change size of plotter movements.

     3.  NEWPEN - Change the pen color.

     4.  OPRTXT - Send a message to the OPR.

     5.  PAUSEP - Pause the plot for a few seconds.

     6.  PLOT   - Move the pen, (X,Y,999) to end plot.

     7.  PLOTS  - Starts plotting.







                              4-1
Plotting Subroutines


     8.  ROTATE - Performs translation and rotation.

     9.  SETWIN - Sets window size.

    10.  SUBWIN - Activates sub-windows.

    11.  TITLE  - Plots text.

    12.  WHERE  - Returns current coordinates.

    13.  XHAIRS - Triggers crosshairs on TEK 4012 or GIGI.




     4.1.1  Subroutine 'ERASE'
            ---------- -------

          ERASE allows the user  to  erase  the  screen  on  the
     TEKTRONIX or GIGI terminals.

             ********** calling sequence **********

                           CALL ERASE

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

          ERASE does not have an  argument.   Upon  return  from
     this  routine  the  cursor  will  be at the lower left hand
     corner of the screen and this point will be the origin.


                                NOTE

         This routine does nothing if subroutine  PLOTS  has
         selected the Houston Instruments plotter.


















                              4-2
                                            Plotting Subroutines


     4.1.2  Subroutine 'FACTOR'
            ---------- --------

          FACTOR enables the user to  change  the  size  of  the
     entire  plot  by  magnifying  the  plot  by  a given factor
     relative to the normal plot size.   The  factor  in  the  Y
     direction  may be changed indepenently of the factor in the
     X direction - this allows mirror-images to be plotted.

             ********** calling sequence **********

                      CALL FACTOR (FACTR)

                               or

                   CALL FACTOR (FACTX,FACTY)

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


     FACTR   (input parameter) is the ratio of the desired  plot
                    size to the normal plot size.

     FACTX   (input parameter) is the scaling factor  in  the  X
                    direction.

     FACTY   (optional input parameter) is the scaling factor in
                    the Y direction.

                            Example
                            -------

                       CALL FACTOR (0.5)


          This call will cause the entire plot which follows  to
     be reduced to half size.  The window size is unaffected, so
     a window of 11 by 11 inches can be used  for  a  plot  that
     would normally be 22 by 22 inches.


                                NOTE

         Subroutine FACTOR affects the  relative  origin  as
         set  by  CALL PLOT(X,Y,-3).   A  program that calls
         FACTOR first then calls PLOT(X,Y,-3)  will  produce
         the   same   effect   as   a   program  that  calls
         PLOT(X,Y,-3) before FACTOR.  See subroutine  ORIGIN
         for a description of these interactions.





                              4-3
Plotting Subroutines


     4.1.3  Subroutine 'NEWPEN'
            ---------- --------

          Subroutine NEWPEN allows the user to select which  pen
     will  be  used  for  the following references to subroutine
     PLOT or to obtain the value of the current pen in use.

             ********** calling sequence **********

                     CALL NEWPEN(IPEN,IERR)

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

     IPEN    (input parameter) allows for a mode of operation.
             (IPEN = 0) return the value of the current  pen  in
                      use.   IERR  gets set to the number of the
                      pen currently in use.
             (IPEN > 0) select a pen to use.  IERR  is  returned
                      as  zero  if  the  pen  number  is  legal,
                      otherwise as -1.
     IERR    (output parameter) The error flag or number of pen.


              DP-8     DMP4R     GIGI and VT125
              ----     -----    -----------------
     IPEN=1   Blue     Blue     Light blue (cyan)
     IPEN=2   Black    Black    White (not black)
     IPEN=3   Red      Red      Red-purple

          Values of IPEN  greater  than  3  work  only  for  the
     Houston  Instruments DMP4-R table-top plotter.  The pens on
     this plotter can be re-arranged by the user.

          Calling  NEWPEN  has  no  affect  on   the   Tektronix
     4000-series terminals.


                                NOTE

         NEWPEN can be called as an integer function, as  in
         IERR=NEWPEN(IPEN),  but  such use of the subroutine
         is discouraged.












                              4-4
                                            Plotting Subroutines


     4.1.4  Subroutine 'ORIGIN'
            ---------- --------


             ********** calling sequence **********

                     CALL ORIGIN (ARG,X,Y)

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


     CALL ORIGIN('ABS',XORIG,YORIG)
                    Set   absolute   origin   (in   inches)   to
                    (XORIG,YORIG).  This is the same as
      CALL ROTATE(0,XTEMP,YTEMP,ANGLE) !Get current angle
      CALL ROTATE(1,XORIG,YORIG,ANGLE) !Re-set angle     

     CALL ORIGIN('REL',XORIG,YORIG)
                    Set    relative    origin,     just     like
                    CALL PLOT(XORIG,YORIG,-3).

     CALL ORIGIN('WHERE',XINCH,YINCH)
                    Return current position on the paper.   This
                    returns  the  absolute position, in spite of
                    any   calls   to    FACTOR,    ROTATE,    or
                    PLOT(X,Y,-3).



                                NOTE

         Subroutine FACTOR affects the  relative  origin  as
         set  by  CALL PLOT(X,Y,-3).   A  program that calls
         FACTOR first then calls PLOT(X,Y,-3)  will  produce
         the   same   effect   as   a   program  that  calls
         PLOT(X,Y,-3) before FACTOR.


















                              4-5
Plotting Subroutines


     4.1.5  Subroutine 'OPRTXT'
            ---------- --------

          This routine allows the user to send a message to  the
     operator via his output plot file.  This subroutine is used
     to send messages at plot time to the  operator  to  request
     special pens, special forms, etc.

             ********** calling sequence **********

                   CALL OPRTXT (MESSAG,NCHR)

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


     MESSAG  (input parameter) is the message to be sent to  the
                    operator.    This  text  must  be  either  a
                    literal or an array that has five characters
                    per element.


     NCHR    (input parameter) is the number of characters to be
                    sent to the operator.



                                NOTE

         This routine  will  only  send  a  message  to  the
         operator;   it  will  NOT  pause  the output to the
         plotter.  If operator intervention is required, the
         output  must  be  paused  by a call to PLOT(X,Y,0),
         which must be the next call to PLOT.

         This routine  does  nothing  when  running  on  the
         graphic terminals.


                            Example
                            -------

           CALL OPRTXT ('Please put blue felt-tip in pen #1',34)
           CALL PLOT (X,Y,0)    !Pause the plotter











                              4-6
                                            Plotting Subroutines


     4.1.6  Subroutine 'PAUSEP'
            ---------- --------

          PAUSEP allows the user to pause the plot  going  to  a
     graphics  terminal.   Its  main use is to allow the user to
     view a plot before erasing the screen

             ********** calling sequence **********

                       CALL PAUSEP (ISEC)

                               or

                      CALL PAUSEP (0,IANS)

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

     ISEC    (input parameter) is the time in seconds  that  the
              plot should be paused.  Zero means to wait for the
              user to hit the RETURN key.

     IANS    (optional output parameter) is the user's response,
              such  as  'OK' or 'STOP'.  IANS is returned as all
              blanks if the user  simply  hit  the  RETURN  key,
              otherwise  up  to 5 characters of the response are
              returned, converted to upper case.

                            Example
                            -------

            CALL PAUSEP (5)     !Pause for 5 seconds
            CALL ERASE  ! Clear the screen
               ....
            CALL PAUSEP (0,IANS)
            IF(IANS.NE.'OK') CALL ERASE



















                              4-7
Plotting Subroutines


     4.1.7  Subroutine 'PLOT'
            ---------- ------

          PLOT is the  basic  routine  for  the  plotter.   This
     routine  moves  the  pen in a straight line to the position
     specified by (X,Y) with the pen up or down.  Also,  special
     services  such as plot termination and change of origin are
     performed  by  this  routine.   There  are  six  modes   of
     operation for this routine plus the pause command.




          MODE     MEANING OF X AND Y PARAMETERS
          ----     ------- -- - --- - ----------

            0      Cause the spooler to pause.  ( IC = 0 ).

            1      Coordinate of point in inches to move pen to.
                   ( 0 <= IC <= 5 ).

            2      Delta values in inches to move the  pen  from
                   this coordinate.  ( 5 <= IC <= 7 ).

            3      Polar coordinate values in inches to move the
                   pen  to.  X is the radius in inches, and Y is
                   the angle in degrees.  ( 8 <= IC <= 10 ).

            4      Polar coordinate values to move  the  pen  to
                   with  X  the radius value in inches and Y the
                   angle in radians.  ( 11 <= IC <= 13 ).

            5      Terminate the plot.  ( IC = 999 ).





















                              4-8
                                            Plotting Subroutines


             ********** calling sequence **********

                       CALL PLOT (X,Y,IC)

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




     Mode 0     Pause Spooler
     ---- -

     (X,Y)  (input parameter)  are   ignored   for   the   pause
                    function.

     IC = 0 (input parameter)  is  the  pause  command  for  the
                    spooler,  X  and  Y  are  ignored.   For the
                    Houston Instruments DP-8 plotter, this  call
                    is    illegal   unless   you   call   OPRTXT
                    immediately before calling PLOT(X,Y,0).   It
                    causes  the  SPROUT spooling program to stop
                    and request Operator intervention.  See  the
                    OPRTXT description for more information.

     Use  subroutine  PAUSEP  to  pause   output   to   graphics
                    terminals.


     Mode 1     Absolute Coordinates
     ---- -

     (X,Y)  (input parameter) is the coordinate to move  to,  in
                    inches.

     IC     (input parameter) is the function code:
           (IC =  1) move to X,Y without  modifying  pen  up  or
                    down.
           (IC = -1) move to X,Y without  modifying  pen  up  or
                    down, and make this the new origin.
           (IC =  2) drop the pen and move to X,Y.
           (IC = -2) drop the pen, move to X,Y and make this the
                    origin.
           (IC =  3) raise the pen and move to X,Y.
           (IC = -3) raise the pen and move to X,Y and make this
                    the origin.
           (IC =  4) make the current pen position X,Y.
           (IC = -4) make the current pen  position  the  origin
                    (X,Y are ignored).






                              4-9
Plotting Subroutines


     Mode 2     Relative Coordinates
     ---- -

     (X,Y)  (input parameter) is the delta distance to move,  in
                    inches.

     IC     (input parameter) is the function code:
           (IC =  5) move the delta distance  without  modifying
                    pen up or down.
           (IC = -5) move the delta distance  without  modifying
                    pen up or down and make this the origin.
           (IC =  6) drop the pen and move the delta distance.
           (IC = -6) drop the pen, move the delta  distance  and
                    make this the origin.
           (IC =  7) raise the pen and move the delta distance.
           (IC = -7) raise the pen, move the delta distance  and
                    make this the origin.


     Mode 3     Polar Degrees
     ---- -

     (X,Y)  (input parameter) is the polar  coordinates  of  the
                    point  to  move  to  (X  is  the  radius, in
                    inches, and Y is the angle, in degrees).

     IC     (input parameter) is the function code:
           (IC =  8) move to X,Y  without  changing  pen  up  or
                    down.
           (IC = -8) move to X,Y without  modifying  pen  up  or
                    down and make this the origin.
           (IC =  9) drop the pen and move to X,Y.
           (IC = -9) drop the pen, move to X,Y,  and  make  this
                    the origin.
           (IC = 10) raise the pen and move to X,Y.
           (IC =-10) raise the pen, move to X,Y, and  make  this
                    the origin.

















                              4-10
                                            Plotting Subroutines


     Mode 4     Polar Radians
     ---- -

     (X,Y)  (input parameter) is the polar  coordinates  of  the
                    point  to  move  to  (X  is  the  radius, in
                    inches, and Y is the angle, in radians).

     IC     (input parameter) is the function code:
           (IC = 11) move to X,Y  without  changing  pen  up  or
                    down.
           (IC =-11) move to X,Y without  modifying  pen  up  or
                    down and make this the origin.
           (IC = 12) drop the pen and move to X,Y.
           (IC =-12) drop the pen, move to X,Y and make this the
                    origin.
           (IC = 13) raise the pen and move to X,Y.
           (IC =-13) raise the pen, move to X,Y  and  make  this
                    the origin.


     Mode 5     Finish Plot
     ---- -

     (X,Y)  (input parameter) X,Y are ignored.

     IC     (input parameter) is the function code:
           (IC = 999) terminate the plot.
           (IC  > 13  or  IC   -13)   Unimplemented   operation.
                    Currently,  if  the  absolute value of IC is
                    greater than 13, it is the same as if IC was
                    999,  and terminates the plot.  The value of
                    999 should be used to terminate the plot, as
                    more modes may be implemented in the future.

           CALL PLOT(X,Y,-999) will abort the  plot,  and  avoid
                    creating a plot file.


















                              4-11
Plotting Subroutines


     4.1.8  Subroutine 'PLOTS'
            ---------- -------

          The PLOTS routine activates the plotter.  It also sets
     a counter for listing "Plot Window Exceeded" messages.


                                NOTE

         PLOTS must be called before  ANY  call  to  a  plot
                                      ---
         routine to initialize the output plot file.



             ********** calling sequence **********

               IERR = some number                
               CALL PLOTS (IERR,IPLT)            
               IF(IERR.NE.0) STOP 'PLOTS failure'

                               or

                  CALL PLOTS (IERR,IPLT,DFILE)

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


     IERR  (input parameter) is a  flag  to  set  error  message
                    type-out:
           (IERR = 0) don't type warnings.
           (IERR > 0) type only the warning message.
           (IERR < 0) type the warning  message  and  trace  the
                    call to subroutine PLOT.  The absolute value
                    of IWARN  will  be  the  maximum  number  of
                    warnings to be typed.
           (IERR = 999) do not erase the screen if running on  a
                    graphics  terminal.   Usually  the screen is
                    erased when PLOTS is called.


     IERR  (output parameter) is a flag signifying  the  success
                    or failure of PLOTS.
           (IERR =  0) means no errors.
           (IERR = -1) means no such plotter.
           (IERR > 0) means plot file creation error.








                              4-12
                                            Plotting Subroutines


     IPLT  (input parameter) specifies the type of plotter.
              0    Use the default plotter ('SPOOL')
           'PLOT'  Same as 0
           'SPOOL' Spooled output to the Houston Instruments
                   DP-8 plotter
           'DP-8'  Same as 'SPOOL'
            'TEK'  Output to TEKTRONIX 4000-series terminal
            4006   Same as 'TEK'
            4012   Same as 'TEK'
            4025   Same as 'TEK'
           'REGIS' Output to ReGIS type terminal
           'GIGI'  Same as 'REGIS'
           'DMP4R' Houston Instruments DMP-4R ReGIS plotter
            'TTY'  Same as 'TEK' or 'GIGI' depending on terminal


     DFILE (optional input parameter)   specifies   the   device
                    and/or  file  name  for the plot file.  This
                    must be less than 10 characters enclosed  by
                    single   quotes,   or   a   double-precision
                    variable.


                            EXAMPLE
                            -------
        IERR = -2
        CALL PLOTS(IERR,0)
        IF (IERR.NE.0) STOP '?PLOTS failure'

          Specifying IPLT as the integer zero means to  use  the
     default   plotter   (normally   'SPOOL',   but   'TEK'   if
     SYS:TEKPLT.REL is loaded).  The value of IERR = -2 on input
     will  cause  a maximum of two error messages and a trace of
     the erroneous calls to be typed.  If IERR is  not  returned
     as zero, the program will stop and type "?PLOTS failure".



















                              4-13
Plotting Subroutines


     4.1.9  Subroutine 'ROTATE'
            ---------- --------

          ROTATE allows the coordinate  system  to  be  rotated.
     All plotting references after this call will be offset from
     the axis of rotation (which is now the origin) and rotated.


                                NOTE


              Window clipping is done AFTER rotation.   That
         is,  the limits imposed by subroutine SETWIN always
         form a box whose sides are horizontal and vertical.



             ********** calling sequence **********

              CALL ROTATE (IFUNC,XPOS,YPOS,ANGLE)

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


     IFUNC   (input parameter) determines the mode of rotation:
           (IFUNC = 0) clear all rotation, setting the origin to
                    the  lower  left  corner  of  the  universal
                    window.  XPOS, YPOS and ANGLE are set to the
                    former  absolute origin and the former angle
                    of rotation.
           (IFUNC > 0) add ANGLE to the current rotation angle.
           (IFUNC < 0) set the angle of rotation to ANGLE.


     (XPOS,YPOS)  is the position in inches for  the  center  of
                    rotation.    NOTE:    This  is  an  absolute
                    position on the paper, and is  not  affected
                    by   CALL   FACTOR.   This  absolute  origin
                    cancels any previous  relative  origin  that
                    may have been set by CALL PLOT(X,Y,-3).

     ANGLE   (input parameter) is the angle of rotation.  It  is
                    specified in degrees, not in radians.


                            Example
                            -------







                              4-14
                                            Plotting Subroutines


          The user is charged by the width of the  plot.   If  a
     plotting  program  is set up to use an area 8.5 inches high
     by 11.0 inches wide, plot paper will be  conserved  if  the
     plot  is  rotated  so  that  it  is 8.5 inches wide by 11.0
     inches high.   This  can  be  accomplished  by  adding  two
     statements after the call to PLOTS.

        CALL SETWIN (8.5, 11.0)
        CALL ROTATE (1, 8.5, 0.0, 90.0)


          The first  statement  makes  sure  that  the  plot  is
     limited to 8.5 inches wide by 11.0 inches high.  The second
     one moves 8.5 inches to the right along the X axis, rotates
     the  plot 90 degrees counterclockwise, and makes this point
     the new origin.  The positive X axis now points up, and the
     positive Y axis points to the left.

                            Example
                            -------
        CALL FACTOR(0.5)                !Reduce size of plot
        CALL PLOT(1.0,2.0,-3)           !Origin is (0.5,1.0)
        CALL ROTATE(-1,4.0,5.0,90.0)    !Origin is (3.0,5.0)

          Before  the  call  to  ROTATE,  the  origin   was   at
     (0.5*1.0,0.5*2.0)  or  (0.5,1.0) because FACTOR affects the
     origin set by PLOT(X,Y,-3).  Then ROTATE used (4.0,5.0)  as
     the center of rotation because it uses absolute coordinates
     in inches along the paper, and is unaffected by  FACTOR  or
     PLOT(X,Y,-3).   After  this rotation, the 0.5 inch X-origin
     offset and the 1.0 inch Y-origin offset have been canceled.

          If your program uses subroutine  ROTATE,  then  better
     results will be obtained by using
                 CALL ORIGIN('ABS',XORIG,YORIG)
                               or
                CALL ROTATE(-1,XORIG,YORIG,0.0)
     instead of
                 CALL ORIGIN('REL',XORIG,YORIG)
                               or
                   CALL PLOT(XORIG,YORIG,-3)
     to change the origin.












                              4-15
Plotting Subroutines


     4.1.10  Subroutine 'SETWIN'
             ---------- --------

          Subroutine SETWIN allows the user to set up  a  window
     size other than using the default window size (11 inches by
     11 inches).

             ********** calling sequence **********

                      CALL SETWIN (WX,WY)

                               or

                CALL SETWIN (WX,WY,WXMAX,WYMAX)

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

     WX      (input parameter) is the width  of  the  window  in
              inches.  The maximum value of WX is 240 inches.

     WY      (input parameter) is the height of  the  window  in
              inches.  The maximum value of WY is 35 inches.

     WXMAX   (optional output parameter) is the maximum X  value
              that PRIV.SYS allows.

     WYMAX   (optional  output  parameter)  is  the  maximum   Y
              allowed.


                                NOTE

         Privileges for window sizes larger than  11  by  11
         inches are granted by the Chief Consultant.  If the
         user wants to set up a window size, he or she  must
         do  so  after  a  reference  to  PLOTS but before a
         reference to subroutine PLOT or any other  plotting
         routine.   The  values  of  WX or WY cannot be less
         than or equal to zero.  See the  page  on  "Warning
         and Error Messages".














                              4-16
                                            Plotting Subroutines


     4.1.11  Subroutine 'SUBWIN'
             ---------- --------

          SUBWIN allows the user to have  a  sub-window  in  the
     plotting  program.  A sub-window is a smaller window within
     the main or universal window and is  treated  exactly  like
     the  universal  window.   For  example if the sub-window is
     setup no plotting will be done outside of that  sub-window.
     The  sub-window  can  be  turned  on and off at will and no
     special privileges are needed.

             ********** calling sequence **********

         CALL SUBWIN (IFUNC,IVALUE,X0,Y0,WIDTH,HEIGHT)

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

     IFUNC   (input parameter) selects mode of operation.
             (IFUNC = 0) sets up the sub-window
             (IFUNC = 1) reads the sub-window size to see if the
                      sub-window   feature  is  currently  being
                      used.
             (IFUNC = 2) disables the sub-window for now.
             (IFUNC = 3) reenables the sub-window feature,  i.e.
                      uses  the  last  values  of a reference to
                      subroutine  SUBWIN  with  IFUNC  equal  to
                      zero.

     IVALUE  (output parameter) a mode (IFUNC) dependent  value.
              If  IFUNC  is  less than 0 or greater than 3, then
              IVALUE will be set equal to -1.
             (IFUNC = 0)
                  (IVALUE = -1) the width  or  height  was  less
                      than or equal to zero.
                  (IVALUE = 0) the sub-window was set up.
             (IFUNC = 1)
                  (IVALUE = -1) a sub-window was not set up.
                  (IVALUE = 0) the sub-window was set up and  no
                      checking is being done.
                  (IVALUE = 1) the sub-window  was  set  up  and
                      checking is being done.
             (IFUNC = 2 or 3)
                  (IVALUE = -1) a sub-window was not set up.
                  (IVALUE = 0) a sub-window was set up.

     (X0,Y0) (input  or  output  parameter)   a   mode   (IFUNC)
              dependent value.
             (IFUNC = 0) (input) the  coordinate  of  the  lower
                      left  hand  corner  of  the sub-window, in
                      inches.
             (IFUNC = 1) (output) the coordinates of  the  lower
                      left  hand  corner  of  the sub-window, in
                      inches.

                              4-17
Plotting Subroutines


             (IFUNC = 2) is unused.  (IFUNC = 3) is unused.

     WIDTH   (input  or  output  parameter)   a   mode   (IFUNC)
              dependent value.
             (IFUNC = 0) (input) the width of the sub-window, in
                      inches.
             (IFUNC = 1) (output) the width of  the  sub-window,
                      in inches.
             (IFUNC = 2) is unused.
             (IFUNC = 3) is unused.


     HEIGHT  (input  or  output  parameter)   a   mode   (IFUNC)
              dependent value.
             (IFUNC = 0) (input) the height of  the  sub-window,
                      in inches.
             (IFUNC = 1) (output) the height of the  sub-window,
                      in inches.
             (IFUNC = 2) is unused.
             (IFUNC = 3) is unused.


                                NOTE

         X0, X0,  WIDTH  and  HEIGHT  are  relative  to  the
         current  origin and factor values.  This subroutine
         is not effected by subroutine ROTATE.





     4.1.12  Subroutine 'TITLE'
             ---------- -------

          The TITLE subroutine draws text on the plotter,  using
     the  hardware  character  generator  if  possible.   If the
     plotter does not have a  character  generator,  TITLE  will
     then call subroutine SYMBOL using SETSYM table 1.

             ********** calling sequence **********

          CALL TITLE (X0,Y0,HEIGHT,ICHARS,ANGLE,NCHR)

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


     (X0,Y0) (input parameter) is the coordinate, in inches,  of
                    the  lower  left  hand  corner  of the first
                    character to be drawn,  before  rotation  by
                    ANGLE.   The  pen is up while moving to this
                    point.


                              4-18
                                            Plotting Subroutines


     HEIGHT  (input parameter) is the height, in inches, of  the
                    character(s) to be drawn.

     ICHARS  (input parameter) is the text to be drawn.   ICHARS
                    is either a literal enclosed by apostrophes,
                    or an array containing  five  left-justified
                    characters per element.

     ANGLE   (input parameter) is the angle in degrees at  which
                    the  text  is to be plotted.  The angle will
                    be rounded to be a multiple of 45 degrees.

     NCHR    (input parameter) number of characters to plot.
           (NCHR = 0) plot a single character whose  ASCII  code
                    is in ICHARS.


                                NOTE

         Currently,  the   only   plotters   with   hardware
         character   generators  are  the  ReGIS  terminals;
         VT125, GIGI, and DMP4R.




          See also the description of subroutine SYMBOL.



























                              4-19
Plotting Subroutines


     4.1.13  Subroutine 'WHERE'
             ---------- -------

          This routine allows the user to check on the status of
     the plotter, the current pen position, current FACTOR value
     and the type of  plotting  package  that  was  selected  by
     subroutine  PLOTS.   This  routine will normally be used to
     optimize plotter movement.

             ********** calling sequence **********

                        CALL WHERE (X,Y)

                               or

               CALL WHERE (X,Y,FACTX,IPLT,FACTY)

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


     X      (output parameter)  is  the  X  coordinate  of   the
                    current pen position, in inches.

     Y      (output parameter)  is  the  Y  coordinate  of   the
                    current pen position, in inches.

     IPLT    (optional output parameter) is the type of  plotter
                    in use.
           (IPLT = 1) using the DP-8 spooler.
           (IPLT = 2) using the ARDS package.
           (IPLT = 3) using the TEKTRONIX package.
           (IPLT = 4) using the ReGIS  package.   (GIGI,  DMP4R,
                    VT125)


     FACTX   (optional output parameter) is the factor value for
                    the X direction.

     FACTY   (optional output parameter) is the factor value for
                    the Y direction.


          The values returned for X and Y take into account  any
     rotation,  scaling  factors,  and  the  current origin.  If
     these values were to be used in the next call to PLOT,  the
     pen will not move.








                              4-20
                                            Plotting Subroutines


                            Example
                            -------

        CALL WHERE(X,Y,FACTR,IPLT)                      
        IF (IPLT .EQ. 3) CALL FACTOR (0.7*FACTR)   !TEK 
        IF (IPLT .EQ. 4) CALL FACTOR (FACTR*2./3.) !GIGI


          This determines which  type  of  plotter  is  in  use.
     Since  the  TEKTRONIX  screen  is only 7.8 inches tall, the
     scale factor of 0.7 ensures that all 11 inches of the  plot
     will  be  visible.  For a GIGI or VT125 terminal, a scaling
     factor of 0.666667 is needed.

          Since moving long distances with  the  pen  up  wastes
     plotter  time,  subroutine  WHERE  can  be  used to improve
     efficiency.  If possible, draw long lines by moving to  the
     endpoint  closest  to  the  current position first and then
     plot the line.



































                              4-21
Plotting Subroutines


     4.1.14  Subroutine 'XHAIRS'
             ---------- --------

          XHAIRS allows the user to turn on the crosshairs on  a
     TEKTRONIX   or  GIGI  terminal.   The  user  positions  the
     crosshairs and types a single character.  The position  and
     the  character  are  transmitted  to  the  program.  If the
     character is a Control-Z, the screen will be cleared, zeros
     will be returned for all parameters, and the origin will be
     set to the lower left hand corner of the screen.

             ********** calling sequence **********

                 CALL XHAIRS (XPOX,YPOS,LETTER)

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

     XPOS    (output parameter) is the X coordinate, in  inches,
              of the crosshair.

     YPOS    (output parameter) is the Y coordinate, in  inches,
              of the crosshair.

     LETTER  (output parameter) is the character typed.   Normal
              characters are returned in an 'A1' format, control
              characters are returned as a number between 1  and
              31, in an 'R1' format.


                                NOTE

         XPOS and YPOS are relative to  the  current  origin
         and  factor  value.  This routine is only available
         in the TEKTRONIX and GIGI plotting package.



                            Example
                            -------

            CALL XHAIRS (XPOS, YPOS, LETTER)
            IF (LETTER .EQ. 'U') CALL PLOT (XPOS, YPOS, 3) !Up
            IF (LETTER .EQ. 'D') CALL PLOT (XPOS, YPOS, 2) !Down











                              4-22
                                               Graphing Routines


     4.2  GRAPHING ROUTINES

          The routines that follow in this section are  designed
     to  aid  in  the  generation of graphs by drawing the axes,
     scaling the data, and drawing the data points on the graph.
     Care  should  be  taken  in  choosing the best axis drawing
     routine to fit the data involved.

          These routines are the included in FORLIB, the FORTRAN
     library.   Unlike  the  CALCNT  and PLOT3D routines, FORLIB
     routines get loaded automatically whenever they are needed.




          The Graphing Routines are:

     1.  AXES   - Draw a fancy X or Y axis.

     2.  AXIS   - Draw a simple X or Y axis.

     3.  DASHLN - Draw a dashed line between 2 points.

     4.  GRID   - Draw a rectilinear grid.

     5.  LINE   - Draw a line from an array of X and Y.

     6.  LOGAX  - Draw a simple logarithmic axis.

     7.  LOGAXS - Draw a fancy logarithmic axis.

     8.  SCALE  - Do scaling for subroutine LINE.






















                              4-23
Graphing Routines


     4.2.1  Subroutine 'AXES'
            ---------- ------

          AXES  provides  the  user  with  the   capability   of
     generating  and  labeling  an  axis  by  drawing  a line of
     arbitrary length divided into variable length  segments  by
     'tick'  marks.   The  variable  value  can be written as an
     annotation beside each mark.  The axis can also be  labeled
     if  the  user  desires with special parameters for labeling
     and segment lengths.

             ********** calling sequence **********

       CALL AXES (X0,Y0,ITITLE,NCHR,AXSLEN,ANGLE,FIRSTV,
              DELTAV,TICSPC,IPOWER,NUMDIG,LABTIC)

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


     (X0,Y0) (input parameter) is the  coordinate  position,  in
                    inches,  of the starting point for the axis.
                    The axes ends should be at least 0.5  inches
                    from  the  current  window  limits  to allow
                    space  for  the  scale  annotation  and  the
                    title.   When the coordinate system is being
                    generated to coincide with a  plot  produced
                    by  subroutine  LINE  the X0 value for the X
                    axis must be 0.0 and the Y0 value for the  Y
                    axis must be 0.0.

     ITITLE  (input parameter) is the title for the axis.   This
                    title is centered and placed parallel to the
                    axis line.  ITITLE may be either a Hollerith
                    literal,    or    an    array    with   five
                    left-justified  characters  per  word.   The
                    output  title  has  a  fixed  height of 0.15
                    inch.

     NCHR    (input   parameter)   specifies   the   number   of
                    characters in the title and on which side of
                    the axis the labeling  information  will  be
                    written.
           (NCHR > 0) make  the  'tick'  mark,  annotation,  and
                    title placement on the counterclockwise side
                    of the axis relative to the  line  projected
                    from  the  origin  along  the  desired axis.
                    This condition is normally desired  for  the
                    Y-axis.






                              4-24
                                               Graphing Routines


           (NCHR =  0)  make  the  'tick'  mark  and  annotation
                    placement  on  the counter-clockwise side of
                    the axis relative to the line projected from
                    the origin along the desired axis.  There is
                    no title on this axis.
           (NCHR < 0) make  the  'tick'  mark,  annotation,  and
                    title placement on the clockwise side of the
                    axis relative to the line projected from the
                    origin   along   the   desired  axis.   This
                    condition  is  normally  desired   for   the
                    X-axis.


     AXSLEN  (input parameter) is the length, in inches, of  the
                    axis line.

     ANGLE   (input parameter) is  the  angle,  in  degrees,  at
                    which  the  axis  is  to be drawn.  Normally
                    this value is 0.0 for the  X-axis  and  90.0
                    for the Y-axis.

     FIRSTV  (input parameter) is the starting value which  will
                    appear on the first 'tick' mark of the axis.
                    This value, if computed  by  SCALE  will  be
                    stored at location ARRAY(NPT+1).

     DELTAV  (input parameter) is the number of data  units  per
                    inch  of  axis.   This value, if computed by
                    SCALE, will be stored at ARRAY(NPT+2).

     TICSPC  (input parameter) is the  distance  between  'tick'
                    marks, in inches.

     IPOWER  (input  parameter)  is  the  exponent   times   10,
                    (*10**IPOWER), used in the title.

     NUMDIG  (input parameter) is the number of  decimal  places
                    wanted  in  the  annotation  on each labeled
                    'tick' mark.  If integers are wanted  NUMDIG
                    should  be  set  equal to -1.  If no numbers
                    are wanted NUMDIG should  be  set  equal  to
                    999.

     LABTIC  (input parameter) is the delta value  for  labeling
                    the  'tick' marks.  For example, if LABTIC =
                    3 every third 'tick' mark will  be  labeled.
                    If LABTIC is less than 1 no labeling will be
                    done.






                              4-25
Graphing Routines


                                NOTE

         Each call to AXES will  draw  a  single  axis  with
         labels.  It requires two calls to AXES to create an
         (X,Y) coordinate system.





     4.2.2  Subroutine 'AXIS'
            ---------- ------

          AXIS  provides  the  user  with  the   capability   of
     generating  and  labeling  an  axis  by  drawing  a line of
     arbitrary length divided into one inch segments  by  'tick'
     marks.   The  variable  value  is  written as an annotation
     beside each mark.  The axis can also be labeled if the user
     desires.

             ********** calling sequence **********

              CALL AXIS (X0,Y0,ITITLE,NCHR,AXSLEN,
                      ANGLE,FIRSTV,DELTAV)

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


     (X0,Y0) (input parameter) is the  coordinate  position,  in
                    inches,  of the starting point for the axis.
                    The axes ends should be at least  0.5  inchs
                    from  the  current  window  limits  to allow
                    space  for  the  scale  annotation  and  the
                    title.   When the coordinate system is being
                    generated to coincide with a  plot  produced
                    by  subroutine  LINE  the X0 value for the X
                    axis must be 0.0 and the Y0 value for the  Y
                    axis must be 0.0.

     ITITLE  (input parameter) is the title for the axis.   This
                    title is centered and placed parallel to the
                    axis line.  ITITLE may be either a Hollerith
                    literal,   or   an   array  containing  five
                    left-justified  characters  per  word.   The
                    title has a fixed height of 0.15 inch.

     NCHR    (input   parameter)   specifies   the   number   of
                    characters in the title and on which side of
                    the axis the labeling  information  will  be
                    written.




                              4-26
                                               Graphing Routines


           (NCHR > 0) make  the  'tick'  mark,  annotation,  and
                    title placement on the counterclockwise side
                    of the axis relative to the  line  projected
                    from  the  origin  along  the  desired axis.
                    This condition is normally desired  for  the
                    Y-axis.
           (NCHR =  0)  make  the  'tick'  mark  and  annotation
                    placement  on  the counter-clockwise side of
                    the axis relative to the line projected from
                    the origin along the desired axis.  There is
                    no title on this axis.
           (NCHR < 0) make  the  'tick'  mark,  annotation,  and
                    title placement on the clockwise side of the
                    axis relative to the line projected from the
                    origin   along   the   desired  axis.   This
                    condition  is  normally  desired   for   the
                    X-axis.


     AXSLEN  (input parameter) is the length, in inches, of  the
                    axis line.

     ANGLE   (input parameter) is  the  angle,  in  degrees,  at
                    which  the  axis  is  to be drawn.  Normally
                    this value is 0.0 for the  X-axis  and  90.0
                    for the Y-axis.

     FIRSTV  (input parameter) is the starting value which  will
                    appear on the first 'tick' mark of the axis.
                    This value, if computed  by  SCALE  will  be
                    stored  at  location ARRAY(NPT+1).  Only two
                    decimal places will be on the annotations.

     DELTAV  (input parameter) is the number of data  units  per
                    inch  of axis.  This value which is added to
                    FIRSTV for each succeeding 1  inch  division
                    along  the  axis, if computed by SCALE, will
                    be stored at ARRAY(NPT+2).



                                NOTE

         Each call to AXIS will draw a single axis line  and
         label  it.   The  creation  of  an (X,Y) coordinate
         system is accomplished by  two  references  to  the
         subroutine AXIS.







                              4-27
Graphing Routines


     4.2.3  Subroutine 'DASHLN'
            ---------- --------

          DASHLN is used to draw either a solid or  dashed  line
     between two points.

             ********** calling sequence **********

                 CALL DASHLN (X0,Y0,XN,YN,DASH)

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


     (X0,Y0) (input parameter) is the coordinate, in inches,  of
                    the starting end of the line segment.

     (XN,YN) (input parameter) is the coordinate, in inches,  of
                    the terminating end of the line segment.

     DASH    (input parameter) is a flag to tell whether a solid
                    or dashed line segment is desired.
           (DASH <= 0) makes the line segment solid.
           (DASH > 0) makes the line segment  dashed.   DASH  is
                    the length, in inches.



                                NOTE

         The first and last segments of the line are  always
         drawn  with the pen down - this is so that the ends
         of the line are clearly marked.  The length of DASH
         should  be  much  smaller than the distance between
         (X0,Y0) and (XN,YN).




















                              4-28
                                               Graphing Routines


     4.2.4  Subroutine 'GRID'
            ---------- ------

          GRID draws a linear grid.

             ********** calling sequence **********

             CALL GRID (X0,Y0,DELX,DELY,NXSP,NYSP)

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


     (X0,Y0) (input parameter) is the coordinate, in inches,  of
                    the lower left hand corner of the grid.

     DELX    (input  parameter)  is  the  distance,  in  inches,
                    between the grid lines in the X direction.

     DELY    (input  parameter)  is  the  distance,  in  inches,
                    between the grid lines in the Y direction.

     NXSP    (input parameter) is the number of grids in  the  X
                    direction.

     NYSP    (input parameter) is the number of grids in  the  Y
                    direction.



                                NOTE

         GRID will generate a linear grid of any size.   The
         number  of  lines  drawn  is  NXSP  +  1  in  the X
         direction (vertical lines) and NYSP + 1  in  the  Y
         direction (horizontal lines).



















                              4-29
Graphing Routines


     4.2.5  Subroutine 'LINE'
            ---------- ------

          LINE enables a user to plot (X,Y) pairs of data values
     from  an X array and a Y array.  LINE computes the position
     on the page of each plotted point from the data values  and
     scaling  parameters in the two arrays.  The data points may
     be  represented  by  centered  symbols  with   or   without
     connecting  lines.   The  connecting  lines may be solid or
     dashed.  The scaling  parameters,  FIRSTV  and  DELTAV,  as
     detailed in subroutine SCALE, must be found in the last two
     locations of each array.  These values, if not computed  by
     subroutine SCALE, must be supplied by the user.

             ********** calling sequence **********

        CALL LINE (XARRAY,YARRAY,NPNTS,ILINE,ISYSB,DASH)

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


     XARRAY  (input  parameter)  is  the   name   of   the   one
                    dimensional    array    containing   the   X
                    (abscissa) values  along  with  the  scaling
                    values for this array.

     YARRAY  (input  parameter)  is  the   name   of   the   one
                    dimensional    array    containing   the   Y
                    (ordinate) values  along  with  the  scaling
                    values for this array.

     NPNTS   (input parameter) is the number of data  points  in
                    the XARRAY and YARRAY.  Note:  The number of
                    points in both  arrays  must  be  the  same.
                    This  number  does not include the two extra
                    locations required for scaling parameters.

     ILINE   (input parameter) is a flag used  to  describe  the
                    type  of  line  to be drawn through the data
                    points.
           (ILINE = 0) points are connected by  straight  lines,
                    no centered symbols are plotted.
           (ILINE > 0) points are connected  by  straight  lines
                    and  a  centered  symbol  is  drawn  at each
                    point.
           (ILINE < 0) centered  symbols  are  plotted  at  each
                    point without connecting lines.







                              4-30
                                               Graphing Routines


     ISYMB   (input parameter) is the integer equivalent of  the
                    desired centered symbol.

     DASH    (input parameter) is a flag  to  tell  whether  the
                    connecting lines are solid or dashed.
           (DASH = 0) make the connecting lines solid.
           (DASH > 0) make the connecting lines dashed.  DASH is
                    the length, in inches.



                                NOTE

         For the dashes to show up, the length of the dashes
         must  be  much  smaller  than  the distance between
         consecutive points.  Subroutine LINE should not  be
         used  to  plot  a  large  number  of  points  close
         together.





     4.2.6  Subroutine 'LOGAX'
            ---------- -------

          LOGAX is used to draw  a  logarithmic  axis  with  any
     number of cycles.  Each cycle is labelled.

             ********** calling sequence **********

     CALL LOGAX (X0,Y0,NCHR,ITITLE,ANGLE,AXSLEN,NCYC,IEXP)

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


     (X0,Y0) (input parameter) is the  coordinate  position,  in
                    inches, of the starting point for the axis.

     NCHR    (input   parameter)   specifies   the   number   of
                    characters in the title and on which side of
                    the axis the labeling  information  will  be
                    written.
           (NCHR > 0) make  the  'tick'  mark,  annotation,  and
                    header  placement  on  the  counterclockwise
                    side  of  the  axis.   This   condition   is
                    normally desired for the Y-axis.
           (NCHR =  0)  make  the  'tick'  mark  and  annotation
                    placement  on  the counter-clockwise side of
                    the axis.  There is no header on this axis.




                              4-31
Graphing Routines


           (NCHR < 0) make  the  'tick'  mark,  annotation,  and
                    header  placement  on  the clockwise side of
                    the  axis.   This  condition   is   normally
                    desired for the X-axis.


     ITITLE  (input parameter) is the title for the axis.   This
                    title is centered and placed parallel to the
                    axis line.  ITITLE  is  either  a  Hollerith
                    literal,  or  an  array containing five left
                    justified characters per  word.   The  title
                    has a fixed height of 0.15 inch.

     ANGLE   (input parameter) is  the  angle,  in  degrees,  at
                    which  the  axis  is  to be drawn.  Normally
                    this value is 0.0 for the  X-axis  and  90.0
                    for the Y-axis.

     AXSLEN  (input parameter) is the length, in inches, of  the
                    axis line.

     NCYC    (input parameter)  is  the  number  of  logarithmic
                    cycles wanted.

     IEXP    (input parameter) is the lower exponent  limit  for
                    the  axis.   The  base of the first cycle is
                    labeled with 10**IEXP.



                                NOTE

         The creation  of  an  (X,Y)  coordinate  system  is
         accomplished by two references to subroutine LOGAX.




















                              4-32
                                               Graphing Routines


     4.2.7  Subroutine 'LOGAXS'
            ---------- --------

          LOGAXS is used to draw a  logarithmic  axis  with  any
     number of cycles, with only some of the cycles labelled.

             ********** calling sequence **********

          CALL LOGAXS (X0,Y0,NCHR,ITITLE,ANGLE,AXSLEN,
                       NCYC,IEXP,LABTIC)

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


     (X0,Y0) (input parameters) is the coordinate  position,  in
                    inches, of the starting point for the axis.

     NCHR    (input   parameter)   specifies   the   number   of
                    characters in the title and on which side of
                    the axis the labeling  information  will  be
                    written.
           (NCHR > 0) make  the  'tick'  mark,  annotation,  and
                    title placement on the counterclockwise side
                    of the axis.   This  condition  is  normally
                    desired for the Y-axis.
           (NCHR =  0)  make  the  'tick'  mark  and  annotation
                    placement  on  the counter-clockwise side of
                    the axis.  There is no title on this axis.
           (NCHR < 0) make  the  'tick'  mark,  annotation,  and
                    title placement on the clockwise side of the
                    axis.  This condition  is  normally  desired
                    for the X-axis.


     ITITLE  (input parameter) is the title for the axis.   This
                    title is centered and placed parallel to the
                    axis line.  ITITLE  is  either  a  Hollerith
                    literal,   or   an   array  containing  five
                    left-justified  characters  per  word.   The
                    title has a fixed height of 0.15 inch.

     ANGLE   (input parameter) is  the  angle,  in  degrees,  at
                    which  the  axis  is  to be drawn.  Normally
                    this value is 0.0 for the  X-axis  and  90.0
                    for the Y-axis.

     AXSLEN  (input parameter) is the length, in inches, of  the
                    axis line.






                              4-33
Graphing Routines


     NCYC    (input parameter)  is  the  number  of  logarithmic
                    cycles wanted.

     IEXP    (input parameter) is the lower exponent  limit  for
                    the  axis.   The  base of the first cycle is
                    labeled with 10**IEXP.

     LABTIC  (input parameter) is the labeling interval for  the
                    'tick'  marks.   For example, if LABTIC = 3,
                    every third  'tick'  mark  is  labeled.   If
                    (LABTIC = 0) no labeling will be done.



                                NOTE

         The creation  of  an  (X,Y)  coordinate  system  is
         accomplished   by   two  references  to  subroutine
         LOGAXS.





     4.2.8  Subroutine 'SCALE'
            ---------- -------

          Subroutine SCALE is used to examine  the  data  values
     contained in an array to determine:


      1)  A  starting  value,  (FIRSTV)  which  is  an  adjusted
          minimum, or maximum value for the array (see NPT).

      2)  A  scaling  factor,  (DELTAV)  which  is  positive  or
          negative such that:

           A)  The  scale  annotation  drawn  by  AXIS  on  each
               division  'tick' mark will properly represent the
               range of real data values in the array.

           B) The data points, when plotted  by  LINE  will  fit
               within the given plotting area.


          These two values (FIRSTV and DELTAV) are  computed  by
     SCALE  and  stored  in  the two locations at the end of the
     data array used.   The  scaling  factor  (DELTAV)  that  is
     computed  represents  the  number of data units per inch of
     axis, but is adjusted so that it is always an  interval  of
     1,  2, 4, 5, or 8 * 10**N (N is an exponent consistent with
     the original unadjusted scaling factor).   This  adjustment
     insures that the axes can be labeled with integer numbers.

                              4-34
                                               Graphing Routines


          The starting value (FIRSTV) which would appear as  the
     first  annotation on the axis, is computed as some multiple
     of DELTAV that is equal to or outside  the  limits  of  the
     data in the array.

          For example, consider  an  array  having  a  range  of
     values  from  301  to  912 to be plotted over an axis of 10
     inches.  The unadjusted scaling factor is:

          (912 -  301.0)  /  10.0  = 61.1 units/inch.

     The adjusted DELTAV would be  80.0  (8 * 10**1).   In  this
     example,  a  FIRSTV  of  240.0  would be chosen as the best
     value if a minimum is returned;  1040.0 would be chosen  as
     the best value for the maximum.

          In another example, values from -1.0 to +1.0 are to be
     plotted over a 5 inch axis.

             (+1.0 - (-1.0)) / 5.0 = 0.4 units/inch

     DELTAV = 4 * 10**-1, FIRSTV = -1.2 for a minimum,  or  +1.2
     for  a  maximum.   Note  that  5  inches from -1.2 is +0.8,
     although the data goes to +1.0, which is past  the  top  of
     the axis.

             ********** calling sequence **********

                 CALL SCALE (ARRAY,AXSLEN,NPT)

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


     ARRAY   (input parameter) is the array of data points to be
                    examined.


                                        NOTE

                        This array must be  dimensioned  for
                        at  least two more elements than the
                        number of values  being  scanned  to
                        allow  SCALE  to  store the computed
                        starting  value  and   the   scaling
                        factor at the end of the array.









                              4-35
Graphing Routines


     AXSLEN  (input parameter) is the length  of  the  axis,  in
                    inches,  to  which the data is to be scaled.
                    It's value must be greater than 1.   If  the
                    value given is not a whole number, the value
                    given will be rounded  to  the  next  lowest
                    whole number and this value will be used for
                    calculations.

     NPT     (input parameter) is the number of data  values  to
                    be scanned within the array.
           (NPT > 0) return FIRSTV as the minimum value.
           (NPT < 0) return FIRSTV as the maximum value, and use
                    the  absolute  value of NPT as the number of
                    data points.

     FIRSTV is returned to the user in ARRAY(NPT+1)

                    DELTAV  is   returned   to   the   user   in
                    ARRAY(NPT+2).


          Generally, subroutine SCALE is referenced  to  examine
     each  array  to be plotted.  if the user knows the range of
     his data values, he doesn't have to reference SCALE for the
     array  as  long  as  he  supplies an appropriate FIRSTV and
     DELTAV when the axes subroutines and  subroutine  LINE  are
     called.


                                NOTE

         Unlike the other  routines  in  described  in  this
         chapter, subroutine SCALE does not do any plotting.





















                              4-36
                                               Labeling Routines


     4.3  LABELING ROUTINES
          -------- --------

          The routines used to label plots allow the  user  full
     freedom   of   choice   on   symbol   placement,  size  and
     orientation, as well as a fairly full selection of alphabet
     styles  for  the  characters.  The symbol sets available to
     the user can be changed with the SETSYM routine.

          See the description of SETSYM for a list of  character
     tables.   Examples  of the character sets is plotted in the
     appendix.

          The basic routine for  symbol  generation  is  SYMBOL,
     which  actually makes the calls to PLOT that define the pen
     strokes for the desired character.  The routine NUMBER is a
     routine  that is designed to make the generation of numeric
     labels convenient.  Careful use of  the  labeling  routines
     will  enhance the plot by attractively calling attention to
     the labeled features for easy identification.

          These routines are the included in FORLIB, the FORTRAN
     library.   Unlike  the  CALCNT  and PLOT3D routines, FORLIB
     routines get loaded automatically whenever they are needed.




          The Labelling Routines are:

     1.  NUMBER - Draw a floating-point number.

     2.  SETSYM - Select a symbol set.

     3.  SYMBOL - Draw text on the plot.



















                              4-37
Labeling Routines


     4.3.1  Subroutine 'NUMBER'
            ---------- --------

          Subroutine NUMBER will draw a floating-point number on
     the  plotter.  This routine converts the number to a string
     of digits and then calls subroutine SYMBOL.

             ********** calling sequence **********

        CALL NUMBER (X0,X0,HEIGHT,FNUM,ANGLE,NDIG,IRAD)

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


     (X0,Y0) (input parameters) is the coordinate, in inches, of
                    the  lower  left  hand  corner  of the first
                    character to  be  drawn  (before  rotation).
                    The value of 999.0 for X0 or Y0 means to not
                    change the appropriate pen coordinate.

     HEIGHT  (input parameter) is the height, in inches, of  the
                    digits to be drawn.

     FNUM    (input parameter) is the floating-point number that
                    is to be converted and plotted.

     ANGLE   (input parameter) is  the  angle,  in  degrees,  at
                    which the number is to be plotted.

     NDIG    (input parameter) controls  the  number  of  digits
                    plotted.
           (NDIG > 0) the number of digits to the right  of  the
                    decimal  point  that  are to be plotted.  If
                    NDIG  is  greater  than  eight,  only  eight
                    digits will be plotted.
           (NDIG = 0) only the integer portion of the number and
                    the decimal point will be plotted.
           (NDIG = -1) only the integer portion  of  the  number
                    will be plotted.
           (NDIG -1) the absolute value of NDIG - 1 digits  will
                    be truncated from the integer portion before
                    plotting.


     IRAD    (input parameter) is an  optional  argument.   This
                    argument  allows  the  user  to  specify the
                    output radix of the number.  If IRAD  equals
                    eight  the  number will be plotted in octal,
                    etc.





                              4-38
                                               Labeling Routines


                            Example
                            -------

           PI = 3.14159
           CALL NUMBER (999.0, 999.0, 0.1, PI, 90.0, 2)
     CC That drew '3.14' at 90 degrees, at the last
     CC  pen position



     4.3.2  Subroutine 'SETSYM'
            ---------- --------

          The SETSYM routine changes the character set  used  by
     the  SYMBOL  routine.  The system character sets are stored
     in SYS:SYMBOL.DAT[1,4], users may use a private set if they
     define the logical device name SYMBOL:.

             ********** calling sequence **********

                  CALL SETSYM(IFUNC,IARG,IANS)

                               or

               CALL SETSYM('WIDTH',LETTER,WIDTH)

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


     IFUNC   (input parameter) is the function to perform.

     IARG    (input parameter) is the argument for the function.

     IANS    (output parameter) is the returned value.


     (IFUNC = 'TABLE') change the character set table.  If  IARG
                    is    positive,   read   that   table   from
                    SYS:SYMBOL.DAT[1,4]  (like  the  old  ISETAB
                    function).   If  IARG is negative, read that
                    table from  SYMBOL:SYMBOL.DAT[-]  (like  the
                    old MSETAB function).
          IARG = (input parameter) The table to read.
          IANS = (output parameter) The  error  flag.   0  means
                    table   set   up,  -1  means  an  error  was
                    encountered.

     (IFUNC = 'QUERY') read the number of the current table  and
                    return it in IANS.





                              4-39
Labeling Routines


          IARG = (ignored)
          IANS = (output parameter) The current table number.

     (IFUNE = 'WIDTH')  read  the  width  of  the  character  as
                    compared to the height.
          IARG = (input parameter)  Either  a  single  character
                    between quotes, or an integer with the ASCII
                    code of the character.
          WIDTH = (output  parameter)  The  ratio  of  width  to
                    height, usually in the neighborhood of 0.67,
                    and returned as 0.0 if no such character.





                         Symbol Tables
                         ------ ------

         Table                  Upper   Lower   Numbers Punctu-
                                Case    Case            ation

         1  CSM Standard        yes     yes     yes     yes
         2  CSM secondary       yes     no      yes     yes
         3  Olde English        yes     yes     yes     yes
         4  Old German          yes     yes     no      no
         5  Old Italian         yes     yes     no      no
         6  Script              yes     yes     no      no
         7  Simplex Roman       yes     yes     yes     yes
         8  Simplex Italics     yes     yes     yes     yes
         9  Triplex Roman       yes     yes     yes     yes
         10 Triplex Italics     yes     yes     yes     yes
         11 Hershey's letters   yes     yes     yes     yes
         12 Simplex Greek       yes     yes     no      no
         13 Duplex Greek        yes     yes     no      no


          The CSM software retains only one symbol table at  any
     given  time;  it contains the description of alphabetic and
     numeric symbols, and SETSYM table  #1  contains  a  set  of
     centered symbols for marking points.













                              4-40
                                               Labeling Routines


          There are 26 centered  symbols  in  the  CSM  standard
     symbol  table  (SETSYM  table  number  1).   The exact same
     centered symbols appear in the CSM secondary table  (SETSYM
     table number 2).  These symbols are:

                        Centered Symbols
                        -------- -------

          0     Square box            13     Vertical bar
          1     Circle                14     Five pointed star
          2     Triangle              15     Horizontal bar
          3     Plus sign             16     Digit '0'
          4     X                     17     Digit '1'
          5     Diamond               18     Digit '2'
          6     Up arrow              19     Digit '3'
          7     X with top bar        20     Digit '4'
          8     Z                     21     Digit '5'
          9     Y                     22     Digit '6'
          10    Square Star           23     Digit '7'
          11    Asterisk              24     Digit '8'
          12    Hourglass             25     Digit '9'



     4.3.3  Subroutine 'SYMBOL'
            ---------- --------

          The SYMBOL subroutine draws alpha-numeric  strings  or
     centered  symbols  of any height (minimum = 0.02 inches) at
     any angle.   There  are  3  modes  of  operation  for  this
     routine:

          Mode 1:  Draw text for titles and captions (NCHR > 0).

          Mode 2:  Draw a single character or symbol (NCHR = 0).

          Mode 3:  Draw a single centered symbol (NCHR < 0).

             ********** calling sequence **********

          CALL SYMBOL (X0,Y0,HEIGHT,ICHARS,ANGLE,NCHR)

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











                              4-41
Labeling Routines


     Modes 1 and 2:
     ----- - --- --


     (X0,Y0) (input parameter) is the coordinate, in inches,  of
                    the  lower  left  hand  corner  of the first
                    character to be drawn,  before  rotation  by
                    ANGLE.   The  pen is up while moving to this
                    point.  If X0 and/or Y0 are  set  to  999.0,
                    the   next   symbol   will  be  drawn  as  a
                    continuation of the  text  previously  drawn
                    (the  pen  will not be repositioned from its
                    current position at the end of the text).

     HEIGHT  (input parameter) is the height, in inches, of  the
                    character(s)   to   be  drawn.   For  symbol
                    library character set 1 the width/height  is
                    8/8,   this   includes   the  spacing.   For
                    example, a  string  of  16  characters  0.15
                    inches  high will be 2.40 inches wide.  This
                    is not true for other symbol sets.

     ICHARS  (input parameter) is the text to be drawn.
           (for mode 1) ICHARS is either a literal  enclosed  by
                    apostrophes,  or  an  array  containing five
                    left-justified characters per element.
           (for mode 2) ICHARS(1) is the number of  the  desired
                    character.   ICHARS  may  be  an array or an
                    undimensioned variable.


     ANGLE   (input parameter) is the angle in degrees at  which
                    the text is to be plotted.

     NCHR    (input parameter) the mode of operation.
           (NCHR > 0) is the number of characters to be  plotted
                    from the ICHARS array (Mode 1).
           (NCHR = 0) indicates that 1 character,  as  shown  in
                    ICHARS, is to be plotted (Mode 2).















                              4-42
                                               Labeling Routines


     Mode 3:
     ---- --

     (X0,Y0) (input parameter) is the coordinate, in inches,  of
                    the  center of the centered symbol.  The pen
                    is returned to this point after the  special
                    character is drawn.

     HEIGHT  (input parameter) is the height and  width  of  the
                    desired symbol.

     ICHARS  (input parameter) is the integer equivalent of  the
                    desired  symbol,  ICHARS(1) equals the value
                    of the integer equivalent.  ICHARS may be an
                    array or an undimensioned variable.

     ANGLE   (input parameter) is the angle in degrees at  which
                    the symbol is to be plotted.

     NCHR    (input  parameter)  is  negative   and   determines
                    whether  the  pen  is  up or down during the
                    move to (X0,Y0).
           (NCHR = -1) the pen is up during the move to (X0,Y0).
           (NCHR = -2) the  pen  is  down  during  the  move  to
                    (X0,Y0).



                                NOTE

         The text symbols (in CSM library  symbol  table  1)
         are  generated  on  an 8 by 8 point (X,Y) grid with
         the starting point at the lower  left  corner,  and
         finish  point  at  the  lower  right  corner.   The
         special characters are generated on a 5 by 5  point
         grid  with the starting and finishing points at the
         center.  The coordinates (Xn,Yn) of the lower  left
         hand  corner of the Nth character to be plotted are
         given by:

             Xn = X0 + (N-1) * HEIGHT * COS(ANGLE)
             Yn = Y0 + (N-1) * HEIGHT * SIN(ANGLE)












                              4-43
Obsolete Functions


     4.4  OBSOLETE FUNCTIONS

          The following FUNCTION subprograms are obsolete:

     1.  IPLOT  - Replaced by subroutine PLOTS.

     2.  ISETAB - Replaced by subroutine SETSYM.

     3.  MSETAB - Replaced by subroutine SETSYM.




     4.4.1  Function 'IPLOT'
            -------- -------

          This routine is obsolete.  Subroutine PLOTS should  be
     used  to  initiate  the  plot.   The  change was made to be
     compatible with  DEC-supplied  plotting  routines,  and  to
     allow the plotter type to be explicitly specified.

          As an  interim  measure,  a  dummy  IPLOT  routine  is
     provided.  It does the following:

        FUNCTION IPLOT(IWARN)
        IPLT = 0                !Zero means default plotter
        IERR = IWARN            !Number of messages to trace
        CALL PLOTS(IPLT,IERR)   !Call the right routine
        IPLOT = IERR            !Zero means OK
        RETURN
        END



                                NOTE

         Subroutine IPLOT  will  eventually  go  away.   All
         programs  that  use IPLOT should be modified to use
         PLOTS instead.















                              4-44
                                              Obsolete Functions


     4.4.2  Function 'ISETAB'
            -------- --------

          This routine has  been  replaced.   Subroutine  SETSYM
     should  be  used  to  change  the data table for subroutine
     SYMBOL.

          As an interim  measure,  a  dummy  ISETAB  routine  is
     provided.  It does the following:

        FUNCTION ISETAB(ITABLE)
        CALL SETSYM('TABLE',ITABLE,IERR) !Call the right routine
        ISETAB = IERR                    !Zero means OK
        RETURN
        END



                                NOTE

         Subroutine ISETAB will  eventually  go  away.   All
         programs  that use ISETAB should be modified to use
         SETSYM instead.





     4.4.3  Function 'MSETAB'
            -------- --------

          This routine has  been  replaced.   Subroutine  SETSYM
     should  be  used  to  change  the data table for subroutine
     SYMBOL.

          As an interim  measure,  a  dummy  MSETAB  routine  is
     provided.  It does the following:

        FUNCTION MSETAB(ITABLE)
        CALL SETSYM('TABLE',-ITABLE,IERR) !Call right routine
        MSETAB = IERR                    !Zero means OK
        RETURN
        END



                                NOTE

         Subroutine MSETAB will  eventually  go  away.   Any
         programs  that use MSETAB should be modified to use
         SETSYM instead.



                              4-45











                           CHAPTER 5

                  CONTOURING AND 3-D ROUTINES



     5.1  CONTOURING ROUTINES
          ---------- --------

          The routines CALCNT, GRIDER, and CALSIZ allow the user
     to  take  data  that is (X,Y,Z) triples, reduce the data to
     equally spaced 'grided' data, and plot the information as a
     contour  map  of a specified size.  The user should be very
     aware of the fact that the basic (X,Y,Z) data  provided  to
     subroutine   GRIDER   is   changed  according  to  internal
     algorithms to make equally spaced data.  It is the  gridded
     data  that is plotted, NOT the users original data, and the
     gridded data may contain 'artifacts'.   The  artifacts  are
     artificial  highs  or  lows at a points in the gridded data
     array caused by the algorithm used to make  equally  spaced
     data.

          To use these routines you must include  LBY:CALCNT.REL
     as part of your LOAD or EXECUTE command.  For example:

               .EXECUTE MYPROG.FOR,LBY:CALCNT.REL
               -




     The CALCNT contouring routines consist of:

     1.  CALCNT - Draws the contour from equally spaced data

     2.  CALSIZ - Changes the size of the contour map

     3.  GRIDER - Transforms (X,Y,Z) to equally spaced data







                              5-1
Contour Map Routines


     5.1.1  Subroutine 'CALCNT'
            ---------- --------

          This program will draw contours on a rectangular  area
     which  has  been  defined  by  equally  spaced  data,  i.e.
     gridded data.  The size of this area is normally  8  inches
     by 8 inches, if the X and Y lengths are equal.  If they are
     not equal, the longer side  of  the  rectangle  will  be  8
     inches.   The size may be altered by referencing subroutine
     FACTOR or CALSIZ.  Subroutine FACTOR will scale the  entire
     plot up or down and subroutine CALSIZ will only increase or
     decrease the map size, the characters in the legend and the
     contour elevations will stay the same size.

             ********** calling sequence **********

       CALL CALCNT (X,Y,GRID,IX,IY,MAXX,MAXY,CLOW,CHIGH,
                       CINT,NELEV,LOWHI)

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


     (X,Y)   (input parameter) is the coordinate, in inches,  of
              the  lower  left  hand  corner of the contour map.
              Allow about .26 inches at the bottom of the map if
              the legend is wanted.  Allow about one (1) inch on
              each side of the map if the elevations are  to  be
              labeled.

     GRID    (input parameter)  is  the  two  dimensional  array
              containing   the  values  to  be  contoured.   The
              location of a point on the map is defined  by  the
              position of a point in the matrix.

     IX      (input parameter) is the number of contoured  grids
              in the X direction.

     IY      (input parameter) is the number of contoured  grids
              in the Y direction.

     MAXX    (input parameter) is the GRID array X dimension.

     MAXY    (input parameter) is the GRID array Y dimension.

     CLOW    (input parameter) is the lowest contour value.

     CHIGH   (input parameter) is the highest contour value.  If
              both  CLOW and CHIGH are zero, they will be set to
              the minimum and maximum of GRID array.

     CINT    (input parameter) is the contour interval.
             (CINT > 0) CINT is the contour interval.
             (CINT = 0) the contour interval  is  set  equal  to

                              5-2
                                            Contour Map Routines


                      (CHIGH - CLOW) / 16.
             (CINT 0) the  contour  interval  is  set  equal  to
                      (CHIGH - CLOW) / (-CINT).


     NELEV   (input  parameter)  indicates  contour   elevations
              along the right and left hand sides of the map.
             (NELEV > 0) the contour level label interval,  i.e.
                      if NELEV = 3 label every third contour.
             (NELEV = 0) do not label any contours.
             (NELEV  0)  do  not  label  contours  or   draw   a
                      perimeter.


     LOWHI   (input parameter) indicates lows and highs.
             (LOWHI = 0) do not mark the lows and highs.
             (LOWHI > 0) mark the lows and highs.  The lows  are
                      marked  with  an  'L'  and  the  highs are
                      marked with an 'H'.


                                NOTE

         The legend and the perimeter  around  the  map  are
         drawn using the blue pen, every fifth (5th) contour
         is drawn in black, and the lows and highs are drawn
         in red.



























                              5-3
Contour Map Routines


     5.1.2  Subroutine 'CALSIZ'
            ---------- --------

          CALSIZ allows the user  to  change  the  size  of  the
     contour  map to be plotted.  CALSIZ is used with subroutine
     CALCNT.

              ******** calling sequence **********

                       CALL CALSIZ (X,Y)

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

     X       (input parameter) is the maximum X  direction  size
              allowed for the map, in inches.

     Y       (input parameter) is the maximum Y  direction  size
              allowed for the map, in inches.


                                NOTE

         This routine will NOT cause the contour map  to  be
         expanded  in  one  direction  only.   The grid will
         remain  square,  and  the  map  will  be  uniformly
         reduced  to fit the most demanding dimension.  When
         using this routine allow  about  an  inch  on  both
         sides of the map in the X direction for the contour
         elevation label.

























                              5-4
                                            Contour Map Routines


     5.1.3  Subroutine 'GRIDER'
            ---------- --------

          GRIDER allows the  user  to  grid  irregularly  spaced
     three-dimensional data into equally spaced gridded data.  A
     weighted moving average technique is used to grid the data.

             ********** calling sequence **********

          CALL GRIDER (N,X,Y,Z,GRDSIZ,IX,IY,ZZ,NX,NY,
              MXMN,XMAX,XMIN,YMAX,YMIN,ZMAX,ZMIN)

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

     N       (input  parameter)  is  the   number   of   (X,Y,Z)
              three-dimensional data sets to be gridded.

     (X,Y,Z) (input  parameters)  are  the  coordinates  of  the
              irregularly  spaced  three-dimensional  data to be
              gridded.
             (X) is an array that contains the X values.
             (Y) is an array that contains the Y values.
             (Z) is an array that contains the Z values.

     GRDSIZ  (input parameter) is the  desired  length  of  each
              square  in  the  grid.   If GRDSIZ is less that or
              equal to zero GRIDER will calculate the best  grid
              size from the input data.
             (output parameter) is the length of the each square
              in  the  grid.  Warning - GRDSIZ may be changed by
              subroutine GRIDER.

     IX      (input parameter)  is  the  number  of  grid  lines
              wanted in the X direction.  If IX is less than two
              (2) GRIDER will calculate the  best  IX  from  the
              input data.
             (output parameter) is the number of grid lines used
              in  the  X direction.  Warning - IX may be changed
              by subroutine GRIDER.

     IY      (input parameter)  is  the  number  of  grid  lines
              wanted in the Y direction.  If IY is less than two
              (2) GRIDER will calculate the  best  IY  from  the
              input data.
             (output parameter) is the number of grid lines used
              in  the  Y direction.  Warning - IY may be changed
              by subroutine GRIDER.

     ZZ      (output parameter)  is  the  two-dimensional  array
              that contains the gridded data.

     NX      (input parameter) is the  X  dimension  of  the  ZZ
              array.  NX is the maximum value allowed for IX.

                              5-5
Contour Map Routines


     NY      (input parameter) is the  Y  dimension  of  the  ZZ
              array.  NY is the maximum value allowed for IY.

     MXMN    (input parameter) is a flag on whether  or  not  to
              calculate the X and Y maximums and minimums.
             (MXMN = 0) calculate XMAX, XMIN, YMAX, and YMIN.
             (MXMN > 0) do not calculate XMAX, XMIN,  YMAX,  and
                      YMIN, use what the user sends.

     XMAX    (input parameter) is the maximum X value.
             (output parameter) is the maximum X value  used  by
              subroutine  GRIDER.  Warning - XMAX may be changed
              by subroutine GRIDER.

     XMIN    (input parameter) is the minimum X value.
             (output parameter) is the minimum X value  used  by
              subroutine  GRIDER.  Warning - XMIN may be changed
              by subroutine GRIDER.

     YMAX    (input parameter) is the maximum Y value.
             (output parameter) is the maximum Y value  used  by
              subroutine  GRIDER.  Warning - YMAX may be changed
              by subroutine GRIDER.

     YMIN    (input parameter) is the minimum Y value.
             (output parameter) is the minimum Y value  used  by
              subroutine  GRIDER.  Warning - YMIN may be changed
              by subroutine GRIDER.

     ZMAX    (output parameter) the maximum Z value.

     ZMIN    (output parameter) the minimum Z value.




                                     NOTE

                  This routine does not do any plotting.





     5.2  3-D ROUTINES
          --- --------

          Documentation on SLIC3D,  GRID3D,  and  LOOK3D  to  be
     supplied at a later date.





                              5-6











                           CHAPTER 6

                     PROGRAMMING TECHNIQUES



     6.1  STARTING AND STOPPING PLOTTING
          -------- --- -------- --------

     The graphics software  for  plotting  routines  requires  a
     specific  sequence  of  calls to routines in the package in
     order to properly initialize the plotting package, and also
     to finish the plot correctly.  The subroutine PLOTS is used
     to  set  up  the  plotting  package  by   checking   window
     privileges,   getting   the   initial  character  set,  and
     gathering  identification  information  for  labeling   the
     spooled output.  Subroutine PLOTS must be called BEFORE any
     reference to a routine that tries to plot.

          Correct termination of a plotting sequence is made  by
     calling PLOT with a third argument of 999.  That is:


                      CALL PLOT (X,Y,999)

     Failure to properly terminate a plot may cause loss of  the
     plot  in handling because the spooling identification label
     will  be  missing.   Although  a  plot  may   be   properly
     initialized,   and  terminated,  it  is  possible  to  lose
     information on a plot due to the window limitations.   When
     the  plotting  routines  are initialized, the origin of the
     universal plotting window is set to the lower  left  corner
     of  a  default  11  by 11 inch window.  This default allows
     only  positive  X  and  Y  values  to  be  plotted  on  the
     unadjusted  window.  It is common practice to move the plot
     origin away from the corner of the plot window to  allow  a
     margin to contain title information, axis labels, and other
     identification.







                              6-1
Programming Techniques


                            Example
                            -------

          This example properly initializes a plot,  resets  the
     origin to allow a margin for notations, changes the default
     character set (with proper error recovery),  and  correctly
     terminates the plot.
           .
           .
           .
     C
     C  *** START PLOT OUTPUT ***
     C
        IERR = 2                !Ask for 2 warnings
        CALL PLOTS(IERR,0)      !Start the plot
        IF (IERR.NE.0) STOP '?CANNOT OPEN PLOT'
     C
     C  *** SET ORIGIN TO ALLOW 1 INCH LEFT AND
     C  *** BOTTOM MARGINS WHILE PLOTTING  ***
     C
        CALL PLOT (1.0, 1.0, -3)
           .
           .
           .
     C
     C  *** CHANGE TO SYMBOL SET #9 ***
     C  *** CLOSE PLOT AND STOP  ***
     C  *** IF ANY PROBLEMS OCCUR  ***
     C
        CALL SETSYM('TABLE',9,IERR)
        IF (IERR.EQ.0) GOTO 400
        CALL PLOT (X,Y,999) ! Must close plot first !!!
        STOP '?FAILURE TO GET SYMBOL SET 9'
     400     CONTINUE
           .
           .
           .
     C
     C  *** CLOSE PLOTTING OUTPUT ***
     C
        CALL PLOT (X,Y,999)
        STOP
        END











                              6-2
                                          Programming Techniques


     6.2  DEBUGGING TECHNIQUE
          --------- ---------

          Debugging should be done sequentially.

          First, be sure that your program is producing the data
     you  wish  to  plot  by  using  printouts before adding the
     plotter routines.

          Second, be  sure  that  you  are  plotting  the  curve
     correctly  before  adding  lots  of  'ginger  bread' (axis,
     title, grid, etc.).

          Third, add the trimmings that  produce  an  impressive
     plot.

                         Common Errors

          There are two  common  errors  that  give  programmers
     doing plotting the most trouble.

     1.  Not knowing what data values  are  being  sent  to  the
         plotting  routines.   Many apparent plotting errors are
         in  fact  incorrect  data  values  being  sent  to  the
         plotting  routines.   Please be sure to print a listing
         of the data and check it for correctness before sending
         it to the plotter.

     2.  Incorrect  calling  sequence  for  a   given   plotting
         routine.   The error may be due to a lack of sufficient
         arguments  for  a  routine   (missing   arguments)   or
         arguments of an incorrect type (e.g.  the routine needs
         an  integer  value,  and  you  have  supplied  a   real
         variable, or visa-versa).




















                              6-3
Warning and Error Messages


     6.3  WARNING AND ERROR MESSAGES
          ------- --- ----- --------

          The plotting package  will  issue  warning  and  error
     messages for any actions which cause detectable failures of
     attempts to plot.  The  warning  messages  begin  with  the
     percent  sign  (%)  to  indicate a non-fatal error, and the
     program will continue.  The error messages will begin  with
     a question mark (?), and will be fatal errors, that is, the
     program execution will be halted.


                        Warning Messages
                        ------- --------

     %PLTWWE The window was exceeded

              A  reference  to  subroutine  PLOT  exceeded   the
              current window.

                     Error Messages (Fatal)
                     ----- -------- -------

     ?PLTCSP Please contact the systems programmer.

              This message  means  there  is  an  error  in  the
              plotting package that can not be self corrected.



























                              6-4











                           APPENDIX A

                        SAMPLE PROGRAMS



          This chapter contains an example of  a  program  which
     plots   a  function  generated  in  a  main  program.   The
     subroutine LINPLT is then used to plot this function  on  a
     linear-linear plot.

          The second  program  is  the  one  used  to  plot  the
     character sets one through thirteen found at the end of the
     manual.



     A.1  EXAMPLE PROGRAM #1   LINPLT
          ------- ------- --

          This program calls a  user  defined  plotting  routine
     called  LINPLT.   X  is the arrary of X-values and Y is the
     array of sinc(X).

            DIMENSION X(10000),Y(10000)
            I=0
            DO 100 A=-360,360,.1
            I=I+1
            Y(I)=SIND(360*A/60)/A/ACOS(-1.)*180/(.5)
            X(I)=A  !generate the (X,Y) pair for SINC function
     100    CONTINUE
            CALL LINPLT(X,Y,I)   !calling plotting subroutine
            STOP
            END











                              A-1
Sample Programs


            SUBROUTINE LINPLT(X,Y,N)
            DIMENSION X(N),Y(N),ITITLE(5)
            DATA ITITLE/'PLOT OF A SINC FUNCTION'/
            IERR=-9
      C     CALL PLOTS(IERR,'TEK')   !direct plotting on TEK
            CALL PLOTS(IERR,'SPOOL') !spooled output for DP-8
            CALL ERASE               !erase the screen if on TEK
            IF(IERR.NE.0)STOP 'PLOT PROBLEM'
            CALL PLOT(1.0,1.0,-3)
            IP=NEWPEN(2)
            CALL FACTOR(0.5)         !scale everything down
            CALL SYMBOL(1.5,4.25,.15,ITITLE,0.0,23)
            XLEN=9.0
            YLEN=4.0
            NPT=N-2
            CALL SCALE(X,XLEN,NPT)   !scaling routine for LINE
            CALL SCALE(Y,YLEN,NPT)
            CALL LINE(X,Y,NPT,0,5,0) !connect (X,Y) pairs
            CALL GRID(0,0,1.,1.,8,4) !put a grid on the plot
            CALL PAUSEP(45)          !pause for 45 sec if on TEK
            CALL ERASE
            CALL PLOT(W,V,999)
            RETURN
            END






























                              A-2
                                                 Sample Programs


     A.2  EXAMPLE PROGRAM #2   SYMBOL TABLES
          ------- ------- --

          This is the program used to plot the  thirteen  symbol
     tables  found  at  the end of this manual.  It makes use of
     the SYMBOL and SETSYM subroutines.


        PROGRAM TABLES  !Draws the SYMBOL sets for Appendix D
        DIMENSION TTL1(9),TTL2(7),DATE(3)
        DATA TTL1/'CHARACTERS AVAILABLE IN SUBROUTINE "SYMBOL"'/
        DATA TTL2/'CHARACTER SET IN SETSYM TABLE # '/
        DATA DATE  /'OCTOBER 1982'/

     C Loop through all 13 tables
        DO 40 ITABLE = 1,13
        TYPE 10, ITABLE
     10 FORMAT(' Starting SETSYM table #',I2)
        IERR = 2                    !2 error messages
        CALL PLOTS(IERR,'SPOOL')    !Start the plot
        IF(IERR.NE.0)STOP 'PLOT FAIL'
        CALL PLOT(0.0,1.0,-3)       !Leave room for page numbers
        CALL FACTOR(0.80)           !Reduce size to 5.6 by 8.8

     C Draw a box around the plot in blue
        CALL NEWPEN(1,IERR)         !Reset to blue pen
        CALL PLOT(0.0, 0.0,3)       !Lower left corner, pen up
        CALL PLOT(0.0,11.0,2)       !Left edge
        CALL PLOT(8.5,11.0,2)       !Top edge
        CALL PLOT(8.5, 0.0,2)       !Right edge
        CALL PLOT(0.0, 0.0,2)       !Bottom edge

     C Draw the title using SETSYM table #1
        CALL SETSYM('TABLE',1,IERR) !Reset to standard table
        CALL NEWPEN(2,IERR)         !Change to blue pen
        ATYPE = FLOAT(ITABLE)       !NUMBER needs a REAL arg
        CALL SYMBOL(0.8,10.0,0.15,TTL1,0.0,43)  !Plot titles
        CALL SYMBOL(1.5,9.6,0.15,TTL2,0.0,32)
        CALL NUMBER(999.0,999.0,0.25,ATYPE,0.0,-1,10)

        X0 = 1.4 ; Y0 = 8.6         !Origin
     C Change to new character set
        ITEMP = ITABLE              !Avoid warning from FORTRAN
        CALL SETSYM('TABLE',ITEMP,IERR)
        X = 1.5 ; Y = 9.2 ; H = 0.15
        CALL SYMBOL(X,Y,H,'ABCDEFGHIJKLMNOPQRSTUVWXYZ',0.0,26)
        Y = 9.0
        CALL SYMBOL(X,Y,H,'abcdefghijklmnopqrstuvwxyz',0.0,26)






                              A-3
Sample Programs


     C Create 6 columns, octal 40 thru 160
        DO 20 ICOL = 2,7
        X = X0 + FLOAT(ICOL-2)*1.0 + 0.50
     C Do 16 rows in each column
        DO 20 IROW = 0,15
        Y = Y0 - FLOAT(IROW)*0.5 - 0.5
        ICHAR = ICOL*16 + IROW
        CALL SYMBOL(X,Y,0.30,ICHAR,0.0,0)
     20 CONTINUE        !End of DO IROW and DO ICOL

     C Go back to standard characters and label each symbol
        CALL SETSYM('TABLE',1,IERR)
        IF(IERR.NE.0) STOP 'CANNOT CHANGE BACK TO #1'
        CALL SYMBOL(3.25,0.2,0.15,DATE,0.0,12)
        DO 30 ICOL = 2,7
        X = X0 + FLOAT(ICOL-2)*1.0
     C Label the top of each column
        CALL SYMBOL(X,Y0,0.06,'DEC OCT SYM',0.0,11)
        DO 30 IROW = 0,15
        Y = Y0 - FLOAT(IROW)*0.5 - 0.5
        ICHAR = ICOL*16 + IROW
        AI = FLOAT(ICHAR)
        CALL NUMBER(X,Y,0.06,AI,0.0,-1,10)  !Decimal
        X3 = X + 0.24
        CALL NUMBER(X3,Y,0.06,AI,0.0,-1,8)  !Octal
     30 CONTINUE        !End of DO IROW and DO ICOL

     C Finish this plot correctly
     40 CALL PLOT(X,Y,999)      !End of DO ITABLE=1,13
        END
























                              A-4











                           APPENDIX B

                        LIBRARY PROGRAMS



          This appendix shows sample runs of  plotting  programs
     from the System Library.

     1.  EZPLOT - Draws simple graphs

     2.  GRAPH  - Does curve approximation (spline fit)

     3.  SIMPLT - Rewrite of EZPLOT

     4.  DRAW   - Interactive drawing for TEK 4012 or GIGI




     B.1  EZPLOT

          EZPLOT is the old work horse plotting routine  of  the
     CSM  library  and  has  been  in  use for many years.  This
     routine allows the user to view his data  in  a  quick  and
     dirty  fashion.   The program is quick to use but does lack
     some of the frills of GRAPH or SIMPLT

        .RUN LBY:EZPLOT
        [11:59:05]
        

        DO YOU WANT GENERAL INSTRUCTIONS ? *YES

        DATA INPUT MUST BE REAL AND IN X,Y PAIRS.
        DATA MAY BE ENTERED FROM A TERMINAL
        OR READ FROM AN INPUT DATA FILE.
        
        YOU WILL BE ASKED TO SPECIFY LABELS FOR THE
        X AND Y AXES, TO DETERMINE THEIR LENGTHS,
        AND TO GIVE A TITLE FOR THE PLOT.
        
        YOU MUST SPECIFY WHETHER YOU WANT SYMBOLS PLOTTED
        AT EACH POINT, A CONNECTING LINE DRAWN, OR BOTH.

                              B-1
Library Programs


        NOTE: THE LINE MAY BE DASHED OR SOLID.
        
        YOU WILL BE GIVEN THE OPTION OF A LINEAR-LINEAR,
        LINEAR-LOG, LOG-LINEAR OR LOG-LOG PLOT.
        
        YOU MAY SELECT AUTO SCALING, IN WHICH CASE THE
        MAX AND MIN VALUES OF THE ARRAY ARE USED FOR SCALING,
        OR YOU MAY SPECIFY THE UPPER AND LOWER
        BOUNDS TO BE USED FOR SCALING.
        
        IF MORE THAN ONE SET OF DATA WILL BE PLOTTED
        ON THE SAME AXES, SPECIFY AN UPPER BOUND AND A
        LOWER BOUND FOR THE FIRST SET OF DATA WHICH WILL
        ACCOMMODATE THE SUBSEQUENT SETS OF DATA.
        
        THE PEN WILL BE BLACK FOR THE FIRST SET OF DATA
        PLOTTED. YOU HAVE THE OPTION OF CHANGING THE COLOR
        FOR SUBSEQUENT SETS OF DATA ON THE SAME AXES.
        
        TYPE T IF YOU WISH TO TYPE IN DATA
        TYPE F IF YOU WISH DATA READ FROM A FILE
        *F

        WHAT IS THE NAME OF YOUR INPUT FILE ? *FOR10.DAT

        ENTER FORMAT OF DATA INCLUDING PARENS
        CANNOT EXCEED 30 CHARACTERS INCLUDING THE PARENS.
        *(2G)

           4 DATA VALUES READ
        
        DO YOU WANT THE DATA TYPED ON YOUR TERMINAL ? *NO

        TYPE THE X-AXIS LABEL,20 CHARACTERS OR LESS
        *Title of x-axis

        TYPE THE Y-AXIS LABEL, 20 CHARACTERS OR LESS
        *Title of y-axis

        TYPE A TITLE FOR THE GRAPH,20 CHAR OR LESS
        *Title of plot

        IF YOU WANT A SYMBOL PLOTTED AT EACH POINT, TYPE -1
        IF YOU WANT A LINE DRAWN CONNECTING PTS, TYPE 0
        IF YOU WANT BOTH SYMBOLS AND A LINE, TYPE 1
        *0

        FOR A DASHED LINE, TYPE 1
        FOR A SOLID LINE, TYPE 0
        *1

        FOR LINEAR-LINEAR PLOT, TYPE 1
        FOR LINEAR-LOG PLOT, TYPE 2

                              B-2
                                                Library Programs


        FOR LOG-LINEAR PLOT, TYPE 3
        FOR LOG-LOG PLOT, TYPE 4
        *1

        THE X AND Y AXES HAVE A MAX OF 9.0 INCHES
        TYPE THE LENGTH OF THE X AXIS
        *8

        TYPE THE LENGTH OF THE Y AXIS
        *8

        DO YOU WANT AUTOMATIC SCALING, Y OR N ? *Y

        ARE GRAPH SPECIFICATIONS CORRECT ?
        IF NOT, PROGRAM ASKS ALL GRAPH SPECS AGAIN.
        *Y

        DO YOU WANT ANOTHER SET OF DATA
        PLOTTED ON THE SAME SET OF AXES ? *N

        STOP
        
        End of Execution


                                NOTE

         The value or characters preceded by * are typed  in
         by the user

























                              B-3
Library Programs


     B.2  GRAPH

          GRAPH is another library program.

     .RUN LBY:GRAPH
     [13:08:02]

         THIS A FINAL PLOTTING PROGRAM IN WHICH
         THE USER CAN PRODUCE A FINAL, POLISHED PLOT.
         THE USER SHOULD THOROUGHLY KNOW HIS DATA
         BEFORE RUNNING THIS PROGRAM.

         ENTER PLOT TITLE (--2-- LINES OF 50 CHAR. MAX.)
         (HIT THE <RETURN> AFTER EACH LINE.)
     This is the title of the plot,
     it is 2 lines long.

         FOR PLOT TITLE TO APPEAR AT TOP    --ENTER "T"
         FOR PLOT TITLE TO APPEAR AT BOTTOM --ENTER "B"
     T

         CHOOSE THE TYPE OF GRAPH TO BE PLOTTED.
         LINEAR-LINEAR GRAPH --ENTER "1"
         LINEAR-LOG GRAPH    --ENTER "2"
         LOG-LINEAR GRAPH    --ENTER "3"
         LOG-LOG GRAPH       --ENTER "4"
     1

         DO YOU WANT THE X-AXIS TO INTERSECT
         THE Y-AXIS AT SOME POINT OTHER THAN THE
         LOWER-LEFT CORNER OF THE GRAPH ?
     NO

         THE X-AXIS WILL BE DEALT WITH FIRST.
         ENTER THE TITLE FOR THE AXIS (50 CHAR. MAX.)
     This is the X-AXIS

         ENTER THE LENGTH FOR THE X-AXIS LINE(1" to 10").
     10

         ENTER THE START AND END VALUES FOR X-AXIS.
         (LEFT VALUE , RIGHT VALUE)
     0,10

         ENTER THE INCREMENT (IN DATA UNITS) BETWEEN
         LABELED TIC MARKS ALONG THE AXIS.
         (THESE TICS WILL BE LABELED)
     1

         HOW MANY INTERMEDIATE DIVISIONS
         DO YOU WANT BETWEEN THE LABELED TICS?
         (THESE DIVISIONAL TICS WILL NOT BE LABELED.)
     5

                              B-4
                                                Library Programs


         IN LABELING THE AXIS, HOW MANY SIG FIGS
         DO YOU WANT PRINTED PAST THE DECIMAL?
         (IF DECIMAL POINTS ARE NOT DESIRED--ENTER "-1" )
     1

         WAS ALL THE X-AXIS INFORMATION PUT IN CORRECTLY ?
     Y

         THE Y-AXIS WILL NOW BE DEALT WITH.
         ENTER THE TITLE FOR THE AXIS (50 CHAR. MAX.)
     This is the Y-AXIS

         ENTER THE LENGTH FOR THE Y-AXIS LINE(1" to 9").
     7

         ENTER THE START AND END VALUES FOR Y-AXIS.
         (BOTTOM VALUE , TOP VALUE)
     0,100

         ENTER THE INCREMENT (IN DATA UNITS) BETWEEN
         LABELED TIC MARKS ALONG THE AXIS.
         (THESE TICS WILL BE LABELED)
     10

         HOW MANY INTERMEDIATE DIVISIONS
         DO YOU WANT BETWEEN THE LABELED TICS?
         (THESE DIVISIONAL TICS WILL NOT BE LABELED.)
     5
         IN LABELING THE AXIS, HOW MANY SIG FIGS
         DO YOU WANT PRINTED PAST THE DECIMAL?
         (IF DECIMAL POINTS ARE NOT DESIRED--ENTER "-1" )
     -1

         WAS ALL THE Y-AXIS INFORMATION PUT IN CORRECTLY ?
     Y

         WHAT PEN COLOR DO YOU WANT FOR BOTH AXES?
         (BLUE, BLACK, OR RED)
     BLUE

         WOULD YOU LIKE A GRID TO BE DRAWN ?
     NO

         THE DATA WILL NOW BE DEALT WITH.
         TO ENTER THE DATA POINTS FROM YOUR TERMINAL--ENTER "T"
         TO ENTER THE DATA POINTS FROM A DATA FILE  --ENTER "F"
     F

         WHAT IS THE NAME OF YOUR DATA FILE ?
     TEST.DAT

         ENTER THE FORMAT OF YOUR DATA.
         (INCLUDE PARENTHESIS)

                              B-5
Library Programs


     (2G)

         TO PLOT SYMBOLS AT THE DATA POINTS        --ENTER "-1"
         TO PLOT A LINE THROUGH THE DATA POINTS    --ENTER "0"
         TO PLOT BOTH LINE AND SYMBOLS             --ENTER "1"
         TO PLOT A DASHED-LINE                     --ENTER "2"
         TO PLOT BOTH DASHED-LINE AND SYMBOLS      --ENTER "3"
         TO PLOT A BEST-FIT-LINE OF THE DATA POINTS--ENTER "4"
              (POLYNOMIAL REGRESSION)
         TO PLOT BOTH BEST-FIT-LINE AND SYMBOLS    --ENTER "5"
     5

         CHOOSE THE SYMBOL TO BE PLOTTED:
         SQUARE  --ENTER "0"
         CIRCLE  --ENTER "1"
         TRIANGLE--ENTER "2"
            +    --ENTER "3"
            X    --ENTER "4"
         DIAMOND --ENTER "5"
            *    --ENTER "6"
         LOZENGE --ENTER "10"
         STAR    --ENTER "14"
     2

         WHAT PEN COLOR DO YOU WANT FOR THE PLOT?
     BLACK

         WHAT DEGREE OF POLYNOMIAL WOULD YOU LIKE
         THE DATA POINTS TO BE FIT TO ?
     2

         DO YOU WANT THE CURVE-FIT-LINE TO EXTEND
         TO THE EDGES OF THE GRAPH ?
     Y

         THE COEFFICIENTS FOR THE BEST-CURVE-FIT
         LINE (IN ASCENDING ORDER) ARE:
          0.0000000
          0.0000001
          1.0000000
         DO YOU WANT TO PLOT MORE DATA ON THIS GRAPH ?
     NO

         A PLOT FILE HAS BEEN CREATED, AND EXISTS
         NOW ON YOUR AREA.  IF YOU ARE LOGGED-IN AT
         A TEKTRONIX, THE PLOT CAN BE VIEWED BY THE
         COMMAND:  R TEK
     STOP

     End of Execution
     CPU Time: 1.01     Elapsed time: 3:10.63
     EXIT


                              B-6
                                                Library Programs


     .DIRECT *.PLT
     [13:12:01]

     QA63NZ PLT  23  <077> 1-Nov-82  DSKA:[11,10] GRAPH

     .TEK QA63NZ.PLT
     [13:12:26
       (The TEK program shows the plot on the screen)

     .PLOT *.PLT
     [13:13:26]
     [Plotter job GRAPH queued, request #2067, limit 4]


                                NOTE

         Everything that starts on column 1 was typed by the
         user.





     B.3  SIMPLT

          SIMPLT is a newer version of a quick plotting program.
     The  main benifit of this program is that it can be used to
     make very simple plots or fancy plots.  This  program  also
     has  the advantage of having a cubic spline curve smoothing
     for the lines connecting the data points.


        .R LBY:SIMPLT
        [11:07:59]
        

        Welcome to SIMPLT, version 1.17
        Do you need instructions? *Y
        
        SIMPLT.HLP                              13-Dec-80
        
        Some of the features of SIMPLT are:
                Logarithmic plotting
                Centered symbols
                Dashed or solid lines
                Up to ten sets of data on a single plot
                Automatic scaling
                Cubic spline curve smoothing
                Polynomial regression curve fitting
                Extensive error checking
        
        To use SIMPLT, type:
                .RUN LBY:SIMPLT

                              B-7
Library Programs


        Then just answer the questions. Good luck!!!
        
        [End of SIMPLT.HLP]
        

        For input files, you may type any valid file spec.
        Default format is (2G).
        
        To type data, enter file spec as
        either 'TTY:' or 'TYPE'.
        
        Input file: *{Input the file name}
        Enter format (include parens): *(2G)

        EOF reached. read terminates with   4 points read.
        Would you like to see the data? *N

        Another set of data? *N
        [ 1 sets entered]
        
        Title of graph: *The desired title for the plot

        X axis title: *The title of the x-axis
        X axis length (inches): *8
        Is the x axis logarithmic? *N

        Y axis title: *The title of the y-axis
        Y axis length (inches): *8
        Is the y axis logarithmic? *N

        Would you like a grid? *Y

        Line # 1 - What color (blue, black, or red)? *BLACK
                   Centered symbols? *Y
                   Connecting lines? *Y
                   Dashed lines? *Y

        Plot is finished. Thank you.
        
        End of Execution
        --------------------------------------------------------
                             OR


        
                   Centered symbols? *Y
                   Connecting lines? *N
                   Smoothed lines? *N
                   Polynomial regression line? *Y
                     Degree of curve (5 or less, please)? *4
                     Do you want the regression line to be
                     drawn to the edges of the graph? *Y


                              B-8
                                                Library Programs


        Plot is finished. Thank you.
        
        End of Execution
        --------------------------------------------------------
                             OR


                   Centered symbols? *Y
                   Connecting lines? *N
                   Smoothed lines? *Y
                   Dashed lines? *Y

        Plot is finished. Thank you.
        
        End of Execution


                                NOTE

         The responses preceded by an asterisk are typed  by
         the user





     B.4  DRAW

          The DRAW package consists of a series of programs that
     run   interactively  on  the  TEK  4012  or  GIGI  graphics
     terminals.  The program  triggers  the  crosshairs  on  the
     terminal,  so that the user can position the crosshairs and
     type single-letter commands.

          The manual for the DRAW package is available by

        .PRINT MAN:DRAW.MAN


                                NOTE


              The  DRAW  package   is   suitable   for   the
         generation  one-shot  special  plots,  and  is  not
         recommended for graphing data.









                              B-9











                           APPENDIX C

             HELP AND DOCUMENTARY FILES ON PLOTTING



     C.1  HELP FILES ON PLOTTING

          On the computer in the help files (HLP:)  and  in  the
     documentary  files (DOC:), there is a series of files which
     can aid a user in writting plotting programs.

     1.  The command ".HELP PLOTS" will  type  out  the  general
         PLOT help file.

     2.  The  command  ".HELP  PLOTROUTINES"   will   type   out
         HLP:PLOTRO.HLP.   This  help file consists of a list of
         plot subroutines and their arguments.

     3.  The file DOC:PLOT.DOC documents the differences between
         the  old version 11 routines and the current version 12
         routines.

     4.  A copy of this manual is stored  on  MAN:PLOT.MAN,  but
         that  copy does not have any of the plots from Appendix
         D, and is bulky.  A  better  copy  of  this  manual  is
         available  from  the  Dispatcher  at  the CSM Computing
         Center, on the Colorado School of Mines campus.

















                              C-1











                           APPENDIX D

                    EXAMPLES OF SYMBOL SETS



          The following is examples of  the  thirteen  character
     sets  available on the system.  These sets may be retrieved
     by using the SETSYM subroutine.

          The thirteen character sets are:

     1.  CSM Standard
     2.  CSM Secondary
     3.  Olde English
     4.  Old German
     5.  Old Italian
     6.  Script
     7.  Simplex Roman
     8.  Simplex Italics
     9.  Triplex Roman
    10.  Triplex Italics
    11.  Hershey's letters
    12.  Simplex Greek
    13.  Duplex Greek




















                              D-1
Examples of SYMBOL sets


     D.1  SETSYM TABLE 1   CSM STANDARD
          ------ ----- -




















































                              D-2
                                         Examples of SYMBOL sets


     D.2  SETSYM TABLE 2   CSM SECONDARY
          ------ ----- -




















































                              D-3
Examples of SYMBOL sets


     D.3  SETSYM TABLE 3   OLDE ENGLISH
          ------ ----- -




















































                              D-4
                                         Examples of SYMBOL sets


     D.4  SETSYM TABLE 4   OLD GERMAN
          ------ ----- -




















































                              D-5
Examples of SYMBOL sets


     D.5  SETSYM TABLE 5   OLD ITALIAN
          ------ ----- -




















































                              D-6
                                         Examples of SYMBOL sets


     D.6  SETSYM TABLE 6   SCRIPT
          ------ ----- -




















































                              D-7
Examples of SYMBOL sets


     D.7  SETSYM TABLE 7   SIMPLEX ROMAN
          ------ ----- -




















































                              D-8
                                         Examples of SYMBOL sets


     D.8  SETSYM TABLE 8   SIMPLEX ITALICS
          ------ ----- -




















































                              D-9
Examples of SYMBOL sets


     D.9  SETSYM TABLE 9   TRIPLEX ROMAN
          ------ ----- -




















































                              D-10
                                         Examples of SYMBOL sets


     D.10  SETSYM TABLE 10   TRIPLEX ITALICS
           ------ ----- --




















































                              D-11
Examples of SYMBOL sets


     D.11  SETSYM TABLE 11   HERSHEY'S LETTERS
           ------ ----- --




















































                              D-12
                                         Examples of SYMBOL sets


     D.12  SETSYM TABLE 12   SIMPLEX GREEK
           ------ ----- --




















































                              D-13
Examples of SYMBOL sets


     D.13  SETSYM TABLE 13   DUPLEX GREEK
           ------ ----- --




















































                              D-14


                           GRAPHICS MANUAL




     4006 . . . . . . . . . . . .  2-3
     4012 . . . . . . . . . . . .  2-1
     4025 . . . . . . . . . . . .  2-3
     999
       AXES . . . . . . . . . . .  4-25
       NUMBER . . . . . . . . . .  4-38
       PLOT . . . . . . . . . . .  4-11, 6-1
       PLOTS  . . . . . . . . . .  4-12
       SYMBOL . . . . . . . . . .  4-42

     ARDS . . . . . . . . . . . .  2-2, 4-20
     AXES . . . . . . . . . . . .  4-24
     AXIS . . . . . . . . . . . .  4-26

     CALCNT . . . . . . . . . . .  5-2
     CALCOMP  . . . . . . . . . .  3-1
     CALSIZ . . . . . . . . . . .  5-4
     Centered symbols . . . . . .  4-41
     Common errors  . . . . . . .  6-3
     Coordinate system  . . . . .  3-5

     DASHLN . . . . . . . . . . .  4-28
     Debugging  . . . . . . . . .  6-3
     DMP-4R . . . . . . . . . . .  2-1, 4-4, 4-19 to 4-20
     DP-8 . . . . . . . . . . . .  2-1

     ERASE  . . . . . . . . . . .  2-4, 4-2
     Error messages . . . . . . .  6-4
     Example programs . . . . . .  A-1
       LINPLT . . . . . . . . . .  A-1
       symbol table routines  . .  A-3

     FACTOR . . . . . . . . . . .  3-5, 4-3, 4-5, 4-14, 4-20

     GIGI . . . . . . . . . . . .  2-1, 3-1, 4-19 to 4-20
     Graphics terminal  . . . . .  4-6, 4-9, 4-12
       hardware . . . . . . . . .  2-3 to 2-4
       policies . . . . . . . . .  1-2
     Graphing routines  . . . . .  4-23
     GRID . . . . . . . . . . . .  4-29
     Grider . . . . . . . . . . .  5-5

     Hardware . . . . . . . . . .  2-1
       ARDS . . . . . . . . . . .  2-2
       GIGI . . . . . . . . . . .  2-4
       graphics terminal  . . . .  2-3 to 2-4
       Houston Instruments DP-8 .  2-1
       ReGIS plotter  . . . . . .  2-5

                            Index-i


       TEKTRONIX  . . . . . . . .  2-3
     Help . . . . . . . . . . . .  C-1
       HELP PLOTROUTINES  . . . .  C-1
       HELP PLOTS . . . . . . . .  C-1
       PLOT.DOC . . . . . . . . .  C-1
     Houston Instruments DP-8 . .  1-1, 2-1, 3-1, 3-6, 4-1, 4-9, 
                                   4-20
       window size  . . . . . . .  1-2

     Ink colors . . . . . . . . .  1-3
     IPLOT  . . . . . . . . . . .  4-44
     ISETAB . . . . . . . . . . .  4-45

     Library programs
       DRAW . . . . . . . . . . .  B-9
       EZPLOT . . . . . . . . . .  B-1
       GRAPH  . . . . . . . . . .  B-4
       SIMPLT . . . . . . . . . .  B-7
     LINE . . . . . . . . . . . .  4-30
     LINPLT . . . . . . . . . . .  A-1
     LOGAX  . . . . . . . . . . .  4-31
     LOGAXS . . . . . . . . . . .  4-33

     Monitor PLOT command . . . .  3-1
       examples . . . . . . . . .  3-3
       switches . . . . . . . . .  3-2
     MSETAB . . . . . . . . . . .  4-45

     NEWPEN . . . . . . . . . . .  4-4
     NUMBER . . . . . . . . . . .  4-38, A-3

     Obsolete functions . . . . .  4-44
     Operator . . . . . . . . . .  2-2, 4-9
     OPRTXT . . . . . . . . . . .  1-3, 4-6, 4-9
     ORIGIN . . . . . . . . . . .  4-3, 4-5, 4-15
     Origin . . . . . . . . . . .  3-5

     Paper
       NORMAL . . . . . . . . . .  1-2
       P311 . . . . . . . . . . .  1-2
     PAUSEP . . . . . . . . . . .  4-7, 4-9
     Pen colors . . . . . . . . .  1-3
     Pixel  . . . . . . . . . . .  2-4
     PLOT . . . . . . . . . . . .  3-5, 6-2
       close  . . . . . . . . . .  4-11
       initiate . . . . . . . . .  4-12
       monitor command  . . . . .  2-2, 3-1
         examples . . . . . . . .  3-3
         switches . . . . . . . .  3-2
       open . . . . . . . . . . .  4-12
       subroutine . . . . . . . .  4-8
       terminate  . . . . . . . .  4-11
     PLOT(X,Y,-3) . . . . . . . .  4-9, 4-14

                            Index-ii


     PLOT(X,Y,999)  . . . . . . .  4-11, 6-1
     PLOTS  . . . . . . . . . . .  4-12, 4-20, 6-2
       'DMP4R'  . . . . . . . . .  2-5
       'GIGI' . . . . . . . . . .  2-4
       'SPOOL'  . . . . . . . . .  2-2
       'TEK'  . . . . . . . . . .  2-3
       IPLT=0 . . . . . . . . . .  2-2 to 2-5
     Plotter
       defaults . . . . . . . . .  1-2
       hardware . . . . . . . . .  2-1
     Plotting
       error messages . . . . . .  6-4
       starting . . . . . . . . .  6-1
       stopping . . . . . . . . .  6-1
       warnings . . . . . . . . .  6-4
     Policies . . . . . . . . . .  1-1
       copies . . . . . . . . . .  1-1
       distribution . . . . . . .  1-1
       graphics terminal  . . . .  1-2
       standard plotter defaults   1-2
       window size  . . . . . . .  1-2
     Programming techniques . . .  6-1
       debugging  . . . . . . . .  6-3
       starting plotting  . . . .  6-1
       stopping plotting  . . . .  6-1

     ReGIS  . . . . . . . . . . .  2-1, 4-19 to 4-20
     Resolution
       DMP-4R . . . . . . . . . .  2-5
       GIGI . . . . . . . . . . .  2-4
       Houston Instruments DP-8 .  2-1
       TEKTRONIX  . . . . . . . .  2-3
     RGSPLT . . . . . . . . . . .  2-2, 2-4 to 2-5
     ROTATE . . . . . . . . . . .  3-5, 4-14

     Sample programs  . . . . . .  A-1
     SCALE  . . . . . . . . . . .  4-34
       DELTAV . . . . . . . . . .  4-30, 4-34
       FIRSTV . . . . . . . . . .  4-30, 4-34
     SETSYM . . . . . . . . . . .  4-18, 4-37, 4-39, 6-2, A-3
     Setsym . . . . . . . . . . .  D-1
     SETWIN . . . . . . . . . . .  3-4, 4-14, 4-16
     SITGO  . . . . . . . . . . .  3-1
     Software . . . . . . . . . .  3-1
       3-D routines . . . . . . .  5-6
       contouring routines  . . .  5-1
       coordinate system  . . . .  3-5
       debugging  . . . . . . . .  6-3
       error messages . . . . . .  6-4
       labeling routines  . . . .  4-37
       plotting subroutines . . .  4-1
       symbol sets  . . . . . . .  3-6
       warnings . . . . . . . . .  6-4

                           Index-iii


     Spooling . . . . . . . . . .  2-2
     SPROUT . . . . . . . . . . .  2-2, 4-9
     Standard symbol library  . .  3-6
     Starting plots . . . . . . .  6-1
     Stopping plots . . . . . . .  6-1
     Subroutine
       AXES . . . . . . . . . . .  4-24
       AXIS . . . . . . . . . . .  4-26
       CALCNT . . . . . . . . . .  5-2
       CALSIZ . . . . . . . . . .  5-4
       DASHLN . . . . . . . . . .  4-28
       ERASE  . . . . . . . . . .  4-2
       FACTOR . . . . . . . . . .  4-3
       GRID . . . . . . . . . . .  4-29
       GRIDER . . . . . . . . . .  5-5
       IPLOT  . . . . . . . . . .  4-44
       ISETAB . . . . . . . . . .  4-45
       LINE . . . . . . . . . . .  4-30
       LOGAX  . . . . . . . . . .  4-31
       LOGAXS . . . . . . . . . .  4-33
       MSETAB . . . . . . . . . .  4-45
       NEWPEN . . . . . . . . . .  4-4
       NUMBER . . . . . . . . . .  4-38
       OPRTXT . . . . . . . . . .  4-6
       ORIGIN . . . . . . . . . .  4-5
       PAUSEP . . . . . . . . . .  4-7
       PLOT . . . . . . . . . . .  4-8
       PLOTS  . . . . . . . . . .  4-12
       ROTATE . . . . . . . . . .  4-14
       SCALE  . . . . . . . . . .  4-34
       SETSYM . . . . . . . . . .  4-39
       SETWIN . . . . . . . . . .  4-16
       SUBWIN . . . . . . . . . .  4-17
       SYMBOL . . . . . . . . . .  4-41
       TITLE  . . . . . . . . . .  4-18
       WHERE  . . . . . . . . . .  4-20
       XHAIRS . . . . . . . . . .  4-22
     SUBWIN . . . . . . . . . . .  3-4, 4-17
     SYMBOL . . . . . . . . . . .  4-18, 4-38, 4-41, 6-2, A-3
     Symbol sets  . . . . . . . .  3-6
       available  . . . . . . . .  4-40
       centered symbols . . . . .  4-41
       standard symbol library  .  3-6
     Symbol table routines
       NUMBER . . . . . . . . . .  A-4
       SETSYM . . . . . . . . . .  A-4
       SYMBOL . . . . . . . . . .  A-4
     Symbol tables  . . . . . . .  D-1

     Table-top plotter  . . . . .  2-1
     TEK program  . . . . . . . .  2-3 to 2-4, 3-1, 3-6
     TEKPLT . . . . . . . . . . .  2-2 to 2-3
     TEKTRONIX  . . . . . . . . .  1-2, 2-1, 3-1, 4-4, 4-20

                            Index-iv


     TEKVUE program . . . . . . .  3-6
     TITLE  . . . . . . . . . . .  4-18

     VT125  . . . . . . . . . . .  2-1, 4-19 to 4-20

     Warning messages . . . . . .  6-4
     WHERE  . . . . . . . . . . .  4-20
     Window . . . . . . . . . . .  3-4
       subwindow  . . . . . . . .  3-4
       universal  . . . . . . . .  3-4
     Window size  . . . . . . . .  1-2

     XHAIRS . . . . . . . . . . .  4-22









































                            Index-v