*+
*  Name:
*     PRM_PAR

*  Type of Module:
*     Fortran include file.

*  Purpose:
*     Define public constants for the PRIMDAT system.

*  Description:
*     This file defines machine-dependent public constants for the
*     PRIMDAT system.

*  Machine-specific features used:
*     This version is specific to SUN4 systems.

*  Authors:
*     RFWS: R.F. Warren-Smith (STARLINK, RAL)
*     {enter_new_authors_here}

*  History:
*     9-AUG-1988 (RFWS):
*        Original version.
*     25-OCT-1991 (RFWS):
*        Adapted for SUN4 systems from the original VMS file.
*     5-NOV-1991 (RFWS):
*        Corrected error in NUM__MAXUB and NUM__MINI values.
*     28-SEP-1995 (BKM):
*        Original version, adapted from SUN4 file for use with f2c on Linux
*     {enter_further_changes_here}

*  Bugs:
*     {note_any_bugs_here}

*-

*  Bad value, used for flagging undefined data.
*  ===========================================

      BYTE VAL__BADUB
      PARAMETER ( VAL__BADUB =  -1 )

      BYTE VAL__BADB
      PARAMETER ( VAL__BADB = -128 )

      INTEGER*2 VAL__BADUW
      PARAMETER ( VAL__BADUW = -1 )

      INTEGER*2 VAL__BADW
      PARAMETER ( VAL__BADW =  -32768 )

      INTEGER VAL__BADI
      PARAMETER ( VAL__BADI = -2147483647-1 )

      REAL VAL__BADR
      PARAMETER ( VAL__BADR = -3.40282347E+38 )

      DOUBLE PRECISION VAL__BADD
      PARAMETER ( VAL__BADD = -1.7976931348623157E+308 )


*  Machine precision.
*  =================

      BYTE VAL__EPSUB
      PARAMETER ( VAL__EPSUB = 1 )

      BYTE VAL__EPSB
      PARAMETER ( VAL__EPSB = 1 )

      INTEGER*2 VAL__EPSUW
      PARAMETER ( VAL__EPSUW = 1 )

      INTEGER*2 VAL__EPSW
      PARAMETER ( VAL__EPSW = 1 )

      INTEGER VAL__EPSI
      PARAMETER ( VAL__EPSI = 1 )

      REAL VAL__EPSR
      PARAMETER ( VAL__EPSR = 1.1920929E-07 )

      DOUBLE PRECISION VAL__EPSD
      PARAMETER ( VAL__EPSD = 2.2204460492503131E-16 )


*  Maximum (most positive) non-bad value.
*  =====================================

      BYTE VAL__MAXUB
      PARAMETER ( VAL__MAXUB = 254 )

      BYTE VAL__MAXB
      PARAMETER ( VAL__MAXB = 127 )

      INTEGER*2 VAL__MAXUW
      PARAMETER ( VAL__MAXUW = -2 )

      INTEGER*2 VAL__MAXW
      PARAMETER ( VAL__MAXW = 32767 )

      INTEGER VAL__MAXI
      PARAMETER ( VAL__MAXI = 2147483647 )

      REAL VAL__MAXR
      PARAMETER ( VAL__MAXR = 3.40282347E+38 )

      DOUBLE PRECISION VAL__MAXD
      PARAMETER ( VAL__MAXD = 1.7976931348623157E+308 )


*  Maximum (most positive) number.
*  ==============================

      BYTE NUM__MAXUB
      PARAMETER ( NUM__MAXUB = 255 )

      BYTE NUM__MAXB
      PARAMETER ( NUM__MAXB = 127 )

      INTEGER*2 NUM__MAXUW
      PARAMETER ( NUM__MAXUW = 65535 )

      INTEGER*2 NUM__MAXW
      PARAMETER ( NUM__MAXW = 32767 )

      INTEGER NUM__MAXI
      PARAMETER ( NUM__MAXI = 2147483647 )

      REAL NUM__MAXR
      PARAMETER ( NUM__MAXR = 3.40282347E+38 )

      DOUBLE PRECISION NUM__MAXD
      PARAMETER ( NUM__MAXD = 1.7976931348623157E+308 )


*  Minimum (most negative) non-bad value.
*  =====================================

      BYTE VAL__MINUB
      PARAMETER ( VAL__MINUB = 0 )

      BYTE VAL__MINB
      PARAMETER ( VAL__MINB = -127 )

      INTEGER*2 VAL__MINUW
      PARAMETER ( VAL__MINUW = 0 )

      INTEGER*2 VAL__MINW
      PARAMETER ( VAL__MINW = -32767 )

      INTEGER VAL__MINI
      PARAMETER ( VAL__MINI = -2147483647 )

      REAL VAL__MINR
      PARAMETER ( VAL__MINR = -3.40282326E+38 )

      DOUBLE PRECISION VAL__MIND
      PARAMETER ( VAL__MIND = -1.7976931348623155E+308 )


*  Minimum (most negative) number.
*  ==============================

      BYTE NUM__MINUB
      PARAMETER ( NUM__MINUB = 0 )

      BYTE NUM__MINB
      PARAMETER ( NUM__MINB = -128 )

      INTEGER*2 NUM__MINUW
      PARAMETER ( NUM__MINUW = 0 )

      INTEGER*2 NUM__MINW
      PARAMETER ( NUM__MINW = -32768 )

      INTEGER NUM__MINI
      PARAMETER ( NUM__MINI = -2147483647-1 )

      REAL NUM__MINR
      PARAMETER ( NUM__MINR = -3.40282347E+38 )

      DOUBLE PRECISION NUM__MIND
      PARAMETER ( NUM__MIND = -1.7976931348623157E+308 )


*  Number of basic machine units (bytes) used by a value.
*  =====================================================

      INTEGER VAL__NBUB
      PARAMETER ( VAL__NBUB = 1 )

      INTEGER VAL__NBB
      PARAMETER ( VAL__NBB = 1 )

      INTEGER VAL__NBUW
      PARAMETER ( VAL__NBUW = 2 )

      INTEGER VAL__NBW
      PARAMETER ( VAL__NBW = 2 )

      INTEGER VAL__NBI
      PARAMETER ( VAL__NBI = 4 )

      INTEGER VAL__NBR
      PARAMETER ( VAL__NBR = 4 )

      INTEGER VAL__NBD
      PARAMETER ( VAL__NBD = 8 )


*  Smallest positive value.
*  =======================

      BYTE VAL__SMLUB
      PARAMETER ( VAL__SMLUB = 1 )

      BYTE VAL__SMLB
      PARAMETER ( VAL__SMLB = 1 )

      INTEGER * 2 VAL__SMLUW
      PARAMETER ( VAL__SMLUW = 1 )

      INTEGER * 2 VAL__SMLW
      PARAMETER ( VAL__SMLW = 1 )

      INTEGER VAL__SMLI
      PARAMETER ( VAL__SMLI = 1 )

      REAL VAL__SMLR
      PARAMETER ( VAL__SMLR = 1.40129846E-45 )

      DOUBLE PRECISION VAL__SMLD
      PARAMETER ( VAL__SMLD = 4.9406564584124654E-324 )


*  Number of characters required to format value as decimal string.
*  ===============================================================

      INTEGER VAL__SZUB
      PARAMETER ( VAL__SZUB = 3 )

      INTEGER VAL__SZB
      PARAMETER ( VAL__SZB = 4 )

      INTEGER VAL__SZUW
      PARAMETER ( VAL__SZUW = 5 )

      INTEGER VAL__SZW
      PARAMETER ( VAL__SZW = 6 )

      INTEGER VAL__SZI
      PARAMETER ( VAL__SZI = 11 )

      INTEGER VAL__SZR
      PARAMETER ( VAL__SZR = 16 )

      INTEGER VAL__SZD
      PARAMETER ( VAL__SZD = 24 )

*.
