一般コンパイラ指示文:データの位置合わせと,データの位置合わせに関する警告に影響を与えます。
形式
cDEC$ OPTIONS option [option]
c
次のいずれか:C (または c),!,* (「一般コンパイラ指示文の構文規則」を参照)
option
以下のいずれか (または両方)。
コンパイラが自然に位置合わせされていないデータに対して警告を発行するかどうかを制御します。基本設定では,位置合わせがずれているデータが発見されたときにコンパイラ・メッセージが発行されます (/WARN=ALIGNMENT)。
記録構造体中の欄と,共通ブロック中のデータ項目の位置合わせを制御します。欄とデータ項目は,(性能上の理由から) 自然な位置合わせを持たせることも,任意のバイト境界上に詰め込むこともできます。
p
以下のいずれかの書式を持つ指定子。
[class =] rule
(class = rule,...)
ALL
NONE
class
以下のいずれかのキーワード。
COMMONS - 共通ブロック
RECORDS - 記録
STRUCTURES - RECORDS の同義語
rule
以下のいずれかのキーワード。
記録中の欄,または共通ブロック中のデータ項目を任意のバイト境界に詰め込みます。
記録中の欄と共通ブロック中のデータ項目を,64 ビットまでの境界に自然に位置合わせします (Fortran 95/90 標準には矛盾します)。
このキーワードを指定すると,コンパイラは,INTEGER(8),REAL(8),およびすべての COMPLEX データを含む,共通ブロック中のあらゆるデータを自然に位置合わせします。
共通ブロック中のデータ項目を,32 ビットまでの境界に自然に位置合わせします (Fortran 95/90 標準と矛盾しません)。
このキーワードは共通ブロックにのみ適用されます。したがって,cDEC$ OPTIONS /ALIGN=COMMONS=STANDARD は指定できますが,cDEC$ OPTIONS /ALIGN=STANDARD と指定することはできません。
ALL
OPTIONS /ALIGN,OPTIONS /ALIGN=NATURAL,および OPTIONS /ALIGN=(RECORDS=NATURAL,COMMONS=NATURAL) を指定するのと同じです。
NONE
OPTIONS /NOALIGN,OPTIONS /ALIGN=PACKED,および OPTIONS /ALIGN=(RECORDS=PACKED,COMMONS=PACKED) を指定するのと同じです。
規則と振る舞い
OPTIONS (およびそれに付随する END OPTIONS) 指示文は,プログラム単位中の OPTIONS,SUBROUTINE,FUNCTION,および BLOCK DATA 文の後 (存在する場合),プログラム単位中の実行形式部の前に置かれなくてはなりません。
OPTIONS 指示文は,位置合わせを設定するコンパイラ・オプションと,位置合わせに関する警告を設定する /alignment コンパイラ・オプションよりも優先されます。
性能上の理由から,Compaq Fortran は局所データ項目を自然な境界に位置合わせします。しかし,EQUIVALENCE,COMMON,RECORD,および STRUCTURE データ宣言文は,強制的にデータの位置をずらすことができます。cDEC$ OPTIONS/WARN=NOALIGNMENT が指定されていると,位置がずれたデータが現れても警告は発行されません。
共通ブロック中のデータの位置合わせを行いたい場合,以下のいずれかを行います。
長さ 32 ビットまでのデータ項目に対しては,OPTIONS /ALIGN=COMMONS=STANDARD を指定します。
長さ 64 ビットまでのデータ項目に対しては,OPTIONS /ALIGN=COMMONS=NATURAL を指定します。
個々のデータ項目が自然な位置合わせになるように,共通ブロック中のソース・データ宣言を大きさの降順で配置します。
記録構造体中で位置合わせをせずにデータを詰め込みたい場合,以下のいずれかを行います。
OPTIONS /ALIGN=RECORDS=PACKED を指定します。
記録構造体中で,データが自然に位置合わせされるようにソース・データ宣言を配置します。
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
例
cDEC$ OPTIONS /ALIGN=PACKED ! グループ A を開始 declarations cDEC$ OPTIONS /ALIGN=RECO=NATU ! 入れ子のグループ B を開始 more declarations cDEC$ END OPTIONS ! グループ B 終了 still more declarations cDEC$ END OPTIONS ! グループ A 終了
グループ B に対する cDEC$ OPTIONS 指定は RECORDS にのみ適用されます。つまり,グループ B の中の共通ブロックは PACKED になります。これは,COMMONS が前の設定 (この例では グループ A の指定) を使用するからです。