struct コマンド
目的
FORTRAN プログラムを RATFOR プログラムに変換します。
構文
構造 [ -s ] [ I ] [ -a 値 ] [ -b ] [ N ] [ T数値 ] [ 「-c」数値 ] [ -e (E)数値 ] [ ファイル ]
説明
struct コマンドは、 File (デフォルトは標準入力) で指定された FORTRAN プログラムを RATFOR プログラムに変換します。 RATFOR 制御構造は、可能な場合には必ず、オリジナルの FORTRAN を置き換えます。 ステートメント番号は、必要な場合だけ表示されます。 ホレリス・ストリングを引用符付きストリングに変更し、関係演算子を記号に変更するなど、外観上の変更が加えられました (例えば、 .GT. )。 >) に追加します。 出力は適切に字下げされます。
struct コマンドは、FORTRAN 66 の構文を理解しますが、FORTRAN 77 は完全には理解しません。 入力の FORTRAN プログラムに RATFOR の予約語である ID が含まれている場合には、そのプログラムを構造化しても、有効な RATFOR プログラムにはなりません。 生成されるラベルが 32767 個を超えることはできません。 ターゲットを指定しないで goto ステートメントを取得する場合は、 -e フラグを使用してみてください。
フラグ
| 項目 | 説明 |
|---|---|
| -a | else-if ステートメントのシーケンスを、以下のような非 RATFOR スイッチに変換します。case 述部が順番に検査されます。 1 つだけの case に適したコードが実行されます。 switch ステートメントのこの一般化形式は、RATFOR にはありません。 |
| -b | マルチレベルの break ステートメントの代わりに、goto ステートメントを生成します。 |
| 「-c」 数値 | 非ゼロの整数 Number によって、出力プログラムの逐次的ラベルを増大します。 デフォルトは 1 です。 「-c」 と 数値。 の間にスペースを挿入しないでください。 |
| -e (E) 数値 | Number が 0 (デフォルト) のときに、ループの反復に導くことができる場合のみ、ループ内にコードを入れます。 -e と Number の間にスペースを入れないでください。 |
| -i | 演算された goto ステートメントをスイッチに変換しません。 (RATFOR はスイッチを演算された goto ステートメントに戻しません。) |
| -n | マルチレベルの next ステートメントの代わりに、goto ステートメントを生成します。 |
| -s | 標準フォーマットで入力を受け入れます。 コメントは 1 桁目の C、 「C」、または * によって指定され、継続行は 6 桁目のゼロ以外の非ブランク文字によって指定されます。 入力は、 f77 コマンドで受け入れられる形式になります。 |
| T 数値 | 非ゼロの整数 Number を、出力プログラムで最低の値のラベルにします。 デフォルトは 10 です。 -t と Number の間にスペースを入れないでください。 |
Number がゼロでなければ、小さなコード・セグメントがグループに入るのを許可します。 ゼロであれば、ループ・セグメントを含むいくつかの場所への出口があり、そのループからしかセグメントに到達できません。 この場合、小さいというのは、コード・セグメント内のステートメントの数に近いが、等しくはない程度を意味します。 Number の値には、10 未満を使用することをお勧めします。
例
変換するには、test.fFORTRAN プログラムをnewtest.ratforRATFOR プログラムの場合は、次のように入力します。
struct -s -i -n -t2 test.f > newtest.ratforファイル
| 項目 | 説明 |
|---|---|
| /tmp/struct* | struct コマンドの処理中に使用される一時ファイル。 |
| /usr/lib/struct/structure | struct コマンドの処理を取り扱うファイル。 |
| /usr/lib/struct/beautify | struct コマンドの処理を取り扱うファイル。 |
| /usr/ucb/struct | struct コマンドが入っています。 |