next up previous 86
Next: A Full List of Conversion Functions
Up: GENERIC A Utility for Preprocessing Generic Fortran and C Subroutines
Previous: Range Checking


A Full Table of Token Translations

This appendix gives the translations of all the tokens made by GENERIC for each of the data types. If a translation is illegal, the result will be ``?'' (and GENERIC will give a warning message).

To produce the BYTE version of a program, the following substitutions are made.

Kernel tokens (translated by default):
TOKEN SUBSTITUTE COMMENT
     
$<$T$>$ "B" Subroutine name extension
$<$TYPE$>$ "BYTE" Argument type definition
$<$LTYPE$>$ "BYTE" Local type definition
$<$CONST$>$ " " String to be appended to constant
$<$HTYPE$>$ "_BYTE" HDS  type
$<$COMM$>$ "BYTE" Comment describing type

ASTERIX tokens (translated when -a is specified):
TOKEN SUBSTITUTE COMMENT
     
$<$CONV$>$ " " BYTE to REAL conversion
$<$EXT$>$ " " BYTE to REAL conversion extension
$<$BRAK$>$ " " Brackets for BYTE to REAL conversion
$<$ICONV$>$ " " BYTE to INTEGER conversion
$<$IEXT$>$ " " BYTE to INTEGER conversion extension
$<$IBRAK$>$ " " Brackets for BYTE to INTEGER conversion
$<$REV$>$ " " REAL to BYTE conversion
$<$RVBRAK$>$ " " Brackets for REAL to BYTE conversion
$<$IREV$>$ " " INTEGER to BYTE conversion
$<$IRVBRAK$>$ " " Brackets for INTEGER to BYTE conversion

To produce the UNSIGNED BYTE version of a program, the following substitutions are made.

Kernel tokens (translated by default):
TOKEN SUBSTITUTE COMMENT
     
$<$T$>$ "UB" Subroutine name extension
$<$TYPE$>$ "BYTE" Argument type definition
$<$LTYPE$>$ "BYTE" Local type definition
$<$CONST$>$ " " String to be appended to constant
$<$HTYPE$>$ "_UBYTE" HDS type
$<$COMM$>$ "UNSIGNED BYTE" Comment describing type

ASTERIX tokens (translated when -a is specified):
TOKEN SUBSTITUTE COMMENT
     
$<$CONV$>$ "REAL(" UNSIGNED BYTE to REAL conversion
$<$EXT$>$ "ZEXT(" UNSIGNED BYTE to REAL conversion extension
$<$BRAK$>$ "))" Brackets for UNSIGNED BYTE to REAL conversion
$<$ICONV$>$ "INT(" UNSIGNED BYTE to INTEGER conversion
$<$IEXT$>$ "ZEXT(" UNSIGNED BYTE to INTEGER conversion extension
$<$IBRAK$>$ "))" Brackets for UNSIGNED BYTE to INTEGER conversion
$<$REV$>$ "NINT(" REAL to UNSIGNED BYTE conversion
$<$RVBRAK$>$ ")" Brackets for REAL to UNSIGNED BYTE conversion
$<$IREV$>$ " " INTEGER to UNSIGNED BYTE conversion
$<$IRVBRAK$>$ " " Brackets for INTEGER to UNSIGNED BYTE conversion

To produce the CHARACTER version of a program, the following substitutions are made.

Kernel tokens (translated by default):
TOKEN SUBSTITUTE COMMENT
     
$<$T$>$ "C" Subroutine name extension
$<$TYPE$>$ "CHARACTER*(*)" Argument type definition
$<$LTYPE$>$ "CHARACTER*$<$CHASIZ$>$" Local type definition (CHASIZ = 200 by default)
$<$CONST$>$ "?" String to be appended to constant
$<$HTYPE$>$ "_CHAR" HDS type
$<$COMM$>$ "CHARACTER" Comment describing type

ASTERIX tokens (translated when -a is specified):
TOKEN SUBSTITUTE COMMENT
     
$<$CONV$>$ "?" CHARACTER to REAL conversion
$<$EXT$>$ "?" CHARACTER to REAL conversion extension
$<$BRAK$>$ "?" Brackets for CHARACTER to REAL conversion
$<$ICONV$>$ "?" CHARACTER to INTEGER conversion
$<$IEXT$>$ "?" CHARACTER to INTEGER conversion extension
$<$IBRAK$>$ "?" Brackets for CHARACTER to INTEGER conversion
$<$REV$>$ "?" REAL to CHARACTER conversion
$<$RVBRAK$>$ "?" Brackets for REAL to CHARACTER conversion
$<$IREV$>$ "?" INTEGER to CHARACTER conversion
$<$IRVBRAK$>$ "?" Brackets for INTEGER to CHARACTER conversion

To produce the DOUBLE PRECISION version of a program, the following substitutions are made.

Kernel tokens (translated by default):
TOKEN SUBSTITUTE COMMENT
     
$<$T$>$ "D" Subroutine name extension
$<$TYPE$>$ "DOUBLE PRECISION" Argument type definition
$<$LTYPE$>$ "DOUBLE PRECISION" Local type definition
$<$CONST$>$ ".0D0" String to be appended to constant
$<$HTYPE$>$ "_DOUBLE" HDS type
$<$COMM$>$ "DOUBLE PRECISION" Comment describing type

ASTERIX tokens (translated when -a is specified):
TOKEN SUBSTITUTE COMMENT
     
$<$CONV$>$ "SNGL(" DOUBLE PRECISION to REAL conversion
$<$EXT$>$ " " DOUBLE PRECISION to REAL conversion extension
$<$BRAK$>$ ")" Brackets for DOUBLE PRECISION to REAL conversion
$<$ICONV$>$ "NINT(" DOUBLE PRECISION to INTEGER conversion
$<$IEXT$>$ " " DOUBLE PRECISION to INTEGER conversion extension
$<$IBRAK$>$ ")" Brackets for DOUBLE PRECISION to INTEGER conversion
$<$REV$>$ "DBLE(" REAL to DOUBLE PRECISION conversion
$<$RVBRAK$>$ ")" Brackets for REAL to DOUBLE PRECISION conversion
$<$IREV$>$ "DBLE(" INTEGER to DOUBLE PRECISION conversion
$<$IRVBRAK$>$ ")" Brackets for INTEGER to DOUBLE PRECISION conversion

To produce the INTEGER version of a program, the following substitutions are made.

Kernel tokens (translated by default):
TOKEN SUBSTITUTE COMMENT
     
$<$T$>$ "I" Subroutine name extension
$<$TYPE$>$ "INTEGER" Argument type definition
$<$LTYPE$>$ "INTEGER" Local type definition
$<$CONST$>$ " " String to be appended to constant
$<$HTYPE$>$ "_INTEGER" HDS type
$<$COMM$>$ "INTEGER" Comment describing type

ASTERIX tokens (translated when -a is specified).
TOKEN SUBSTITUTE COMMENT
     
$<$CONV$>$ "REAL(" INTEGER to REAL conversion
$<$EXT$>$ " " INTEGER to REAL conversion extension
$<$BRAK$>$ ")" Brackets for INTEGER to REAL conversion
$<$ICONV$>$ " " INTEGER to INTEGER conversion
$<$IEXT$>$ " " INTEGER to INTEGER conversion extension
$<$IBRAK$>$ " " Brackets for INTEGER to INTEGER conversion
$<$REV$>$ "NINT(" REAL to INTEGER conversion
$<$RVBRAK$>$ ")" Brackets for REAL to INTEGER conversion
$<$IREV$>$ " " INTEGER to INTEGER conversion
$<$IRVBRAK$>$ " " Brackets for INTEGER to INTEGER conversion

To produce the LOGICAL version of a program, the following substitutions are made.

Kernel tokens (translated by default):
TOKEN SUBSTITUTE COMMENT
     
$<$T$>$ "L" Subroutine name extension
$<$TYPE$>$ "LOGICAL" Argument type definition
$<$LTYPE$>$ "LOGICAL" Local type definition
$<$CONST$>$ " " String to be appended to constant
$<$HTYPE$>$ "_LOGICAL" HDS type
$<$COMM$>$ "LOGICAL" Comment describing type

ASTERIX tokens (translated when -a is specified).
TOKEN SUBSTITUTE COMMENT
     
$<$CONV$>$ "?" LOGICAL to REAL conversion
$<$EXT$>$ "?" LOGICAL to REAL conversion extension
$<$BRAK$>$ "?" Brackets for LOGICAL to REAL conversion
$<$ICONV$>$ "?" LOGICAL to INTEGER conversion
$<$IEXT$>$ "?" LOGICAL to INTEGER conversion extension
$<$IBRAK$>$ "?" Brackets for LOGICAL to INTEGER conversion
$<$REV$>$ "?" REAL to LOGICAL conversion
$<$RVBRAK$>$ "?" Brackets for REAL to LOGICAL conversion
$<$IREV$>$ "?" INTEGER to LOGICAL conversion
$<$IRVBRAK$>$ "?" Brackets for INTEGER to LOGICAL conversion

To produce the REAL version of a program, the following substitutions are made.

Kernel tokens (translated by default):
TOKEN SUBSTITUTE COMMENT
     
$<$T$>$ "R" Subroutine name extension
$<$TYPE$>$ "REAL" Argument type definition
$<$LTYPE$>$ "REAL" Local type definition
$<$CONST$>$ ".0E0" String to be appended to constant
$<$HTYPE$>$ "_REAL" HDS type
$<$COMM$>$ "REAL" Comment describing type

ASTERIX tokens (translated when -a is specified).
TOKEN SUBSTITUTE COMMENT
     
$<$CONV$>$ " " REAL to REAL conversion
$<$EXT$>$ " " REAL to REAL conversion extension
$<$BRAK$>$ " " Brackets for REAL to REAL conversion
$<$ICONV$>$ "NINT(" REAL to INTEGER conversion
$<$IEXT$>$ " " REAL to INTEGER conversion extension
$<$IBRAK$>$ ")" Brackets for REAL to INTEGER conversion
$<$REV$>$ " " REAL to REAL conversion
$<$RVBRAK$>$ " " Brackets for REAL to REAL conversion
$<$IREV$>$ "REAL(" INTEGER to REAL conversion
$<$IRVBRAK$>$ ")" Brackets for INTEGER to REAL conversion

To produce the WORD version of a program, the following substitutions are made.

Kernel tokens (translated by default):
TOKEN SUBSTITUTE COMMENT
     
$<$T$>$ "W" Subroutine name extension
$<$TYPE$>$ "INTEGER*2" Argument type definition
$<$LTYPE$>$ "INTEGER*2" Local type definition
$<$CONST$>$ " " String to be appended to constant
$<$HTYPE$>$ "_WORD" HDS type
$<$COMM$>$ "WORD" Comment describing type

ASTERIX tokens (translated when -a is specified).
TOKEN SUBSTITUTE COMMENT
     
$<$CONV$>$ "REAL(" WORD to REAL conversion
$<$EXT$>$ " " WORD to REAL conversion extension
$<$BRAK$>$ ")" Brackets for WORD to REAL conversion
$<$ICONV$>$ " " WORD to INTEGER conversion
$<$IEXT$>$ " " WORD to INTEGER conversion extension
$<$IBRAK$>$ " " Brackets for WORD to INTEGER conversion
$<$REV$>$ "NINT(" REAL to WORD conversion
$<$RVBRAK$>$ ")" Brackets for REAL to WORD conversion
$<$IREV$>$ " " INTEGER to WORD conversion
$<$IRVBRAK$>$ " " Brackets for INTEGER to WORD conversion

To produce the UNSIGNED WORD version of a program, the following substitutions are made.

Kernel tokens (translated by default):
TOKEN SUBSTITUTE COMMENT
     
$<$T$>$ "UW" Subroutine name extension
$<$TYPE$>$ "INTEGER*2" Argument type definition
$<$LTYPE$>$ "INTEGER*2" Local type definition
$<$CONST$>$ " " String to be appended to constant
$<$HTYPE$>$ "_UWORD" HDS type
$<$COMM$>$ "UNSIGNED WORD" Comment describing type

ASTERIX tokens (translated when -a is specified).
TOKEN SUBSTITUTE COMMENT
     
$<$CONV$>$ "REAL(" UNSIGNED WORD to REAL conversion
$<$EXT$>$ "ZEXT(" UNSIGNED WORD to REAL conversion extension
$<$BRAK$>$ "))" Brackets for UNSIGNED WORD to REAL conversion
$<$ICONV$>$ " " UNSIGNED WORD to INTEGER conversion
$<$IEXT$>$ "ZEXT(" UNSIGNED WORD to INTEGER conversion extension
$<$IBRAK$>$ ")" Brackets for UNSIGNED WORD to INTEGER conversion
$<$REV$>$ "NINT(" REAL to UNSIGNED WORD conversion
$<$RVBRAK$>$ ")" Brackets for REAL to UNSIGNED WORD conversion
$<$IREV$>$ " " INTEGER to UNSIGNED WORD conversion
$<$IRVBRAK$>$ " " Brackets for INTEGER to UNSIGNED WORD conversion



next up previous 86
Next: A Full List of Conversion Functions
Up: GENERIC A Utility for Preprocessing Generic Fortran and C Subroutines
Previous: Range Checking

GENERIC --- A Utility for Preprocessing Generic Fortran and C Subroutines
Starlink User Note 7
S M Beard
P M Allan
Malcolm J. Currie
Peter W. Draper
2006 May 8
E-mail:starlink@jiscmail.ac.uk

Copyright © 2013 Science and Technology Facilities Council