Copyright Digital Equipment Corp. All rights reserved.

Integer

 An integer constant is a whole number with no decimal point.  It
 can have a leading sign and is interpreted as a decimal number.

 VSI Fortran provides four kind type parameters for data of type
 integer:  INTEGER(KIND=1) (or INTEGER*1), INTEGER(KIND=2) (or
 INTEGER*2), INTEGER(KIND=4) (or INTEGER*4), and INTEGER(KIND=8) (or
 INTEGER*8).

 The type specifier for the integer type is INTEGER.

 If a kind type parameter is specified, the integer has the kind
 specified.  If a kind type parameter is not specified, integer
 constants are interpreted as follows:

  o  If the integer constant is within the default integer kind, the
     kind is default integer.

  o  If the integer constant is outside the default integer kind,
     the kind type of the integer constant is the smallest integer
     kind which holds the constant.


 Integer constants take the following form:

   [s]n[n...][_k]

   s   Is a sign; required if negative (-), optional if 
       positive (+).

   n   Is a decimal digit (0 through 9).  Any leading 
       zeros are ignored.

   k   Is an optional kind type parameter (1 for 
       INTEGER(KIND=1), 2 for INTEGER(KIND=2), 4 for 
       INTEGER(KIND=4), and 8 for INTEGER(KIND=8)). It 
       must be preceded by an underscore (_).

 An unsigned constant is assumed to be nonnegative.

 Integers are expressed in decimal values (base 10) by default.

 To specify a constant that is not in base 10, use the following
 syntax:

   [s][[base] #]nnn...

   s     Is a sign; required if negative (-), optional if 
         positive (+).

   base  Is any constant from 2 through 36. 

 If "base" is omitted but # is specified, the integer is interpreted
 in base 16.  If both "base" and # are omitted, the integer is
 interpreted in base 10.

 For bases 11 through 36, the letters A through Z represent numbers
 greater than 9.  For example, for base 36, A represents 10, B
 represents 11, C represents 12, and so on, through Z, which
 represents 35.  The case of the letters is not significant.

 For example, the following integers are all assigned a value equal
 to 3994575 decimal:

 I     = 2#1111001111001111001111
 K     = #3CF3CF
 n     = +17#2DE110
 index = 36#2DM8F

 You can use integer constants to assign values to data.  The
 integer data types have the following ranges:

   BYTE         Same range as INTEGER*1

   INTEGER*1    Signed integers: -128 to 127 (-2**7 to 2**7-1)
   (1 byte)     Unsigned integers: 0 to 255 (2**8-1)
   
   INTEGER*2    Signed integers: -32768 to 32767 
   (2 bytes)                     (-2**15 to 2**15-1)
                Unsigned integers: 0 to 65535 (2**16-1)

   INTEGER*4    Signed integers: -2147483648 to 2147483647 
   (4 bytes)                          (-2**31 to 2**31-1)
                Unsigned integers: 0 to 4294967295 (2**32-1)

   INTEGER*8    Signed integers: -9223372036854775808 to 
   (8 bytes)    9223372036854775807 (-2**63 to 2**63-1)

 NOTE1: The value of an integer constant must be within 
        INTEGER(KIND=8) range.

 NOTE2: The "unsigned" ranges above are allowed for assignment 
        to variables of these types, but the data type is 
        treated as signed in arithmetic operations.