Table E-8 FORTRAN Implementations
  
    | OpenVMS Data Types  | 
    FORTRAN Declarations  | 
  
  
    | 
      access_bit_names
     | 
    
      INTEGER*4(2,32)
        or
        STRUCTURE /access_bit_names/
        INTEGER*4 access_name_len
        INTEGER*4 access_name_buf
        END STRUCTURE !access_bit_names
        RECORD /access_bit_names/ my_names(32)
     | 
  
  
    | 
      access_mode
     | 
    
      BYTE
        or
        INTEGER*1
      1
     | 
  
  
    | 
      address
     | 
    
      INTEGER*4
     | 
  
  
    | 
      address_range
     | 
    
      INTEGER*4(2)
        or
        INTEGER*8
      1
        or
        STRUCTURE /address_range/
        INTEGER*4 low_address
        INTEGER*4 high_address
        END STRUCTURE
     | 
  
  
    | 
      arg_list
     | 
    
      INTEGER*4(
      n)
        or
        INTEGER*8
      1(
      n)
     | 
  
  
    | 
      ast_procedure
     | 
    
      EXTERNAL
     | 
  
  
    | 
      boolean
     | 
    
      LOGICAL*4
     | 
  
  
    | 
      byte_signed
     | 
    
      BYTE
        or
        INTEGER*1
     | 
  
  
    | 
      byte_unsigned
     | 
    
      BYTE
      2
        or
        INTEGER*1
      1,
      2
     | 
  
  
    | 
      channel
     | 
    
      INTEGER*2
     | 
  
  
    | 
      char_string
     | 
    
      CHARACTER*
      n
     | 
  
  
    | 
      complex_number
     | 
    
      COMPLEX*8
        COMPLEX*16
     | 
  
  
    | 
      cond_value
     | 
    
      INTEGER*4
     | 
  
  
    | 
      context
     | 
    
      INTEGER*4
     | 
  
  
    | 
      date_time
     | 
    
      INTEGER*4(2)
        or
        INTEGER*8
      1
     | 
  
  
    | 
      device_name
     | 
    
      CHARACTER*
      n
     | 
  
  
    | 
      ef_cluster_name
     | 
    
      CHARACTER*
      n
     | 
  
  
    | 
      ef_number
     | 
    
      INTEGER*4
     | 
  
  
    | 
      exit_handler_block
     | 
    
      STRUCTURE /exhblock/
        INTEGER*4 flink
        INTEGER*4 exit_handler_addr
        BYTE(3) /0/
        BYTE arg_count
        INTEGER*4 cond_value
        ! .
        ! .(optional arguments ... one argument
        ! . per longword)
        !
        END STRUCTURE !cntrlblk
       
        RECORD /exhblock/ myexh_block
     | 
  
  
    | 
      fab
     | 
    
      INCLUDE '($FABDEF)'
        RECORD /fabdef/ myfab
     | 
  
  
    | 
      file_protection
     | 
    
      INTEGER*4
     | 
  
  
    | 
      floating_point
     | 
    
      REAL*4
      3
        REAL*8
      3
        DOUBLE PRECISION
      3
        REAL*16
      4
     | 
  
  
    | 
      function_code
     | 
    
      INTEGER*4
     | 
  
  
    | 
      identifier
     | 
    
      INTEGER*4
     | 
  
  
    | 
      invo_context_blk
      1
     | 
    
      INCLUDE ('LIBICB')
        RECORD /INVO_CONTEXT_BLK/ invo_context_blk
     | 
  
  
    | 
      invo_handle
      1
     | 
    
      INTEGER*4
     | 
  
  
    | 
      io_status_block
     | 
    
      STRUCTURE /iosb/
        INTEGER*2 iostat, !return status
        2 term_offset, !location of line terminator
        2 terminator, !value of terminator
        2 term_size !size of terminator
        END STRUCTURE
       
        RECORD /iosb/ my_iosb
     | 
  
  
    | 
      item_list_2
     | 
    
      STRUCTURE /itmlst/
        UNION
        MAP
        INTEGER*2 buflen,code
        INTEGER*4 bufadr
        END MAP
        MAP
        INTEGER*4 end_list /0/
        END MAP
        END UNION
        END STRUCTURE !itmlst
       
        RECORD /itmlst/ my_itmlst_2(
      n)
        (Allocate
      n records, where
      n is the number of item codes plus an extra element for the
      end-of-list item.)
     | 
  
  
    | 
      item_list_3
     | 
    
      STRUCTURE /itmlst/
        UNION
        MAP
        INTEGER*2 buflen,code
        INTEGER*4 bufadr,retlenadr
        END MAP
        MAP
        INTEGER*4 end_list /0/
        END MAP
        END UNION
        END STRUCTURE !itmlst
       
        RECORD /itmlst/ my_itmlst_2(
      n)
        (Allocate
      n records, where
      n is the number of item codes plus an extra element for the
      end-of-list item.)
     | 
  
  
    | 
      item_list_pair
     | 
    
      STRUCTURE /itmlist_pair/
        UNION
        MAP
        INTEGER*4 code
        INTEGER*4 value
        END MAP
        MAP
        INTEGER*4 end_list /0/
        END MAP
        END UNION
        END STRUCTURE !itmlst_pair
       
        RECORD /itmlst_pair/ my_itmlst_pair(
      n)
        (Allocate
      n records, where
      n is the number of item codes plus an extra element for the
      end-of-list item.)
     | 
  
  
    | 
      item_quota_list
     | 
    
      STRUCTURE /item_quota_list/
        MAP
        BYTE quota_name
        INTEGER*4 quota_value
        END MAP
        MAP
        BYTE end_quota_list
        END MAP
        END STRUCTURE !item_quota_list
     | 
  
  
    | 
      lock_id
     | 
    
      INTEGER*4
     | 
  
  
    | 
      lock_status_block
     | 
    
      STRUCTURE/lksb/
        INTEGER*2 cond_value
        INTEGER*2 unused
        INTEGER*4 lock_id
        BYTE(16)
        END STRUCTURE !lock_status_lock
     | 
  
  
    | 
      lock_value_block
     | 
    
      BYTE(16)
     | 
  
  
    | 
      logical_name
     | 
    
      CHARACTER*
      n
     | 
  
  
    | 
      longword_signed
     | 
    
      INTEGER*4
     | 
  
  
    | 
      longword_unsigned
     | 
    
      INTEGER*4
      2
     | 
  
  
    | 
      mask_byte
     | 
    
      BYTE
        or
        INTEGER*1
     | 
  
  
    | 
      mask_longword
     | 
    
      INTEGER*4
     | 
  
  
    | 
      mask_quadword
     | 
    
      INTEGER*4(2)
        or
        INTEGER*8
      1
     | 
  
  
    | 
      mask_word
     | 
    
      INTEGER*2
     | 
  
  
    | 
      mechanism_args
     | 
    
      INCLUDE '($CHFDEF)'
        RECORD /CHFDEF2/ mechargs
     | 
  
  
    | 
      null_arg
     | 
    
      %VAL(0)
     | 
  
  
    | 
      octaword_signed
     | 
    
      INTEGER*4(4)
     | 
  
  
    | 
      octaword_unsigned
     | 
    
      INTEGER*4(4)
      2
     | 
  
  
    | 
      page_protection
     | 
    
      INTEGER*4
     | 
  
  
    | 
      procedure
     | 
    
      INTEGER*4
     | 
  
  
    | 
      process_id
     | 
    
      INTEGER*4
     | 
  
  
    | 
      process_name
     | 
    
      CHARACTER*
      n
     | 
  
  
    | 
      quadword_signed
     | 
    
      INTEGER*4(2)
        or
        INTEGER*8
      1
     | 
  
  
    | 
      quadword_unsigned
     | 
    
      INTEGER*4(2)
      2
        or
        INTEGER*8
      1
     | 
  
  
    | 
      rights_holder
     | 
    
      INTEGER*4(2)
        or
        STRUCTURE /rights_holder/
        INTEGER*4 rights_id
        INTEGER*4 rights_mask
        END STRUCTURE !rights_holder
     | 
  
  
    | 
      rights_id
     | 
    
      INTEGER*4
     | 
  
  
    | 
      rab
     | 
    
      INCLUDE '($RABDEF)'
        RECORD /rabdef/ myrab
     | 
  
  
    | 
      section_id
     | 
    
      INTEGER*4(2)
        or
        INTEGER*8
      1
     | 
  
  
    | 
      section_name
     | 
    
      CHARACTER*
      n
     | 
  
  
    | 
      system_access_id
     | 
    
      INTEGER*4(2)
        or
        INTEGER*8
      1
     | 
  
  
    | 
      time_name
     | 
    
      CHARACTER*23
     | 
  
  
    | 
      transaction_id
     | 
    
      INTEGER*4(4)
      2
     | 
  
  
    | 
      uic
     | 
    
      INTEGER*4
     | 
  
  
    | 
      user_arg
     | 
    
      Any longword quantity
     | 
  
  
    | 
      varying_arg
     | 
    
      INTEGER*4
     | 
  
  
    | 
      vector_byte_signed
     | 
    
      BYTE(
      n)
     | 
  
  
    | 
      vector_byte_unsigned
     | 
    
      BYTE(
      n)
      2
     | 
  
  
    | 
      vector_longword_signed
     | 
    
      INTEGER*4(
      n)
     | 
  
  
    | 
      vector_longword_unsigned
     | 
    
      INTEGER*4(
      n)
      2
     | 
  
  
    | 
      vector_quadword_signed
     | 
    
      INTEGER*4(2,
      n)
        or
        INTEGER*8(
      n
      1)
     | 
  
  
    | 
      vector_quadword_unsigned
     | 
    
      INTEGER*4(2,
      n)
      2
        or
        INTEGER*8(
      n)
      1,
      2
     | 
  
  
    | 
      vector_word_signed
     | 
    
      INTEGER*2(
      n)
     | 
  
  
    | 
      vector_word_unsigned
     | 
    
      INTEGER*2(
      n)
      2
     | 
  
  
    | 
      word_signed
     | 
    
      INTEGER*2(
      n)
     | 
  
  
    | 
      word_unsigned
     | 
    
      INTEGER*2(
      n)
      2
     | 
  
  Table E-9 Pascal Implementations
  
    | OpenVMS Data Types  | 
    Pascal Declarations  | 
  
  
    | 
      access_bit_names
     | 
    
      PACKED ARRAY [1..32] OF [QUAD] RECORD END;
      1,2
     | 
  
  
    | 
      access_mode
     | 
    
      [BYTE] 0..3;
      2
     | 
  
  
    | 
      address
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      address_range
     | 
    
      PACKED ARRAY [1..2] OF UNSIGNED;
      2
     | 
  
  
    | 
      arg_list
     | 
    
      PACKED ARRAY [1..
      n] OF UNSIGNED;
      2
     | 
  
  
    | 
      ast_procedure
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      boolean
     | 
    
      BOOLEAN;
      3
     | 
  
  
    | 
      byte_signed
     | 
    
      [BYTE] - 128..127;
      2
     | 
  
  
    | 
      byte_unsigned
     | 
    
      [BYTE] 0..255;
      2
     | 
  
  
    | 
      channel
     | 
    
      [WORD] 0..65535;
      2
     | 
  
  
    | 
      char_string
     | 
    
      [CLASS_S] PACKED ARRAY [L..U:INTEGER] OF CHAR;
      4
     | 
  
  
    | 
      complex_number
     | 
    
      [LONG(2)] RECORD END; * F_Floating Complex *
      1,2
        [QUAD(2)] RECORD END; * D/G_Floating Complex *
        [OCTA(2)] RECORD END; * H_Floating Complex *
     | 
  
  
    | 
      cond_value
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      context
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      date_time
     | 
    
      [QUAD] RECORD END;
      1,2
     | 
  
  
    | 
      device_name
     | 
    
      [CLASS_S] PACKED ARRAY [L..U:INTEGER] OF CHAR;
      4
     | 
  
  
    | 
      ef_cluster_name
     | 
    
      [CLASS_S] PACKED ARRAY [L..U:INTEGER] OF CHAR;
      4
     | 
  
  
    | 
      ef_number
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      exit_handler_block
     | 
    
      PACKED ARRAY [1..
      n] OF UNSIGNED;
      2
     | 
  
  
    | 
      fab
     | 
    
      FAB$TYPE;
      5
     | 
  
  
    | 
      file_protection
     | 
    
      [WORD] RECORD END;
      1,2
     | 
  
  
    | 
      floating_point
     | 
    
      REAL; { F_Floating }
        SINGLE; { F_Floating }
        DOUBLE; { D_Floating/G_Floating }
      6
        QUADRUPLE; { H_Floating }
     | 
  
  
    | 
      function_code
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      identifier
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      invo_context_blk
      7
     | 
    
      LIBICB$INFO_CONTEXT_BLK
      5
     | 
  
  
    | 
      invo_handle
      7
     | 
    
      [UNSAFE]INTEGER;
     | 
  
  
    | 
      io_status_block
     | 
    
      [QUAD] RECORD END;
      1,2
     | 
  
  
    | 
      item_list_2
     | 
    
      PACKED ARRAY [1..
      n] OF PACKED RECORD
      2
        CASE INTEGER OF
        1: (
        FIELD1 : [WORD] 0..65535;
        FIELD2 : [WORD] 0..65535;
        FIELD3 : UNSIGNED);
        2: (
        TERMINATOR : UNSIGNED);
        END;
     | 
  
  
    | 
      item_list_3
     | 
    
      PACKED ARRAY [1..
      n] OF PACKED RECORD
      2
        CASE INTEGER OF
        1: (
        FIELD1 : [WORD] 0..65535;
        FIELD2 : [WORD] 0..65535;
        FIELD3 : UNSIGNED;
        FIELD4 : UNSIGNED);
        2: (
        TERMINATOR : UNSIGNED);
        END;
     | 
  
  
    | 
      item_list_pair
     | 
    
      PACKED ARRAY [1..
      n] OF PACKED RECORD
      2
        CASE INTEGER OF
        1: (
        FIELD1 : INTEGER;
        FIELD2 : INTEGER);
        2: (
        TERMINATOR : UNSIGNED);
        END;
     | 
  
  
    | 
      item_quota_list
     | 
    
      PACKED ARRAY [1..
      n] OF PACKED RECORD
      2
        CASE INTEGER OF
        1: (
        QUOTA_NAME : [BYTE] 0..255;
        QUOTA_VALUE: UNSIGNED);
        2: (
        QUOTA_TERM : [BYTE] 0..255);
        END;
     | 
  
  
    | 
      lock_id
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      lock_status_block
     | 
    
      [BYTE(24)] RECORD END;
      1,2
     | 
  
  
    | 
      lock_value_block
     | 
    
      [BYTE(16)] RECORD END;
      1,2
     | 
  
  
    | 
      logical_name
     | 
    
      [CLASS_S] PACKED ARRAY [L..U:INTEGER] OF CHAR;
      4
     | 
  
  
    | 
      longword_signed
     | 
    
      INTEGER;
     | 
  
  
    | 
      longword_unsigned
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      mask_byte
     | 
    
      [BYTE,UNSAFE] PACKED ARRAY [1..8] OF BOOLEAN;
      2
     | 
  
  
    | 
      mask_longword
     | 
    
      [LONG,UNSAFE] PACKED ARRAY [1..32] OF BOOLEAN;
      2
     | 
  
  
    | 
      mask_quadword
     | 
    
      [QUAD,UNSAFE] PACKED ARRAY [1..64] OF BOOLEAN;
      2
     | 
  
  
    | 
      mask_word
     | 
    
      [WORD,UNSAFE] PACKED ARRAY [1..16] OF BOOLEAN;
      2
     | 
  
  
    | 
      mechanism_args
     | 
    
      CHF$TYPE;
      5
     | 
  
  
    | 
      null_arg
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      octaword_signed
     | 
    
      [OCTA] RECORD END;
      1,2
     | 
  
  
    | 
      octaword_unsigned
     | 
    
      [OCTA] RECORD END;
      1,2
     | 
  
  
    | 
      page_protection
     | 
    
      [LONG] 0..7;
      2
     | 
  
  
    | 
      procedure
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      process_id
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      process_name
     | 
    
      [CLASS_S] PACKED ARRAY [L..U:INTEGER] OF CHAR;
      4
     | 
  
  
    | 
      quadword_signed
     | 
    
      [QUAD] RECORD END;
      1,2
     | 
  
  
    | 
      quadword_unsigned
     | 
    
      [QUAD] RECORD END;
      1,2
     | 
  
  
    | 
      rights_holder
     | 
    
      [QUAD] RECORD END;
      1,2
     | 
  
  
    | 
      rights_id
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      rab
     | 
    
      RAB$TYPE;
      5
     | 
  
  
    | 
      section_id
     | 
    
      [QUAD] RECORD END;
      1,2
     | 
  
  
    | 
      section_name
     | 
    
      [CLASS_S] PACKED ARRAY [L..U:INTEGER] OF CHAR;
      4
     | 
  
  
    | 
      system_access_id
     | 
    
      [QUAD] RECORD END;
      1,2
     | 
  
  
    | 
      time_name
     | 
    
      [CLASS_S] PACKED ARRAY [L..U:INTEGER] OF CHAR;
      4
     | 
  
  
    | 
      transaction_id
     | 
    
      [OCTA] RECORD END;
      1,2
     | 
  
  
    | 
      uic
     | 
    
      UNSIGNED;
     | 
  
  
    | 
      user_arg
     | 
    
      [UNSAFE] UNSIGNED;
     | 
  
  
    | 
      varying_arg
     | 
    
      [UNSAFE,REFERENCE] PACKED ARRAY [L..U:INTEGER] OF [BYTE] 0..255;
     | 
  
  
    | 
      vector_byte_signed
     | 
    
      PACKED ARRAY [1..
      n] OF [BYTE] - 128..127;
      2
     | 
  
  
    | 
      vector_byte_unsigned
     | 
    
      PACKED ARRAY [1..
      n] OF [BYTE] 0..255;
      2
     | 
  
  
    | 
      vector_longword_signed
     | 
    
      PACKED ARRAY [1..
      n] OF INTEGER;
      2
     | 
  
  
    | 
      vector_longword_unsigned
     | 
    
      PACKED ARRAY [1..
      n] OF UNSIGNED;
      2
     | 
  
  
    | 
      vector_quadword_signed
     | 
    
       PACKED ARRAY [1..
      n] OF [QUAD] RECORD END;
      1,2
     | 
  
  
    | 
      vector_quadword_unsigned
     | 
    
       PACKED ARRAY [1..
      n] OF [QUAD] RECORD END;
      1,2
     | 
  
  
    | 
      vector_word_signed
     | 
    
      PACKED ARRAY [1..
      n] OF [WORD] - 32768..32767;
      2
     | 
  
  
    | 
      vector_word_unsigned
     | 
    
      PACKED ARRAY [1..
      n] OF [WORD] 0..65535;
      2
     | 
  
  
    | 
      word_signed
     | 
    
      [WORD] - 32768..32767;
      2
     | 
  
  
    | 
      word_unsigned
     | 
    
      [WORD] 0..65535;
      2
     |