%表題   らくらくDCL
%
%履歴
%\Drireki{
%         95/04/13 余田 成男
%        }
%

\begin{center}
\fbox{\parbox{14.75cm}{
\fbox{\parbox{14.5 cm}{
\vspace{1em}
\begin{center}
\parbox{13cm}{

{\bf FORTRANのひけつ 1}

\begin{center}
{\large \bf 不定の概念}
\end{center}

FORTRAN 規格の基本的な概念に「不定」という概念があります. これは最も重
要な概念の一つでありながら, 最もわかりにくい概念でもあります. 岩波 
FORTRAN 辞典には,
\begin{quote}
   プログラム実行中に, 変数, 配列要素または部分列が想定できるような値
   を持たない定義状態.
\end{quote}
とありますが, なかなかイメージが湧きません. 簡単にいえば, 「○○の時, 
変数××は不定となる.」という文章は, コンパイラをつくる人に対しては, 
「○○の時, 変数××が占めていた記憶領域をどのように使ってもよい.」と
いうことになり, 我々プログラマに対しては, 「コンパイラをつくる人に, 上
のように言ってしまったので, ××がどうなるかわからない.」ということに
なります.
\vspace{1em}  

「不定」とは逆に, 規格によって値が保証されている状態を「確定」といいま
す. 規格上, プログラムの中で引用できる変数は「確定」された変数だけです. 
変数が「不定」となる例に次のようなものがあります.
\begin{itemize}
   \item 変数が未定義のとき
   \item サブルーチンの中の RETURN 文または END 文を実行したとき
   \item 異なる型の変数が結合しているとき
\end{itemize}
\vspace{1em}

2番めの状況を回避するには SAVE 文を使います. SAVE 文は, サブルーチンの
実行が終ってもサブルーチン内の変数の値を保持するように指示する宣言文で
す. コンパイラによっては (というより多くのコンパイラでは)サブルーチン
の中で使われる局所変数を保存しますが, これは「方言」です.  ただし,
DATA 文で指定された変数は, \.そ\.の\.値\.が\.書\.き\.換\.え\.ら\.れ\.
な\.い\.限\.り, RETURN 文または END 文を実行しても「不定」にはなりません.
\vspace{1em}

因みに, DCL の {\tt xxpGET/xxpSET} ルーチンが, 掲示板の役目を果たせる
のは, この DATA 文と SAVE 文のおかげです.


}
\end{center}
\vspace{1em}
}}
}}
\end{center}
