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).
Additional substitutions are made if the input file is a C source file, described in Appendix A.
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 |