CRAY_FORTRAN(exp or eqn) generates FORTRAN suitable for the CRAY FORTRAN compilers, e.g., CFT and CIVIC. It is an extension of the MACSYMA FORTRAN function, with the following added capabilities: 1) It knows how to break up an expression which would be more than 19 continuation lines long into a series of legal FORTRAN statements with generated temporary names assigned to the pieces that have been broken out. See below about how to adjust this size. 2) It converts LOG into ALOG. 3) It allows an arbitrary character pattern to be substituted for a pattern in the FORTRAN output(without regard to line breaks). This is useful for changing subscripts carried formally in variable names to values needed in specific DO-LOOPs. 4) It removes the MACSYMA quote character, "\", from the output. 5) It has the option of returning a character string and generating no formatted FORTRAN output. This is a achieved by setting FORT_STRING[FALSE] to TRUE. This is useful for generating character strings for the algebraic operands in FORTRAN logical expressions needed by the CRAY "CVMGT" vector merge instruction. 6) It permits formatted FORTRAN output to be directed to a separate file by doing OPEN_FORTRAN_FILE(filespec)$ before and CLOSE_FORTRAN_FILE()$ after the appropriate calls to CRAY_FORTRAN. The output still goes to the TTY as well. It is possible to annotate the output to the separate file by use of the command COMMENT_FORTRAN(EXP)$, where EXP is any MACSYMA expression. The output from COMMENT_FORTRAN does NOT go to the TTY. 7) It replaces rational constants by constructed names and saves the required information in an internal database. By doing GENERATE_DATA_SECTION()$ after the appropriate calls to CRAY_FORTRAN, DATA statements are generated which will properly define the constructed names. The global variables affecting FORTRAN also affect CRAY_FORTRAN in the same manner. Additional global variables not mentioned above are: FORT_FLOAT[TRUE] should be set to FALSE if the expressions passed to CRAY_FORTRAN contain only integers and integer variables. FORT_POWER_FLOAT[FALSE] - if TRUE, integer exponents are converted into floating-point numbers in the formatted FORTRAN output. ALLOWED_LENGTH[1250] is the number of characters which can be output in a single FORTRAN statement. The number 1250 corresponds to a FORTRAN statement with 19 continuation lines and no indentation. To add an extra line with no indentation, increase ALLOWED_LENGTH by 63. There is a minimum value for ALLOWED_LENGTH, and CRAY_FORTRAN will reset ALLOWED_LENGTH to that value if the user has set it to a smaller number. BREAK_PREFIX['aa] is the character string used to prefix all symbols generated to represent subexpressions which had to be broken out of an expression so that each would result in FORTRAN statements within the ALLOWED_LENGTH limit. SEQUENCE_OPTIM_SUFFIX[?'s] is the string used to suffix symbols generated to represent subexpressions broken out of an expression by CRAY_FORTRAN because that expression was too large to be handled by the CFT(or other appropriate) compiler(The "?" in the default value removes the internal "$"). FORTRAN_SUBST_LIST[[]] is the MAXSYMA list of equations used to perform substring substitutions in the formatted FORTRAN output. The RHS of each equation is interpreted as a LISP list of characters(generated for example by EXPLODEN(?)) to be substituted for a given character pattern in the output. This pattern is represented by another LISP list (similarly generated) in the LHS of the equation. The CRAY_FORTRAN output is one long LISP list of characters at the point of comparison. Note that the function EXPLODEN is included in the CRAY_FORTRAN FASL file. To access CRAY_FORTRAN, do LOAD(CFORTR)$ . A demonstration can be found in SHARE1;CFORTR DEMO . Bugs to GCOOK@MIT-MC .