一般コンパイラ指示文:共通ブロックのいくつかの特性を変更します。
形式
cDEC$ PSECT /common-name/ a [, a] ...
c
次のいずれか:C (または c),!,* (「一般コンパイラ指示文の構文規則」を参照)
common-name
共通ブロックの名前。斜線 (/) は必須です。
a
以下のいずれかのキーワード。
共通ブロックの位置合わせを指定します。
val は,OpenVMS システムでは 0 ~ 16,Windows システムでは 0 ~ 6,Tru64 UNIX および Linux システムでは 0 ~ 4 の定数です。指定された数値は 2 のべき乗として解釈されます。式の値は,位置合わせのバイト数です。
keyword は以下のいずれかです。
キーワード | 等価な val |
---|---|
BYTE | 0 |
WORD | 1 |
LONG | 2 |
QUAD | 3 |
OCTA | 4 |
PAGE 1 | Alpha:16 ia32:12 ia64:13 |
1 Alpha での範囲は 0 ~ 16,ia32 と ia64 は 0 ~ 13 |
大域有効範囲を指定します。
局所有効範囲を指定します。このキーワードは,GBL の対称となるもので,GBL と一緒に指定することはできません。
他の Compaq コンパイラが生成したコードと共通プロック・プログラム・セクション (psect) を共有する時に互換性を保証するために,コンパイラが共通ブロックの大きさを充填するかどうかを制御します。
Fortran 共通ブロックで生成されたプログラム・セクションがC 構造体で構成されるプログラム・セクションを上書きする場合,リンカーがエラー・メッセージを表示します。これは,プログラム・セクションの大きさが矛盾するためです。C 構造体は充填されますが,Fortran 共通ブロックは充填されません。
MULTILANGUAGE を指定して,Compaq Fortran が複数のイメージ間で共有する Compaq C プログラム・セクションと動作するように一貫性の取れたプログラム・セクションの大きさを割り当てるようにさせることを保証します。1 イメージのみが共有するプログラム・セクションは問題ありません。
モジュール内の全ての共通ブロックに対して MULTILANGUAGE 指定するためにコンパイラ・オプションを使用することができます。
共通ブロックの内容が 1 つ以上のプロセスで共有されるかどうかを決定します。
共通ブロックの内容をプログラムの実行中に修正することができるかどうかを決定します。
規則と振る舞い
大域有効範囲または局所有効範囲が 1 つ以上のクラスタを持つイメージに対して有効です。異なったクラスタの異なったモジュールからの同じ名前をもつプログラム・セクションは,もし局所有効範囲が有効であれば,別のクラスタに置かれます。それらは,大域有効範囲が有効であれば,同じクラスタに置かれます。
1 つのプログラム単位が,共通ブロックの 1 つまたは複数の特性を変更した場合,その共通ブロックを引用する他のすべてのプログラム単位も,同じようにこれらの特性を変更しなくてはなりません。
PSECT 指示文で変更しなければ,基本特性が適用されます。次表に,共通ブロックの基本特性と,それらを PSECT でどのように変更できるかを示します。
基本特性 | PSECT による変更 |
---|---|
再配置可能 | なし |
重複 | なし |
大域有効範囲 | 大域または局所有効範囲 |
実行不可能 | なし |
多言語でない | 多言語または多言語でない |
書き込み可能 | 書き込み可能または書き込み不可能 |
読み取り可能 | なし |
保護なし | なし |
オクタワードの位置合わせ 1 (4) | OpenVMS: 0 ~ 16 2
WNT と W9*:0 ~ 6 3 U*X:0 ~ 4 3 |
Alpha プロセッサー | |
共有不可能 | 共有可能または共有不可能 |
位置依存 | なし |
ia32 プロセッサー | |
共有可能 | 共有可能または共有不可能 |
位置独立 | なし |
1 16 の整数倍のアドレス。
2 またはキーワード BYTE から PAGE まで。 3 またはキーワード BYTE から OCTA まで。 |
関連情報