Code Conversion

TRANSX is designed to be converted easily between long-word machines (CDC, CRAY) and short-word machines (IBM, VAX, Sun). All Hollerith variables begin with the letter ``H'' and can be defined to be double-precision with a statement like IMPLICIT REAL*8 (H). Expressions for the lengths of arrays and pointers for the starting locations of arrays all use the parameter MULT, which is set equal to 1 if the machine word can contain 8 or more characters and 2 if not (an IBM word contains 4 characters). The input routine FREE contains a machine-dependent variable MACHWD for the number of characters per machine word (MACHWD=10 for CDC, 8 for CRAY, and 4 for IBM, VAX, or Sun).

Most of the changes required to go back and forth between short-word and long-word machines are carried out automatically using the conditional capabilities of the UPD code. As an example,

*IF SW
      IMPLICIT REAL*8 (H)
*ELSE
      IMPLICIT INTEGER (H)
*ENDIF
The user only has to be sure to include the line ``*SET SW'' in the UPN input file for the UPD run (put it before the first ``ident'').

After these changes have been made, there may still be some incompatible system calls connected with input/output, CP time, date, clock time, and fatal error handling. Fatal errors use subroutine ERROR, which can often be adapted to provide trace back information or to leave a ``drop file'' for later analysis by an on-line debugging code. The subroutine TIMER is used to obtain elapsed CP time in seconds. DATER is used to obtain a date string (which can be formatted in different ways as long as it contains only 8 characters; examples are ``mm/dd/yy,'' ``dd/mm/yy,'' or ``ddmmmyy''). WCLOCK is used to obtain the wall clock time; that is, the time of day for the TRANSX run. UPD idents are provided for several common machines and operating systems. These decks can also be used as starting points in constructing the updates required for other systems.

The problems of input/output have been alleviated somewhat by FORTRAN-77, but some installers may still find incompatibilities. TRANSX uses the CCCC standard ( Ref. 25) subroutines SEEK, REED, and RITE. Local optimized versions may be available at installations that use existing reactor-physics codes. RITE is used to write a binary record and is very simple. REED is used to read binary records, but the reads may be nonconsecutive. At Los Alamos, nonconsecutive reads are supported using forward and backward record skipping. On some systems (especially VAX), it may be more efficient to rewind and skip forward rather than to use the backspace command. The SEEK routine is used to connect external files by name to logical unit numbers. The FORTRAN-77 version used in the code should work for most systems. The Los Alamos CTSS version of TRANSX uses the program card to assign the input, output, and tty units, and the FILEREP call to enable reassignment of units on the execute line (e.g., transx input=test1,output=out1). Some systems may require explicit OPEN statements for these units.

TRANSX HyperText Manual
TRANSX HyperText Help Package
T-2 Nuclear Information Service