STRUCT(1) General Commands Manual STRUCT(1)
struct - structure Fortran programs
struct [ option ] ... file
Struct translates the Fortran program specified by file (standard input default) into a Ratfor program. Wherever possible, Ratfor control
constructs replace the original Fortran. Statement numbers appear only where still necessary. Cosmetic changes are made, including chang-
ing Hollerith strings into quoted strings and relational operators into symbols (.e.g. `.GT.' into `>'). The output is appropriately
The following options may occur in any order.
-s Input is accepted in standard format, i.e. comments are specified by a c, C, or * in column 1, and continuation lines are specified
by a nonzero, nonblank character in column 6. Normally, a statement whose first nonblank character is not alphanumeric is treated
as a continuation.
-i Do not turn computed goto statements into switches. (Ratfor does not turn switches back into computed goto statements.)
-a Turn sequences of else ifs into a non-Ratfor switch of the form
case pred1: code
case pred2: code
case pred3: code
The case predicates are tested in order; the code appropriate to only one case is executed. This generalized form of switch state-
ment does not occur in Ratfor.
-b Generate goto's instead of multilevel break statements.
-n Generate goto's instead of multilevel next statements.
-en If n is 0 (default), place code within a loop only if it can lead to an iteration of the loop. If n is nonzero, admit code segments
with fewer than n statements to a loop if otherwise the loop would have exits to several places including the segment, and the seg-
ment can be reached only from the loop.
Struct knows Fortran 66 syntax, but not full Fortran 77 (alternate returns, IF...THEN...ELSE, etc.)
If an input Fortran program contains identifiers which are reserved words in Ratfor, the structured version of the program will not be a
valid Ratfor program.
Extended range DO's generate cryptic errors.
Columns 73-80 are not special even when -s is in effect.
Will not generate Ratfor FOR statements.
Check Out this Related Man Page
FWEB(1) General Commands Manual FWEB(1)
ftangle,fweave - WEB processors for C, C++, Fortran, Ratfor, and TeX
| [[-option] ...] src_file[.web] [change_file[.ch]]
(This man page is obsolete and is no longer maintained; please see `info fweb' for up-to-date and detailed tree-structured information.)
FWEB is an extension of Knuth's WEB system to handle the languages C, C++, Fortran (both Fortran-77 and Fortran-90), Ratfor, and TeX. The
philosophy of WEB and all details about using FWEB may be found in the user manual fweb.tex, available on-line as the texinfo (GNU hyper-
text system) entry `info FWEB'. See also
An initialization file named .fweb (Unix sytems) or fweb.ini (personal computers) may be placed in your home directory. (For Unix systems,
that is the value of $HOME. The name can be overridden by the environment variable FWEB_INI.) In this file can be placed any option that
is allowed on the command line (one option per line). If the option begins with a hyphen, it is processed before the command line; if it
begins with an ampersand, it is processed after the command line (rarely necessary); if it begins with neither, it is interpreted as a file
name and processed after the command line.
A style file patterned after the utility makeindex and named fweb.sty may be placed in your current directory. (The directory can be over-
ridden by the environment variable FWEB_STYLE_DIR.) This file is used to customize the appearance of the index and many other parameters
controlling the operation of the processors. See the documentation for detailed discussion.
The following list just provides a very brief summary of the command-line options. Please refer to the texinfo entry for more details.
The first file name identifies the FWEB source file. (If the name does not contain a period, the extension .web is added automati-
cally.) If a second file name is present, it identifies the change file. (If that name does not contain a period, the extension
.ch is added automatically.) For an alternative approach to processing extensions, see the -e option.
-1 Turn on brief debugging mode for FWEAVE.
-2 Turn on verbose debugging mode for FWEAVE.
-@ Display information about control codes.
-A Turn on ASCII translations.
-B Turn off audible beeps.
-b Number do and if blocks in woven Fortran and Ratfor output.
-Cn Set the color mode to n, where n is 0 (no color), 1 (ANSI color), 2 (bilevel), 3 (trilevel), or 4 (user-defined).
-c Set the global language to C.
-c++ Set the global language to C++.
Display information about reserved words of the current language (beginning with [letters] if present).
Convert unnumbered do...enddo constructions to standard Fortran.
-Ec Change the delimiter of a file-name extension to c.
-e Turn on automatic file-name completion, using the style-file parameters ext.web, ext.ch, ext.hweb, and ext.hch.
-F Compare output files with old versions.
-f Turn off module references for functions, macro names, etc.
-H Scan #include files for typedef and/or class declarations.
-h A brief message about where to get help.
Append a directory to the list of directories to be searched for include files.
-i Read include files named by the @I command, but don't print contents.
-i! Don't even read include files named by the @I command.
-j Inhibit multiple includes of the same file.
-k Recognize lower-case versions of Fortran/Ratfor I/O keywords such as BLOCKSIZE.
-Ll Select language l.
Echo the input lines between mmm and nnn.
Define an FWEB macro.
-m4 Understand (for formatting purposes) the commands of the m4 preprocessor.
-m; Automatically append pseudo-semicolons to the end of WEB macro definitions. (Not recommended.)
-n Set the global language to Fortran-77.
-n9 Set the global language to Fortran-90.
-n; For Fortran-77, supply semicolons automatically (default).
-n: In Fortran, place statement labels on separate lines.
-nb Number the do's and if's in Fortran.
-nC Throw away all commet lines.
-np Print semicolons in woven Fortran output.
-n Use free-form syntax for Fortran-90; continue lines with backslashes.
-n& As above, but continue lines with ampersands.
-n/ In Fortran, make '//' denote the start of a short comment instead of concatenation. (Use '' for concatenation.)
-n! In Fortran, make '!' denote the start of a short comment instead of the logical negation.
-n) In Fortran, reverse array indices.
-o Turn off FWEAVE's mechanisms for overloading operators.
Select the TeX processor, where letter is either 'T' for TeX or 'L' for LaTeX. The default is LaTeX. Note well that Plain TeX is
no longer supported!
Buffer up a style-file entry, to be processed just before the local style file is read.
-r Set the global language to Ratfor-77.
-r9 Set the global language to Ratfor-90.
-rb Number the do's and if's in Ratfor.
Suppress comments about particular Ratfor statement expansions.
Include comments about particular Ratfor statement expansions.
-r; For Ratfor, turn on the auto-semi mode and assume the ``obviously continued'' syntax. (Not recommended.)
-r/ In Ratfor, make '//' denote the start of a short comment instead of concatenation. (Use '' for concatenation.)
-r! In Ratfor, make '!' denote the start of a short comment instead of the logical negation.
-r) In Ratfor, reverse array indices.
-s Print statistics about memory usage.
As above, but also display the dynamic memory allocations as they occur.
-T Miscellaneous flag-setting commands for ftangle; see texinfo entry.
Truncate identifiers of language l to be of length n, after optionally filtering out the characters listed between the braces.
-U Convert reserved output tokens to lower case.
-uid Undefine a predefined or command-line macro.
-v Make all comments verbatim.
-W@flag Set module warning flag [0 for no warnings, or the logical OR of 1 (never used) and/or 2 (multiple uses)].
-W1 Completely cross-reference single-character identifiers.
-W[ Turn on special processing of bracketed array indices.
-WH Turn on processing of bracketed array indices.
-Wd Don't print @d or @D statements in woven output.
-Wf Don't print @f statements in woven output.
-WF Don't print @F statements in woven output.
-Wl Don't print @l statements in woven output.
-Wm Don't print @m or @M statements in woven output.
-Wv Don't print @v statements in woven output.
-Ww Don't print @w or @W statements in woven output.
Print `input file_name' instead of `input fwebmac.sty' at beginning of tex output file. With no argument, print nothing.
Print selected cross-reference information; the opposite of '-x'.
Reduce or eliminate cross-reference information. The optional letters can be one of 'c', 'i', 'm', or '*', referring respectively
to the table of contents, index, module list, or all cross-reference information.
Override default for dynamic memory allocation. If nnnn is omitted, then simply query the default. The command '-y' with no argu-
ment queries everything.
Display default values of style-file parameters (starting with letters if present).
Override default style-file name.
-. Don't recognize dot constants in Fortran and Ratfor.
- Explicitly escape continued strings.
-( Continue parenthesized strings with backslashes.
Set the starting automatic statement number for rtran and .TP ->[l=][name] Redirect output.
-= Same as above (and easier to type).
-# Turn off comments about line numbers and modules in woven output.
-+ Don't interpret the compound assignment operators in Fortran and Ratfor.
-/ In Fortran and Ratfor, make '//' denote the start of a short comment instead of concatenation. (Use '' for concatenation.)
-! In Fortran and Ratfor, make '!' denote the start of a short comment instead of logical negation.
Further documentation can be obtained from texinfo, available online through the info browser, either via emacs or stand-alone (menu item
fweb), by saying `ftangle -h' or in printed form by saying (from the top-level FWEB installation directory, if it is available) `lpr Man-
ual/fweb.ps' or `texi2dvi Manual/fweb.texinfo'.
- Optional initialization file (supplied by user).
- Optional style file for configuring the style of an individual document (supplied by user).
- Colon-delimited list of directories to be searched for include files.
- Name of the initialization file in user's home directory.
- Directory in which the style file resides.
Please send bug reports and suggestions to firstname.lastname@example.org. FWEB is a spare-time activity, so response may be slow and messages may
not be acknowledged individually. However, your input is very useful and much appreciated.
FWEB was written by John A. Krommes, Princeton University. It is a substantial revision and update (more than 50% new) of version 0.5 of
Silvio Levy's CWEB, which in turn was based on Donald Knuth's original Pascal WEB. The latter was designed for documenting and maintaining
4th Berkeley Distribution September 23, 1998 FWEB(1)