OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

FORTRANのCOMMONについて

  • すぐに回答を!
  • 質問No.249972
  • 閲覧数950
  • ありがとう数5
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 7% (16/216)

 最近、FORTRANについての勉強を始めたものですが
いまいち「COMMON」の意味が理解出来ません。

例えば下のようなプログラムで(簡単に書きすぎてすいません)

  (Aグループ)
      COMMON X
        X=10

  (Bグループ)
      COMMON Y

   (UEXTERNAL)
      COMMON X. Y。

    WRITE X 

   X=10と出力されるのでしょうか?

分る範囲でいいのでお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル14

ベストアンサー率 30% (2593/8599)

ずいぶん昔(30年ほど前)にやっただけなので浦島太郎ですが。

COMMONは複数のプログラム間でデータを共有する手法ですね。
COMMON宣言は順序だけが意味を持ちます。

Aグループ X
Bグループ Y
Cグループ X Y
と定義したとするとCグループのYは「ままこ」で
XaとYbとXcは同じエリアを指します。

ご質問どおり、write Xは X=10ですが、これはXだからではなく、1個目の変数だからと言う事です。

もし、Bグループで、Y=5をやれば、write Xは 5となります。

余談ですが、COMMONエリアはハイ・メモリーから逆順に取られていた記憶があります。今でもそうなんでしょうかね。
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.2

無名共通領域の宣言ですから.多分お話のようになると思いますが. 無名共通領域の取り扱いで.変数名は土のように変えても良いのですが.領域の大きさを同じにする必要があったかと思います(機種依存性かも)。 つまり.暗黙の変数型を使用しているとして.A.B共に4バイト割り当てています。 しかし.最後のCOMMON文では8バイト割り当てています。すると.場合によっては変数の共食い(方言の可能性あり)でYの数値 ...続きを読む
無名共通領域の宣言ですから.多分お話のようになると思いますが.
無名共通領域の取り扱いで.変数名は土のように変えても良いのですが.領域の大きさを同じにする必要があったかと思います(機種依存性かも)。
つまり.暗黙の変数型を使用しているとして.A.B共に4バイト割り当てています。
しかし.最後のCOMMON文では8バイト割り当てています。すると.場合によっては変数の共食い(方言の可能性あり)でYの数値を操作した時にXの値も変化してしまうとかのおかしなことが発生する場合があります。


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ