STRUCT(1)                                               STRUCT(1)

     NAME
          struct - structure Fortran programs

     SYNOPSIS
          struct [ option ] ...  file

     DESCRIPTION
          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 neces-
          sary.  Cosmetic changes are made, including changing Hol-
          lerith strings into quoted strings and relational operators
          into symbols (e.g. ".GT." into ">").  The output is appro-
          priately indented.

          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 continu-
               ation lines are specified by a nonzero, nonblank char-
               acter in column 6.  Normally input is in the form
               accepted by f77(1)

          -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

               switch
                    { case pred1: code
                      case pred2: code
                      case pred3: code
                      default: code
                    }

               The case predicates are tested in order; the code
               appropriate to only one case is executed.  This gener-
               alized form of switch statement does not occur in Rat-
               for.

          -b   Generate goto's instead of multilevel break statements.

          -n   Generate goto's instead of multilevel next statements.

          -tn  Make the nonzero integer n the lowest valued label in
               the output program (default 10).

     STRUCT(1)                                               STRUCT(1)

          -cn  Increment successive labels in the output program by
               the nonzero integer n (default 1).

          -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 a small code segments to a loop if oth-
               erwise the loop would have exits to several places
               including the segment, and the segment can be reached
               only from the loop.  `Small' is close to, but not equal
               to, the number of statements in the code segment.  Val-
               ues of n under 10 are suggested.

     FILES
          /tmp/struct*
          /usr/lib/struct/*

     SEE ALSO
          f77(1), ratfor(1)

     BUGS
          Struct knows Fortran 66 syntax, but not full Fortran 77.
          If an input Fortran program contains identifiers which are
          reserved words in Ratfor, the structured version of the pro-
          gram will not be a valid Ratfor program.
          The labels generated cannot go above 32767.
          If you get a goto without a target, try -e .