FORTRANのひけつ 1
不定の概念FORTRAN 規格の基本的な概念に「不定」という概念があります.これは最も重 要な概念の一つでありながら,最もわかりにくい概念でもあります.岩波 FORTRAN 辞典には,
プログラム実行中に,変数,配列要素または部分列が想定できるような値 を持たない定義状態.とありますが,なかなかイメージが湧きません.簡単にいえば,「○○の時, 変数××は不定となる.」という文章は,コンパイラをつくる人に対しては, 「○○の時, 変数××が占めていた記憶領域をどのように使ってもよい.」と いうことになり,我々プログラマに対しては,「コンパイラをつくる人に,上 のように言ってしまったので,××がどうなるかわからない.」ということに なります.
「不定」とは逆に,規格によって値が保証されている状態を「確定」といいま す.規格上,プログラムの中で引用できる変数は「確定」された変数だけです. 変数が「不定」となる例に次のようなものがあります.
- 変数が未定義のとき
- サブルーチンの中の RETURN 文または END 文を実行したとき
- 異なる型の変数が結合しているとき
2番めの状況を回避するには SAVE 文を使います.SAVE 文は,サブルーチンの 実行が終ってもサブルーチン内の変数の値を保持するように指示する宣言文で す.コンパイラによっては(というより多くのコンパイラでは)サブルーチン の中で使われる局所変数を保存しますが,これは「方言」です. ただし, DATA 文で指定された変数は,.そ.の.値.が.書.き.換.え.ら.れ. な.い.限.り,RETURN 文または END 文を実行しても「不定」にはなりません.
因みに,DCL の xxpGET/xxpSET ルーチンが,掲示板の役目を果たせる のは,この DATA 文と SAVE 文のおかげです.
NUMAGUTI Atusi <a1n@gfdl.gov> Last Modified: Thu Aug 31 13:11:14 EDT 1995