                             Product Information
                Programmer's Reusable Library, Version 0.7 (TM)
                                  (PRL 0.7)

                           Object Access (SM)
                           2023 Leisure Lane
                           League City, TX  77573
                           e-mail: oa@iah.com
                           web: http://www.iah.com/oa
                           phone:  713-554-7617 or 713-332-7281

OVERVIEW

The Programmer's Reusable Library (PRL) is a family of compatible software 
libraries intended to promote software reuse in the development of new
application programs, or in the enhancement of existing programs.
Historically, the libraries have been used for development of scientific
and engineering applications, but they are also suitable for developing 
business and personal applications.

PRL currently consists of a layered set of seven libraries, with a strong
emphasis on computer graphics:

    PRL-POSIX     - POSIX operating system interface library
    PRL-PROGRLANG - programming language primitive data types library
    PRL-DEVICE    - graphical device driver library
    PRL-GRAPHICS  - low-level graphics library
    PRL-PLOT      - graphical function plotting library
    PRL-SURFACE   - graphical surface plotting library
    PRL-MAP ***   - graphical cartographic map plotting library

The libraries are interdependent in a layered fashion as shown below.  (Note
that PRL-DEVICE and PRL-GRAPHICS require each other, so they should always
be obtained together.)

*** SPECIAL NOTE: PRL-MAP is in a pre-release state of development, and is 
currently available only with the Linux_bin platform.

    Library        Requires (Uses)
    -------------  ---------------
    PRL-POSIX      none
    PRL-PROGRLANG  PRL-POSIX
    PRL-DEVICE     PRL-POSIX PRL-PROGRLANG PRL-GRAPHICS
    PRL-GRAPHICS   PRL-POSIX PRL-PROGRLANG PRL-DEVICE
    PRL-PLOT       PRL-POSIX PRL-PROGRLANG PRL-DEVICE PRL-GRAPHICS
    PRL-SURFACE    PRL-POSIX PRL-PROGRLANG PRL-DEVICE PRL-GRAPHICS PRL-PLOT
    PRL-MAP        PRL-POSIX PRL-PROGRLANG PRL-DEVICE PRL-GRAPHICS PRL-PLOT

The current version of the libraries supports development in the FORTRAN 77 
programming language, while future versions are planned to support other 
languages such as ANSI C.  PRL currently runs on an entire spectrum of 
hardware from supercomputers to personal computers.  The libraries can be 
readily installed on any host platform that: (1) supports ANSI standard 
FORTRAN and C compilers, and (2) conforms to the industry-standard POSIX 
operating system specification.

A noteworthy feature of all the libraries is that they incorporate, to the 
extent practicable in FORTRAN, a modern object-oriented development 
philosophy.  This is rare for FORTRAN-based code, since most object-
oriented software is written in an "OO" language such as C++ or Smalltalk. 
However, object-oriented development principles can be applied to traditional
languages such as FORTRAN and C.  The application of object-oriented 
principles to PRL makes the libraries easier to learn and use, and also 
easier to maintain and enhance.

It should be noted that applications that use PRL need not themselves be
implemented using an object-oriented approach.  However, Object Access 
recommends that applications be developed using object-oriented principles, 
not because of any PRL requirement to do so, but because it represents 
sound software engineering practice.  Object Access can provide consultation 
and training in applying object-oriented principles to development in
traditional languages such as FORTRAN and C.

All purchased libraries include complete library source code, plus one year 
free consultation and support.  To qualify for the latter, a completed and 
signed Consultation and Support Contract must be included with your order.
Libraries for all platforms except Linux_bin consist of the following 
electronic information:

    1. Complete library subprogram source code
    2. Large suite of demonstration and test program source code
    3. tk/tcl and textual interactive driver scripts for demo programs
    4. Library application program skeleton code
    5. Library utility source code
    6. Source code for installing all required data files
    7. User's Manual in PostScript and ASCII formats
    8. Quick Reference Guide in PostScript and ASCII formats
    9. Interactive installation scripts (UNIX Bourne shell or VMS DCL)
   10. Installation instructions in ASCII format
   11. Consultation and Support Contract (CSC) fill-in-the-blank form for
       1 year FREE support for each library purchased
   12. Library and CSC pricelists
   13. Product orderform in ASCII format
   14. Product information summary (this file)
   15. Other library-specific files, if any

Linux is treated differently than other platforms because it is Object Access
policy to release our products for free under Linux.  However, libraries for
which the code is supplied for free are not considered purchased, and so do
not include library source code and one year free consultation and support.
These items are available for Linux by ordering the Linux_src platform, 
rather than the Linux_bin platform.  All libraries for the Linux_bin platform
consist of the following electronic information:

    1. Pre-built library object code archive file (no source code)
    2. Large suite of demonstration and test program source code
    3. tk/tcl and textual interactive driver scripts for demo programs
    4. Library application program skeleton code
    5. Library utility binary executable file (no source code)
    6. Ready-to-use, binary form of all required data files
    7. User's Manual in PostScript and ASCII formats
    8. Quick Reference Guide in PostScript and ASCII formats
    9. Interactive installation scripts (UNIX Bourne shell or VMS DCL)
   10. Installation instructions in ASCII format
   11. Consultation and Support Contract (CSC) fill-in-the-blank form
   12. Library and CSC pricelists
   13. Product orderform in ASCII format
   14. Product information summary (this file)
   15. Other library-specific files, if any

                      Programmer's Reusable Library
                                  (PRL)

GENERAL LIBRARY SPECIFICATIONS (All Libraries)

Supported Processors and Operating Systems:
	Mainframes and Supercomputers:
		Convex / UNIX
		Cray / UNICOS
		DEC VAX / VMS (networked to UNIX workstation)
	Workstations:
		Apollo / UNIX
		DEC Alpha AXP / OSF/1
		DEC Alpha AXP / Open VMS (networked to UNIX workstation)
		HP 9000 / HP-UX
		IBM RISC 6000 / AIX
		Silicon Graphics / IRIX
		Sun / SunOS
	Personal Computers:
		80386,80486,Pentium / Linux

	Note that the list of supported platforms is subject to change 
	without notice.

Distribution Media:
	UNIX systems:
		3.5" or 5.25" UNIX-formatted floppy disk in UNIX tar format
                        (read directly by UNIX machine), or
		3.5" or 5.25" MSDOS-formatted floppy disk in UNIX tar format
			(upload to UNIX from an MSDOS machine), or
		Internet file transfer to your anonymous ftp site
			(upload to UNIX from ftp server)
	VMS systems:
		3.5" or 5.25" UNIX-formatted floppy disk in UNIX tar format
			(upload to VMS from a UNIX machine), or
		Internet file transfer to your anonymous ftp site
			(upload to UNIX from ftp server, then
			 upload to VMS from the UNIX machine)

                Programmer's Reusable Library (PRL) - POSIX
                               (PRL-POSIX)

OVERVIEW

POSIX is an attempt by the computer industry to develop a standard,
machine-independent operating system specification.  It is sponsored by
the Institute of Electrical and Electronics Engineers, Inc. (IEEE).  The 
first volume of the multi-volume POSIX documentation set, IEEE 
Std 1003.1, specifies a comprehensive set of operating system function 
calls in terms of a C language interface.  A companion document, IEEE 
Std 1003.9-1992, specifies the same function calls in terms of a FORTRAN
language interface.  These and other POSIX operating system calls, when
invoked from a user's application program, permit the program to be run 
on a wide variety of commercial hardware with no modification.

The Programmer's Reusable Library-POSIX (PRL-POSIX) is a general purpose
FORTRAN-callable subroutine library which is intended to provide FORTRAN
application programs access to the POSIX functions as specified in
IEEE Std 1003.9-1992.  PRL-POSIX will permit FORTRAN programs to benefit
from the same level of host system independence that is typically 
available to C programs, as intended by the designers of the POSIX 
specifications.  The current version of PRL-POSIX takes the first step 
in this direction by providing emulation of a small but useful set of 
POSIX functions, supplemented by a number of other system-level functions 
useful to FORTRAN programmers.  The eventual goal is to have PRL-POSIX 
provide direct (non-emulated) access to all standard POSIX functions.
PRL-POSIX is used extensively by other Object Access software products 
such as the PRL-GRAPHICS graphics library, and is primarily responsible 
for the host system independence of these software products.


LIBRARY SPECIFICATIONS

Name and Version Number:  PRL-POSIX, Version 0.7

Programming Languages:  ANSI Standard C, ANSI Standard FORTRAN

Primary Purpose:  permit FORTRAN programmers to call standard POSIX
                  operating system functions (system calls)

Program Size:  39 subprograms, approx. 3.5K source lines of code

Special Software Required:
	ANSI standard C compiler
	ANSI standard FORTRAN compiler
	IEEE standard POSIX operating system calls or OS kernel
	X windowing system (optional)
        tk 3.6 / tcl 7.3 GUI support package (optional)

Special Hardware Required:  None

Restrictions and Limitations:  Currently emulates only a few POSIX
    function calls necessary to support the PRL-GRAPHICS library. 
    Future versions are planned to provide direct FORTRAN interfaces to
    all standard POSIX functions.

The following sample program demonstrates the use of PRL-POSIX in a 
FORTRAN application.

C     PROGRAM POSIX_SAMPLE
C
C       Programmer's Reusable Library (TM), Version 0.7     
C
C            Copyright (C) 1995 Object Access (SM)
C
C     Permission is granted to any individual or institution
C     to use, copy, modify, and distribute this single program
C     unit, provided that this complete copyright and
C     permission notice is maintained, intact, in all copies.
C
C     Object Access Incorporated provides this software
C     "as is" without express or implied warranty.
C
C     PURPOSE: Example of use of PRL-POSIX library
C
      CHARACTER PATH*8, KOMAND*12
      INTEGER   IPXCON
C
C     ------------------------------------------------------------------
C
C                       Initialize the PRL-POSIX library
      ISCOPE = 0
      CALL POSIX_INIT (ISCOPE)
C
C                       Set values of standard I/O logical unit numbers
      IN = 5
      IOUT = 6
      IERR = 6
      CALL TERM_SETSIO (IN,IOUT,IERR)
C
C     ------------------------------------------------------------------
C
C                       Create a file for read/write and
C                       automatically assign a logical unit number
      PATH = 'filename'
      ILEN = 8
      IOPFLG = IPXCON ('O_RDWR') + IPXCON ('O_CREAT')
      IMODE = 0
      CALL PXFOPN (PATH,ILEN,IOPFLG,IMODE,LUNIT,IERROR)
C
C                       Check for error opening file
      IF (IERROR .NE. 0) THEN
C        (error handler code)
      ENDIF
C
C                       Write to file
      WRITE (LUNIT,100) 'Test data'
  100 FORMAT (A)
C
C                       Close the file
      CALL PXFCLS (LUNIT,IERR0R)
C
C                       Check for error closing file
      IF (IERROR .NE. 0) THEN
C        (error handler code)
      ENDIF
C
C     ------------------------------------------------------------------
C
C                       List file contents using shell command
      KOMAND = 'cat filename'
      CALL SIGNAL_SHELL (KOMAND)
C
C     ------------------------------------------------------------------
C
C                       Silently terminate program execution
      CALL PROCESS_EXIT ()
      END

               Programmer's Reusable Library (PRL) - PROGRLANG 
                             (PRL-PROGRLANG)

OVERVIEW

The Programmer's Reusable Library-Programming Language (PRL-PROGRLANG)
is a general purpose FORTRAN-callable subroutine library which is
intended to provide useful operations on FORTRAN primitive data types as
a supplement to the standard set of FORTRAN intrinsic functions. 
PRL-PROGRLANG permits a user's application program to utilize extended
primitive data type operations while retaining portability among the
different host platforms on which PRL-PROGRLANG is supported.

The eventual goal is to have PRL-PROGRLANG provide the FORTRAN
programmer a superset of the combined intrinsic-level functionality of
ANSI FORTRAN 77, ANSI FORTRAN 90, and ANSI C.  PRL-PROGRLANG would then
permit application programs to be designed with less regard for the
eventual programming language, whether it be FORTRAN or C.  The current
version of PRL-PROGRLANG takes the first step in this direction by
implementing a small but useful set of subprograms that supplement the
FORTRAN-77 intrinsic functions.  PRL-PROGRLANG is used extensively by
other Object Access software products such as the PRL-GRAPHICS library.


LIBRARY SPECIFICATIONS

Name and Version Number:  PRL-PROGRLANG, Version 0.7

Programming Languages:  ANSI Standard FORTRAN

Primary Purpose:  provide FORTRAN programmers with extended
                  functionality for FORTRAN primitive data types

Program Size:  68 subprograms, approx. 5K source lines of code

Special Software Required:
	Programmer's Reusable Library-POSIX (PRL-POSIX)
	ANSI standard FORTRAN compiler
	X windowing system (optional)
        tk 3.6 / tcl 7.3 GUI support package (optional)

Special Hardware Required:  None

The following sample program demonstrates the use of PRL-PROGRLANG in a 
FORTRAN application.

C     PROGRAM PROGRLANG_SAMPLE
C
C       Programmer's Reusable Library (TM), Version 0.7     
C
C            Copyright (C) 1995 Object Access (SM)
C
C     Permission is granted to any individual or institution
C     to use, copy, modify, and distribute this single program
C     unit, provided that this complete copyright and
C     permission notice is maintained, intact, in all copies.
C
C     Object Access Incorporated provides this software
C     "as is" without express or implied warranty.
C
C     PURPOSE: Example of use of PRL-PROGRLANG library
C
      CHARACTER  CVALS*8
      REAL       REAL_CVSTRING, REAL_GETPI
      LOGICAL    REAL_IDIF0
C
C     ------------------------------------------------------------------
C
C                       Initialize the PRL-PROGRLANG library
      ISCOPE = 0
      CALL PROGRLANG_INIT (ISCOPE)
C
C                       Set REAL subtraction tolerance
C     TOLER = 1.0E-05
      CALL REAL_SETTOL (TOLER)
C
C     ------------------------------------------------------------------
C
C                       Convert a character string to REAL
      CVALS = '3.141999'
      NSEQ = 1
      VAL = REAL_CVSTRING (CVALS,NSEQ,ISTAT)
C
C                       Check for conversion error
      IF (ISTAT .NE. 0) THEN
C       (error handling code)
      ENDIF
C
C                       Get value of pi
      PI = REAL_GETPI ()
C
C                       Determine if converted value was equal to pi
C                       using subtraction with tolerance checking
      IF (REAL_IDIF0 (VAL,PI)) THEN
C       (code for value equals pi)
      ELSE
C       (code for value not equals pi)
      ENDIF
C
C     ------------------------------------------------------------------
C
C                       Silently terminate program execution
      CALL PROCESS_EXIT ()
      END

              Programmer's Reusable Library (PRL) - DEVICE 
                               (PRL-DEVICE)

OVERVIEW

The Programmer's Reusable Library-Device (PRL-DEVICE) is a FORTRAN-
callable subroutine library that provides a standardized interface to 
graphics output devices in support of the Programmer's Reusable 
Library-Graphics (PRL-GRAPHICS) library.  The library consists of three
parts:  14 active device drivers, a skeleton device driver, and
user-callable subprograms.  In addition, a support library for the X
terminal device driver, PRL-X11R5, is also included with PRL-DEVICE.

The heart of PRL-DEVICE is a set of 14 graphics device drivers which
provide an interface to the following 14 different types of devices:

   1. DEC LN03 Plus laser printer  2. DEC VT 240 terminal
   3. HP LaserJet (PCL)            4. JSC Film Recorder Library
   5. PostScript Level I           6. PostScript Level II
   7. QMS laser printer            8. SmartTerm 240 terminal emulator
   9. Tektronix 4014 terminal     10. Tektronix 4107 terminal
  11. Tektronix 4115 terminal     12. Tektronix 4510 terminal
  13. Vector Save file format     14. X terminal

The PRL-GRAPHICS library is not restricted to operation with the
above-listed devices, but can be interfaced to virtually any graphics
output device by developing a PRL-DEVICE device driver for the desired
device.  The task of developing new device drivers is made easier by
the PRL-DEVICE "skeleton" device driver.  The skeleton device driver 
includes the standardized structural code common to all PRL-DEVICE 
device drivers, plus a wealth of comment statements that provide guidance 
for writing the code for a new device driver.  The skeleton device driver 
is essentially a device driver construction manual in the form of a 
partially-written device driver rather than in the form of a book.

The third component of PRL-DEVICE is a set of user-callable subprograms 
that provide device selection and other graphics device-related functions.


LIBRARY SPECIFICATIONS

Name and Version Number:  PRL-DEVICE, Version 0.7

Programming Languages:  ANSI Standard FORTRAN

Primary Purpose:  provide an interface to graphics output devices, and
        promote graphics device independence, for the PRL-GRAPHICS library

Program Size:    124 subprograms,      17.5K source lines of code

Special Software Required:
	Programmer's Reusable Library-POSIX (PRL-POSIX)
	Programmer's Reusable Library-Programming Language (PRL-PROGRLANG)
	ANSI standard FORTRAN compiler
	X windowing system (optional)
        tk 3.6 / tcl 7.3 GUI support package (optional)

Special Hardware Required:
	At least one supported graphical output device (see OVERVIEW)

               Programmer's Reusable Library (PRL) - GRAPHICS
                              (PRL-GRAPHICS)

OVERVIEW

The Programmer's Reusable Library-Graphics (PRL-GRAPHICS) is a general
purpose FORTRAN-callable subroutine library which provides fundamental
graphics capabilities such as line drawing and graphical text generation.
Graphics attributes such as color, line style and thickness control, 
character shading, and area blanking are also supported.  The graphical 
objects provided by PRL-GRAPHICS may be combined to produce virtually any 
kind of graphical image.  PRL-GRAPHICS offers three major features that
are not typically found together in other FORTRAN graphics packages:

PRL-GRAPHICS achieves a high degree of graphical device-independence by 
use of a companion library, PRL-DEVICE.  Device-independence helps ensure 
that custom graphics programs can be adapted to new or changing graphics 
output hardware environments with a minimum of effort.  See the PRL-DEVICE
summary for additional details.  

PRL-GRAPHICS achieves a high degree of host computer system-independence by 
use of a second companion library, PRL-POSIX.  Host computer system-
independence helps ensure that custom graphics software can be installed 
and run on a wide variety of host computers from supercomputers to personal 
computers with virtually no coding changes.  A wide spectrum of supported 
host computer hardware helps both to protect and leverage one's investment 
in custom graphics software.  See the PRL-POSIX summary for more details.

The third feature of PRL_GRAPHICS is that it follows, to the extent 
practicable in FORTRAN, a modern object-oriented development philosophy,
as described in the PRL summary.  The application of object-oriented 
development principles to PRL-GRAPHICS makes the library easier to learn 
and use, and also easier to maintain and enhance.

 
LIBRARY SPECIFICATIONS

Name and Version Number:  PRL-GRAPHICS, Version 0.7

Programming Languages:  ANSI Standard FORTRAN

Primary Purpose:  provide the ability to create custom graphics software
        that will run on a wide spectrum of host computer hardware and can
        be readily adapted to most any graphical output device

Program Size:    135 subprograms,      13.5K source lines of code

Special Software Required:
	Programmer's Reusable Libraries:
		PRL-POSIX	PRL-PROGRLANG	PRL-DEVICE
	ANSI standard FORTRAN compiler
	IEEE standard POSIX function call library or OS kernel
	X windowing system (optional)
        tk 3.6 / tcl 7.3 GUI support package (optional)

Special Hardware Required:
	At least one supported graphical output device (see PRL-DEVICE)

The following sample program demonstrates the use of PRL-GRAPHICS and
PRL-DEVICE in a FORTRAN application.

C     PROGRAM GRAPHICS_SAMPLE
C
C       Programmer's Reusable Library (TM), Version 0.7     
C
C            Copyright (C) 1995 Object Access (SM)
C
C     Permission is granted to any individual or institution
C     to use, copy, modify, and distribute this single program
C     unit, provided that this complete copyright and
C     permission notice is maintained, intact, in all copies.
C
C     Object Access Incorporated provides this software
C     "as is" without express or implied warranty.
C
C     PURPOSE: Example of use of PRL-GRAPHICS and PRL-DEVICE libraries
C
C     ------------------------------------------------------------------
C
C                       Initialize the PRL-GRAPHICS library
      ISCOPE = 0
      CALL GRAPHICS_INIT (ISCOPE)
C
C                       Interactively select a graphics output device
      KTYPQ = 0
      CALL DEVICE_PROMPT (KTYPQ,XPAGE,YPAGE)
C
C                       Set page size in page units (i.e., inches)
      CALL PAGE_SIZE (XPAGE,YPAGE)
C
C                       Set location of origin at lower left
C                       corner of page
      CALL ORIGIN_SET (0.0,0.0)
C
C                       Define subplot area to be full page size
      CALL SUBPLOT_DEFINE (XPAGE,YPAGE)
C
C     ------------------------------------------------------------------
C
C                       Draw box 1 page unit square with
C                       lower left corner at center of page
C
C                       Move logical pen to center of page
      NPBSYM = 0
      CALL LOGPEN2_SETP (XPAGE*0.5,YPAGE*0.5,NPBSYM)
C
C                       Draw left side, top, right side, bottom
      CALL LINE2D_DRAWR ( 0.0, 1.0, NPBSYM,3)
      CALL LINE2D_DRAWR ( 1.0, 0.0, NPBSYM,3)
      CALL LINE2D_DRAWR ( 0.0,-1.0, NPBSYM,3)
      CALL LINE2D_DRAWR (-1.0, 0.0, NPBSYM,3)
C
C     ------------------------------------------------------------------
C
C                       End current subplot
      ISPARE = 0
      CALL SUBPLOT_END (ISPARE)
C                       End plotting on current page
      CALL PAGE_END (ISPARE)
C                       End plotting and release the graphics device
      CALL DEVICE_END ()
C
C     ------------------------------------------------------------------
C
C                       Silently terminate program execution
      CALL PROCESS_EXIT ()
      END

                Programmer's Reusable Library (PRL) - PLOT
                                (PRL-PLOT)

OVERVIEW

The Programmer's Reusable Library-Plot (PRL-PLOT) is a general purpose
FORTRAN-callable subroutine library for producing 2-dimensional and
3-dimensional function plots.  Supported 2-dimensional plot types
include linear, log, log-linear, and polar plots, as well as 2D bar chart
and pie chart plots.  Supported 3-dimensional plot types include linear 
and spherical coordinate plots.  The various plot types may be enhanced 
with additional graphics objects such as linear, cubic, or spline curves 
drawn with or without marker symbols at each data point, vectors with 
arrowheads, legend boxes, plot titles and labeling, axis labeling and 
numbering, and area filled regions between curves.  Complete viewpoint 
control is available for 3D plots. Low level graphics capabilities such 
as straight line drawing, character drawing, color, line style and 
thickness control, character shading, and area blanking are available via 
the required companion library, PRL-GRAPHICS.  The graphical objects 
provided by PRL-PLOT may be combined with those of PRL-GRAPHICS to 
produce a wide variety of custom function plots.

Because PRL-PLOT is built on top of PRL-GRAPHICS, it inherits the host
computer-independence and graphical device-independence of PRL-GRAPHICS.

 
LIBRARY SPECIFICATIONS

Name and Version Number:  PRL-PLOT, Version 0.7

Programming Languages:  ANSI Standard FORTRAN

Primary Purpose:  provide the ability to create custom graphics
                  software for 2D and 3D function plots, bar charts,
                  and pie charts

Program Size:    153 subprograms,      21K source lines of code

Special Software Required:
	Programmer's Reusable Libraries:
		PRL-POSIX		PRL-PROGRLANG
		PRL-DEVICE		PRL-GRAPHICS
	ANSI standard FORTRAN compiler
	IEEE standard POSIX function call library or OS kernel
	X windowing system (optional)
        tk 3.6 / tcl 7.3 GUI support package (optional)

Special Hardware Required:
	At least one supported graphical output device (see PRL-DEVICE)

The following sample program demonstrates the use of PRL-PLOT in a 
FORTRAN application.

C     PROGRAM PLOT_SAMPLE
C
C       Programmer's Reusable Library (TM), Version 0.7     
C
C            Copyright (C) 1995 Object Access (SM)
C
C     Permission is granted to any individual or institution
C     to use, copy, modify, and distribute this single program
C     unit, provided that this complete copyright and
C     permission notice is maintained, intact, in all copies.
C
C     Object Access Incorporated provides this software
C     "as is" without express or implied warranty.
C
C     PURPOSE: Example of use of PRL-PLOT library
C
      REAL X(2), Y(2)
C
C     ------------------------------------------------------------------
C
C                       Initialize the PRL-PLOT library
      ISCOPE = 0
      CALL PLOT_INIT (ISCOPE)
C
C                       Interactively select a graphics output device
      KTYPQ = 0
      CALL DEVICE_PROMPT (KTYPQ,XPAGE,YPAGE)
C
C                       Set page size in page units (i.e., inches)
      CALL PAGE_SIZE (XPAGE,YPAGE)
C
C                       Set origin at lower left corner of page
      CALL ORIGIN_SET (0.0,0.0)
C
C                       Define subplot area to be full page size
      CALL SUBPLOT_DEFINE (XPAGE,YPAGE)
C
C                       Define 2D linear coordinate system with
C                       X = 1 to 10 with step increment of 1 and
C                       Y = 1 to 100 with step increment of 10
      CALL PLOT2D_DEFINE (1.0, 1.0, 10.0, 1.0, 10.0, 100.0)
C
C     ------------------------------------------------------------------
C
C                       Draw parabola from X = 1.0 to 10.0 using
C                       straight line segments between points
C
C                       Move logical pen to origin
      NPBSYM = 0
      X(2) = 0.0
      Y(2) = 0.0
      CALL LOGPEN2_SETP (X(2),Y(2),NPBSYM)
C
C                       Loop to draw line to each point on parabola
      DO 100 I=1,10
        X(1) = X(2)
        Y(1) = Y(2)
        X(2) = FLOAT(I)
        Y(2) = FLOAT(I*I)
        NPTS = 2
        IMARK = 0
        CALL CURVE2D_DRAW (X,Y,NPTS,IMARK)
  100 CONTINUE
C
C     ------------------------------------------------------------------
C
C                       End current subplot
      ISPARE = 0
      CALL SUBPLOT_END (ISPARE)
C                       End plotting on current page
      CALL PAGE_END (ISPARE)
C                       End plotting and release the graphics device
      CALL DEVICE_END ()
C
C     ------------------------------------------------------------------
C
C                       Silently terminate program execution
      CALL PROCESS_EXIT ()
      END

               Programmer's Reusable Library (PRL) - SURFACE
                              (PRL-SURFACE)

OVERVIEW

The Programmer's Reusable Library-Surface (PRL-SURFACE) is a general
purpose FORTRAN-callable subroutine library for producing 2-dimensional
and 3-dimensional surface plots, including surface contour plots.
Supported 2D plot types include surface line contour plots and color-
shaded contour plots.  Supported 3D plot types include surface mesh 
wireframe plots, surface mesh plots with hidden line removal, surface 
line contour plots, and color-shaded contour plots.  The various plot 
types may be enhanced by the addition of graphics objects available
via the two required companion graphics libraries, PRL-PLOT and
PRL-GRAPHICS.

Because PRL-SURFACE is built on top of PRL-GRAPHICS, it inherits the
host computer-independence and graphical device-independence of
PRL-GRAPHICS.


LIBRARY SPECIFICATIONS

Name and Version Number:  PRL-SURFACE, Version 0.7

Programming Languages:  ANSI Standard FORTRAN

Primary Purpose:  provide the ability to create custom graphics
                  software for 3D surface plots, and 2D and 3D surface
                  contour plots

Program Size:    40 subprograms,      5K source lines of code

Special Software Required:
	Programmer's Reusable Libraries:
		PRL-POSIX		PRL-PROGRLANG		PRL-PLOT
		PRL-DEVICE		PRL-GRAPHICS
	ANSI standard FORTRAN compiler
	IEEE standard POSIX function call library or OS kernel
	X windowing system (optional)
        tk 3.6 / tcl 7.3 GUI support package (optional)

Special Hardware Required:
	At least one supported graphical output device (see PRL-DEVICE)

The following sample program demonstrates the use of PRL-SURFACE in a 
FORTRAN application.

C     PROGRAM SURFACE_SAMPLE
C
C       Programmer's Reusable Library (TM), Version 0.7     
C
C            Copyright (C) 1995 Object Access (SM)
C
C     Permission is granted to any individual or institution
C     to use, copy, modify, and distribute this single program
C     unit, provided that this complete copyright and
C     permission notice is maintained, intact, in all copies.
C
C     Object Access Incorporated provides this software
C     "as is" without express or implied warranty.
C
C     PURPOSE: Example of use of PRL-SURFACE library
C
      REAL ZMAT(11,11), CL(6)
C
C                       Z values of surface
C    X=    Y=0    1    2    3    4    5    6    7    8    9   10
      DATA ZMAT /
     O       5.,  7., 12., 18., 25., 15.,  7.,  6.,  3.,  1.,  1.,
     1       8.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  3.,
     2       9.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  5.,
     3      12.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  5.,
     4      20.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  5.,
     5      25.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  5.,
     6      30.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  5.,
     7      30.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  5.,
     8      20.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  4.,
     9      10.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  3.,
     A      10., 15., 20., 22., 25., 27., 30., 20., 10.,  4.,  2./
C
C                       Countour levels
      DATA CL /1.0, 2.5, 5.0, 10.0, 15.0, 29.0/
C
C     ------------------------------------------------------------------
C
C                       Initialize the PRL-SURFACE library
      ISCOPE = 0
      CALL SURFACE_INIT (ISCOPE)
C
C                       Interactively select a graphics output device
      KTYPQ = 0
      CALL DEVICE_PROMPT (KTYPQ,XPAGE,YPAGE)
C
C                       Set page size in page units (i.e., inches)
      CALL PAGE_SIZE (XPAGE,YPAGE)
C
C                       Set origin at lower left corner of page
      CALL ORIGIN_SET (0.0,0.0)
C
C                       Define subplot area to be full page size
      CALL SUBPLOT_DEFINE (XPAGE,YPAGE)
C
C                       Define 2D linear coordinate system with
C                       X = 0 to 10 with step increment of 1 and
C                       Y = 0 to 10 with step increment of 1
      CALL PLOT2D_DEFINE (0.0, 1.0, 10.0, 0.0, 1.0, 10.0)
C
C     ------------------------------------------------------------------
C
C                       Draw a 2D contour line plot
C
C                       Number of mesh lines in X and Y
      NX = 11
      NY = 11
C                       Lower and upper limit of X data
      XMIN =  0.0
      XMAX = 10.0
C                       Lower and upper limit of Y data
      YMIN =  0.0
      YMAX = 10.0
C                       Number of contour levels
      NL = 6
C                       Draw surface contours
      CALL CONTR2D_DRAW (ZMAT,NX,NY,XMIN,XMAX,YMIN,YMAX,NL,CL)
C
C     ------------------------------------------------------------------
C
C                       End current subplot
      ISPARE = 0
      CALL SUBPLOT_END (ISPARE)
C                       End plotting on current page
      CALL PAGE_END (ISPARE)
C                       End plotting and release the graphics device
      CALL DEVICE_END ()
C
C     ------------------------------------------------------------------
C
C                       Silently terminate program execution
      CALL PROCESS_EXIT ()
      END

                Programmer's Reusable Library (PRL) - MAP
                               (PRL-MAP)

SPECIAL NOTE:

PRL-MAP is in a pre-release state of development, and is currently
available only with the Linux_bin platform.

OVERVIEW

The Programmer's Reusable Library-Map (PRL-MAP) is a general purpose
FORTRAN-callable subroutine library for producing 2-dimensional
cartographic projection plots.  Currently, two  cartographic projections
are supported: Lambert Equal Area and Cylindrical Equidistant.   Also,
two separate cartographic data bases of the earth are provided: low
resolution and high resolution.

The low resolution database, which occupies approximately 250 kilobytes of 
mass storage, depicts coastlines and major lakes of the earth, and is 
usually used with the Lambert Equal Area projection.  The high resolution 
database, which occupies approximately 65 megabytes of mass storage, 
describes coastlines and lakes, rivers, and political boundaries.  It is 
usually used with the Cylindrical Equidistant projection.

Plots using either projection may be enhanced by the addition of graphics 
objects available via the two required companion graphics libraries, 
PRL-PLOT and PRL-GRAPHICS, to produce a wide variety of custom cartographic 
plots of the earth.  Because PRL-MAP is built on top of PRL-GRAPHICS, it 
inherits the host computer-independence and graphical device-independence 
of PRL-GRAPHICS.


LIBRARY SPECIFICATIONS

Name and Version Number:  PRL-MAP, Version 0.7

Programming Languages:  ANSI Standard FORTRAN

Primary Purpose:  provide the ability to create custom graphics
                  software for for cartographic plots of the earth
                  using two cartographic projections at two levels
                  of cartographic detail

Program Size:    163 subprograms,      18K source lines of code

Special Software Required:
	Programmer's Reusable Libraries
		PRL-POSIX		PRL-PROGRLANG		PRL-PLOT
		PRL-DEVICE		PRL-GRAPHICS
	ANSI standard FORTRAN compiler
	IEEE standard POSIX function call library or OS kernel
	X windowing system (optional)
        tk 3.6 / tcl 7.3 GUI support package (optional)

Special Hardware Required:
	At least one supported graphical output device (see PRL-DEVICE)

The following sample program demonstrates the use of PRL-MAP in a 
FORTRAN application.

C     PROGRAM MAP_SAMPLE
C
C       Programmer's Reusable Library (TM), Version 0.7     
C
C            Copyright (C) 1995 Object Access (SM)
C
C     Permission is granted to any individual or institution
C     to use, copy, modify, and distribute this single program
C     unit, provided that this complete copyright and
C     permission notice is maintained, intact, in all copies.
C
C     Object Access Incorporated provides this software
C     "as is" without express or implied warranty.
C
C     PURPOSE: Example of use of PRL-MAP library
C
C     ------------------------------------------------------------------
C
C                       Initialize the PRL-MAP library
      ISCOPE = 0
      CALL MAP_INIT (ISCOPE)
C
C                       Interactively select a graphics output device
      KTYPQ = 0
      CALL DEVICE_PROMPT (KTYPQ,XPAGE,YPAGE)
C
C                       Set page size in page units (i.e., inches)
      CALL PAGE_SIZE (XPAGE,YPAGE)
C
C                       Set origin at lower left corner of page
      CALL ORIGIN_SET (0.0,0.0)
C
C                       Specify Lambert Equal Area map projection
      CALL PROJ_SETMAP ('LAMBERT')
C
C                       Define subplot area to be full page size
      CALL SUBPLOT_DEFMAP (XPAGE,YPAGE)
C
C                       Define location of map pole for world map
C                       viewpoint in degrees of longitude and latitude
      XPOLE = -85.0
      YPOLE =  45.0
      CALL VIEWPT_SETMPOLE (XPOLE,YPOLE)
C
C                       Specify radius of projection of world map
C                       viewpoint in nautical miles
      CALL VIEWPT_SETMRAD (2000.0)
C
C                       Define 2D map coordinate system with
C                       longitude = +- 90 deg around map pole
C                       latitude  = +- 90 deg around map pole
C                       with 20 degree step increment
      CALL PLOT2D_DEFMAP (XPOLE-90.0, 20.0, XPOLE+90.,
     *                    YPOLE-90.0, 20.0, YPOLE+90.)
C
C     ------------------------------------------------------------------
C
C                       Draw low resolution world coastlines
      CALL MAPDATA_DRAW ('LOWCOAST')
C
C                       Draw frame around subplot area
      CALL FRAME_DRAW
C
C     ------------------------------------------------------------------
C
C                       End current subplot
      CALL SUBPLOT_ENDMAP ()
C                       End plotting on current page
      ISPARE = 0
      CALL PAGE_END (ISPARE)
C                       End plotting and release the graphics device
      CALL DEVICE_END ()
C
C     ------------------------------------------------------------------
C
C                       Silently terminate program execution
      CALL PROCESS_EXIT ()
      END
