|
|
1.1 root 1: .TH STRUCT 1
2: .SH NAME
3: struct \- structure Fortran programs
4: .SH SYNOPSIS
5: .B struct
6: [
7: .I option ...
8: ]
9: .I file
10: .SH DESCRIPTION
11: .LP
12: .I Struct
13: translates the Fortran program specified by
14: .I file
15: (standard input default)
16: into a Ratfor program.
17: Wherever possible, Ratfor control constructs
18: replace the original Fortran.
19: Statement numbers appear only where still necessary.
20: Cosmetic changes are made, including changing Hollerith strings
21: into quoted strings
22: and relational operators into symbols (e.g.\&
23: .L .GT.
24: into
25: .LR > ).
26: The output is appropriately indented.
27: .PP
28: The following options may occur in any order.
29: .TP
30: .B -s
31: Input uses standard Fortran comment and continuation conventions.
32: Normally input is in the form accepted by
33: .IR f77 (1)
34: .TP
35: .B -i
36: Do not turn computed goto statements into
37: switches.
38: (Ratfor does not turn switches back
39: into computed goto statements.)
40: .TP
41: .B -a
42: Turn sequences of else ifs into a
43: non-Ratfor switch of the form
44: .IP
45: .EX
46: switch
47: { case pred1: code
48: case pred2: code
49: case pred3: code
50: default: code
51: }
52: .EE
53: .IP
54: The case predicates are tested in order;
55: the code appropriate to only one case is executed.
56: This generalized form of switch statement does not
57: occur in Ratfor.
58: .TP
59: .B -b
60: Generate goto's instead of multilevel break statements.
61: .TP
62: .B -n
63: Generate goto's instead of multilevel next statements.
64: .TP
65: .BI -t n
66: Make
67: the nonzero integer
68: .I n
69: the lowest valued label in the output program
70: (default 10).
71: .TP
72: .BI -c n
73: Increment successive labels
74: in the output program
75: by the nonzero integer
76: .I n
77: (default 1).
78: .TP
79: .BI -e n
80: If
81: .I n
82: is 0 (default),
83: place code within a loop only if it can
84: lead to an iteration of the loop.
85: If
86: .I n
87: is nonzero,
88: admit a small code segment to a loop
89: if otherwise the loop would have exits to several places including the segment,
90: and the segment can be reached only from the loop.
91: `Small' is close to, but not equal to, the
92: number of statements in the code segment.
93: Values of
94: .I n
95: under 10 are suggested.
96: .SH FILES
97: .F /tmp/struct*
98: .br
99: .F /usr/lib/struct/*
100: .SH SEE ALSO
101: .IR f77 (1),
102: .IR ratfor (A)
103: .br
104: B. S. Baker,
105: `An Algorithm for Structuring Flowgraphs',
106: .I JACM
107: .B 24
108: (1977) 376-391
109: .SH BUGS
110: Struct knows Fortran 66 syntax, but not full Fortran 77.
111: .br
112: If an input Fortran program contains identifiers which
113: are reserved words in Ratfor, the structured
114: version of the program
115: will not be a valid Ratfor program.
116: .br
117: The labels generated cannot go above 32767.
118: .br
119: If you get a goto without a target, try
120: .BR -e .
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.