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 スイッチに変換します。
switch
{   case pred1: code
    case pred2: code
    case pred3: code
    default: code
         }

case 述部が順番に検査されます。 1 つだけの case に適したコードが実行されます。 switch ステートメントのこの一般化形式は、RATFOR にはありません。

-b マルチレベルの break ステートメントの代わりに、goto ステートメントを生成します。
「-c」 数値 非ゼロの整数 Number によって、出力プログラムの逐次的ラベルを増大します。 デフォルトは 1 です。 「-c」数値。 の間にスペースを挿入しないでください。
-e (E) 数値 Number が 0 (デフォルト) のときに、ループの反復に導くことができる場合のみ、ループ内にコードを入れます。 -eNumber の間にスペースを入れないでください。
-i 演算された goto ステートメントをスイッチに変換しません。 (RATFOR はスイッチを演算された goto ステートメントに戻しません。)
-n マルチレベルの next ステートメントの代わりに、goto ステートメントを生成します。
-s 標準フォーマットで入力を受け入れます。 コメントは 1 桁目の C「C」、または * によって指定され、継続行は 6 桁目のゼロ以外の非ブランク文字によって指定されます。 入力は、 f77 コマンドで受け入れられる形式になります。
T 数値 非ゼロの整数 Number を、出力プログラムで最低の値のラベルにします。 デフォルトは 10 です。 -tNumber の間にスペースを入れないでください。

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 コマンドが入っています。