C 入力を求めるメッセージを標準出力に書き出す。 WRITE(6,*) 'a x^2 + b x + c = 0:' WRITE(6,*) 'a, b, c?' C READ文で値を読みこむ。 READ(5,*) A,B,C C 判別式(根号の中身)を計算する。 D = B**2 - 4. * A * C C ここからIF文が始まる。 C ここでは、'IF (...) THEN ... ELSE ... ENDIF'という構造になっている。 C (...)の中に書かれた条件を満たす場合には C THENとELSEの間に書かれた命令を実行し、 C そうでない場合にはELSEとENDIFの間に書かれた命令を実行する。 C ここでは、判別式Dの値が0以上の場合には実数解を、 C 負の場合には複素数解を求める。 IF (D.GE.0.) THEN C 判別式が0以上の場合には、 C 二次方程式の2つの実数解を計算する。 X1 = (- B - SQRT(D)) / (2. * A) X2 = (- B + SQRT(D)) / (2. * A) C 結果を標準出力に書き出す。 C このWRITE文も、 C 判別式Dが0以上で実数解が存在する場合だけ実行される。 WRITE(6,*) 'x = ',X1,',',X2 C IF文で指定した条件が真である場合には、 C ELSEより前に書かれた命令が実行される。 C 偽である場合には、 C ELSEより後ろに書かれた命令が実行される。 ELSE C 判別式が負の場合には、 C 二次方程式の2つの複素数解を計算する。 C XRが実部、XIが虚部である。 XR = - B / (2. * A) XI = SQRT(-D) / (2. * A) C 結果を標準出力に書き出す。 C このWRITE文も、 C 判別式Dが負で複素数解になる場合だけ実行される。 WRITE(6,*) 'x = ',XR,' +-',XI,' i' C ここでIF文が終了する。 ENDIF STOP END