2   FORTRAN

 

    2.1  FORTRAN文法

     2.1.1 FORTRANプログラミング 22

     2.1.2 定数24

     2.1.3 変数、添字24

     2.1.4 式25

     2.1.5 代入文25

     2.1.6 制御文26

     2.1.7 関数とサブルーチン27

     2.1.8 入出力文とFORMAT文31

     2.1.9 宣言文とDATA文32

 

2   FORTRAN

 

 FORTRAN(FORmula TRANslation)は科学技術計算を目的として作成

されたプログラミング言語で、1956年IBM社で開発され、現在では世界中

で最も広く使用されている言語といえます。日本では1967年5月1日付で

JIS FORTRAN3000(ミニコン用)、同5000(中型機用)、

同7000(大型機用)を制定しています。その後改善してJIS FORTR

AN−1982(基本水準および上位水準)ができました。

 プログラミング言語には他に、FORTRANと同じく計算を目的としたAL

GOL(ALGOrithmic Language)やデータ処理を目的としたCOBOL(COmmon

Business Oriented Language)、これら両方の機能を備えたPL/TやC言語な

どがあります。

 コンピュータを利用して計算を行なうとき、ユーザーである我々は当然これら

の言語を少なくとも一つ学ばなければなりませんが、コンピュータはこれらの言

語で書かれたプログラムを直接理解する訳ではありません。ユーザーは、まずソ

ースプログラム(source program)をテキストファイル(text file)として作

成し、これをコンパイラ(compiler)と呼ばれる翻訳プログラムを介して機械語

(machine language)のプログラム(オブジェクト・プログラム、object progr

am)に書き直します。さらにこのオブジェクト・プログラムにリンカ(linker)

を介して、 必要なリロケータブル・オブジェクト・ファイル(relocatable)を

結合して実行可能なプログラム・ファイルを作成します。これを実行させること

で初めてユーザーの目的が達成されることになります。

 FORTRANにおいてもソースプログラムの入力、コンパイル及びリンク操

作による実行形式プログラムの作成、実行、実行結果の出力という一連の手続き

が必要となり、これらの手続きはOSを介してユーザー自身が行なうことになり

ます。つまりはOSについてもある程度の知識が必要となるわけです。

 ここでは、ハードウェアに16ビットパーソナルコンピュータを、OSにはM

S−DOSを使用することとして、ソースプログラムの作成方法、MS−FOR

TRAN(Microsoft Corp.)、Pro FORTRAN−77(Prospero Soft

ware Ltd)の操作方法について説明することとします。

 

 

2.1  FORTRAN文法

 

2.1.1 FORTRANプログラミング

 

 FORTRANプログラムは一連の文(statement)からなる 行(line)の集

まりで構成されます。記述には所定のコーディング用紙を使用し、使用文字は英

数字(A〜Z,0〜9)と特殊文字(空白、=、+、-、*、/、(、)、,、.、&、\または

$)で、いずれも半角文字です。空白(blank)は "!"と記述します。コーディン

グ用紙の1行は1から80の番号が付された升目で、これをカラム(column, co

l.)と呼びます。FORTRANとして意味を持つのは1〜72カラムで、これ

が1行になります。 1〜5カラムは必要な場合に文番号(statement label)を

書く場所で、6カラムは通常は空白(後述)、文は7〜72カラム内に記述しま

す。73〜80カラムは、その行の標識や確認のために自由に使用することがで

きます。

 文には、それを他の文から参照できるように1〜99999の文番号を付ける

ことができます。番号の順は不同ですが、同番号の重複は許されません。

 1つの文が数行にわたるとき第1行目を開始行(initial line)と呼び続く行

を継続行(continuation line)と呼びます。 継続行であることを表わすために

は6カラムに "0" 以外の文字を書きます。 FORTRANでは7〜72カラム

以外にある "!" を "0" として扱っているためです。逆にいえば、7〜72カラ

ムのプログラム中では適当に空白を入れて、見やすくできることになります。継

続行の個数には、基本水準9行、上位水準19行までという制限があります。

 1カラムに "C"と書くことでその行を注釈行(comment line)として使用する

ことができます(上位水準では "*"も可)。残りの2カラム以降は注釈やメモな

ど何を記述してもかまいません。この場合には使用文字に制限はありません。

 1行には1つの文あるいは1つの式だけを記述し改行""し、プログラムの終

わりは、"!!!!!!!STOP"、"!!!!!!!END"とします。

 END行(END line)は処理系にプログラム単位(program unit)の終わりを

指示するためのもので、 7〜72カラムの間に "E"、"N"、"D" という文字がこ

の順序に書かれたものです。他のカラムはすべて空白でなければなりません。プ

ログラム単位とは、主プログラム(main program)または副プログラム(subpro

gram)を意味します。

 文には実行文(executable statement)と非実行文(non-executable stateme

nt)があります。実行文は動作を指定するもので、非実行文はデータの特性・並

び方、プログラム単位の分類などの情報を記述するものです。実行文には代入文

(assignment statement)、制御文(control statement)、入出力文(input/o

utput statement)の3種類、非実行文には、宣言文(specification statemen

t)、DATA文(data initialization statement)、FORMAT文(FORMAT

statement)、文関数定義文(statement function defining statement)、副プ

ログラム文(subprogram statement)の5種類があります。

 プログラム中でデータや手続きなどを識別する(identify)ためには英字名

(symbolic name)を用います。英字名は6文字以内の英数字で、最初の文字は英

字でなければなりません。英字名をデータとして使用する場合には、「暗黙の型

宣言」に注意します。最初の文字が "I,J,K,L,M,N (I〜N)" で始まる英字名は整

数型、それ以外は実数型として扱います。

 

 

2.1.2 定数

 

 FORTRANで扱う定数は、以下の6種類です。a〜dを算術定数と呼び、

符号(+ 及び -)を付けることができます。

 

a.整定数(integer constant):10進整数。2147483647(=231-1)以内。

 

b.実定数(real c-):基本実定数(basic real c-)と基本実定数のあとに指

数部(exponent part)を付けたものの2種類がある。基本実定数は1個の小数

点を含む10進数。 指数部は "E" のあとに2桁以内の整数(符号も可)で表わ

す。

 

c.倍精度実定数(double precision c-):基本実定数のあとに倍精度指数部

を付けたもの。 倍精度指数部は "D" のあとに2桁以内の整数(符号も可)で表

わす。

 

d.複素定数(complex c-):実数部(real part)及び虚数部(imaginary p-)

をコンマで区切り、全体をかっこでくっくたもの。実数部、虚数部はともに実定

数。

 

e.論理定数(logical c-):".TRUE."は真を、".FALSE."は偽を表わす。

 

f.文字定数(hollerith c-):255文字以内の文字列を引用符(')でくくるか、

"nH文字列"(nは文字列の個数)で表わす。

 

 

2.1.3 変数、添字

 

 変数及び配列変数は、英字名によって識別(半角6文字までを識別、それ以上

の文字は無視)され、プログラム中でデータを定義したり引用したりすることが

できます。 これを変数名(variable name)、配列名(array name)と呼びます。

変数名および配列名には、整数型、実数型、倍精度実数型、複素数型、論理型、

文字型の区別があり、その変数名や配列名で表わすデータの型と一致していなけ

ればなりません。そこで通常は「暗黙の型宣言」に従うこととしますが、「暗黙

の型宣言」に従わない場合には必要に応じてプログラムの先頭で型宣言文を用い

て宣言しておかなければなりません。

 配列を構成しているデータの一つを配列要素(array element)と呼び、 配列

名の後に添字(subscript)をつけて表わします。 添字はコンマで区切られた1

〜3の添字式をかっこ("("、")")でくくったもので、添字式は整定数及び整変

数、あるいはそれらと算術演算子の "+"、"-"、"*" を組み合わせたものです。

例えば、 A(I)、L(2*I+1)、ARRAY(I,J)、SUM(I+5,2*J,3*K-1) と表わします。配

列変数を用いる場合にはプログラムの先頭で配列宣言子を用いて配列の大きさを

宣言しておかなければなりません。添字式のとる値は1から宣言した大きさまで

となります。

 

 

 

2.1.4 式

 

 式には、算術式(arithmetic expression)、関係式(relational expression

)、論理式(logical expression)の3種類があります。

 算術式は算術演算子(arithmetic operator)と 定数、変数、配列要素及び関

数などの算術要素を用いて構成します。このとき構成要素の型は一致していなけ

ればなりません。例外として、関数の引数、添字、べき指数は型に影響されませ

ん。また、、算術式は複数組のかっこでくくることができ、内側のかっこから順

に演算が行なわれます。かっこがないときの演算順序は、関数の計算,べき乗

(**),負の単項演算(-),乗除算(*及び/),加減算(+及び-)の順です。

 関係式は2つの算術式を関係演算子でつないだもので、その関係式が成立する

かしないかで、それぞれ真か偽の値をもつことになります。関係演算子には次の

6種類があります。

 .GT. >(greater than)

 .GE. ≧(greater than or equal to)

 .NE. ≠(not equal to)

 .EQ. =(equal to)

 .LE. ≦(less than or equal to)

 .LT. <(less than)

"式1.GT.式2"としたとき、この関係式の値は、式1>式2ならば真、そうでな

ければ偽となります。関係式の値が真のときには引き続き次の文を実行しますが、

偽のときには続く文は無視して次の行を実行することになります。

 論理式は2つの論理要素を論理演算子でつないだもので、関係式と同様につね

に真か偽の値をもちます。論理要素とは、論理型の定数、変数、配列要素及び関

数の引用などのことで、関係式や論理式も論理要素です。論理演算子には次の3

種類があります。

 .NOT. 否定(not)

 .AND. 論理積(and)

 .OR.  論理和(or)

".NOT.式1"は式1が真ならば偽、偽ならば真の値をもちます。"式1.AND.式2"

は式1、式2がともに真のときのみ真、"式1.OR.式2"はその反対で式1、式2

がともに偽のときのみ偽となります。

 

 

2.1.5 代入文

 

 文の中で、「変数名または配列要素名」=「算術式」で表わされるものを算術

代入文(arithmetic assignment statement)と呼びます。例えば、"I=K-1"、"B

=X*Y/Z"、"A(I)=T(I)+SIN(C)" などです。算術代入文は数値演算を定義する文で

す。算術代入文においては、等号(=)は、 右辺の算術式を計算し、その結果を

左辺の変数名または配列要素名の値とすることを意味します。左辺と右辺の型は

同じであることが基本(混合演算の禁止)ですが、複素数型以外は一般に左辺と

右辺の型が異なる場合もこれを許しています。この場合、右辺の数値演算の結果

は左辺の型に変換されることになります。 例えば、"I=3.14" としたときには

"I" の値はは整数 "3" ということになります。

 「論理型の変数名または配列要素名」=「論理式」で表わされるものを論理代

入文(logical assignment statement)と呼びます。右辺の演算結果を左辺の値

とし、このとき値は真(.TRUE.)か偽(.FALSE.)のいずれかとなります。

 

 

2.1.6 制御文

 

a.GO TO 文

 

単純 GO TO 文....."GO TO n"

 nは文番号。文番号nの付された文に実行を移す。

 

計算型 GO TO 文....."GO TO(n1,n2,・・・,nm),i "

 n1,n2,・・・,nmは文番号。iは整変数。1≦i≦m。

 文番号niの付された文に実行を移す。

 

割当型 GO TO 文....."GO TO k,(n1,n2,・・・,nm)"

 kは整変数。1≦k≦m。n1,n2,・・・,nmは文番号。

 これ以前に ASSIGN 文が実行されている。文番号nkの付された文に実行を移す。

 

b.ASSIGN 文....."ASSIGN n TO k"

 ASSING 文は割当型 GO TO 文で実行を移す文の番号を割り当てる代入文。

 kは割当型 GO TO 文で用いる整変数。nは割当型 GO TO 文で指定するn1,n

2,・・・,nmのいずれかの文番号。

 

c.IF 文

 

算術 IF 文....."IF(式) n1,n2,n3"

 式は複素数型を除く算術式。n1,n2,n3は文番号。式<0ならばn1へ、式=

0ならばn2へ、式>0ならばn3へ実行を移す。

 

論理 IF 文....."IF(論理式) 実行文"

 実行文は DO 文および論理 IF 文を除く。論理式が真ならば続く文を実行し、

偽ならば続く文を無視して次の行に実行を移す。

"IF(A.LT.0.0) GO TO 10","IF(B.GT.0.0.AND.B.LT.10.0) I=I+1"

 

d.DO 文....."DO n i=m1,m2[,m3]"

nは文番号でnの付された文を端末文(terminal statement)と呼ぶ。iは制御

変数(control variable)と呼び、整変数。m1、m2、m3は整変数か整定数(符

号無し)で、それぞれ初期値パラメータ(initial parameter)、終値パラメータ

(terminal p-)、増分パラメータ(incrementation p-)と呼ばれる。

 DO 文から端末文までをDOループと呼び、iの値はm1から始まりm3ずつ増加

し、m2をこえない最大数まで実行を繰り返す。iの値がm2をこえたときDOル

ープは満足されたといい、端末文の次の行に実行が移る。m3=1のときには省略

できる。

 端末文は DO 文、GO TO 文、算術 IF 文、RETURN 文、STOP 文、PAUSE 文及び

以上のいずれかを含む論理 IF 文であってはならないという制限があるため、通

常は端末文として CONTINUE 文を用いることが多い。

 DOループは他のDOループを含んでもよいが、入れ子(nest)でなければな

らない。DOループから外に出ることはできるが、外からDOループにはいるこ

とはできない。例外として完全入れ子のいちばん内側のDOループから完全入れ

子の外に飛び出しても、もとのDOループに戻ることは許される。このとき完全

入れ子の外側で実行される可能性のある実行文をDOループの拡張範囲と呼ぶ。

 上位水準では制御変数は実数型も許される。

 

e.CONTINUE 文

 通常 DO 文の端末文として使用され、プログラム実行時に何もしない文。

 

f.PAUSE 文....."PAUSE [n]"

 nは符号無しの8進整数(5桁以内)。nを出力してプログラムの実行を一時

停止する。

 

g.STOP 文....."STOP [n]"

 nは符号無しの8進整数(5桁以内)。nを出力してプログラムの実行を終了

する。

 

 

2.1.7 関数とサブルーチン

 

 主プログラム(main program)に対して関数とサブルーチンのことを特に副プ

ログラムまたは手続き(procedure)副プログラムと呼ぶ。副プログラムには組込

み関数(intrinsic function)・文関数(statement function)・外部関数(ex

ternal function)・外部サブルーチン(external subroutine)の4種類がある。

組込み関数と文関数は内部手続き、外部関数と外部サブルーチンは外部手続きで

ある。

 外部サブルーチンには、関数副プログラムとサブルーチン副プログラムがある。

 副プログラムには手続き副プログラムのほかに初期値設定副プログラムがある。

(2.1.9 BLOCK DATA文 参照)

 副プログラムだけの実行はできないが、コンパイル及びデバッグはできる。

 

a.組込み関数



関数名
 



 


内  容
 

引 数

   使   用   例



  引 用 形

  値

ABS
IABS
DABS




絶対値

 


1
 





IABS(-5)
 


5
 

INT
AINT
DINT
IDINT






切捨て

 



1
 





INT(3.14)
AINT(-3.14)

 

3
-3.0

 

AMOD
MOD



剰余
 

2
 




MOD(5,3)


2

AMAX0
AMAX1
MAX0
MAX1
DMAX1






最大値



 



+2
 







AMAX0(1,2,3,4,5)
MAX0(1,2,3,4,5)

 


5.0
5

 

AMIN0
AMIN1
MIN0
MIN1
DMIN1






最小値



 



+2
 









MIN1(1,2,3,4,5)
 




1
 

FLOAT
*REAL
*SNGL




実数化

 

1

 




FLOAT(5)

 

5.0

 

IFIX
*INT
*IDINT
ICHAR





整数化


 

1


 





IFIX(3.14)


 

3


 

CHAR


文字化

1


 

 

SIGN
ISIGN
DSIGN




符号の
付替え
 


2
 





ISIGN(5,-1)
 


-5
 

DIM
IDIM



超過分
 

2
 



DIM(3.1,5.0)
IDIM(5,3)

0.0
2

SNGL


単精度化

1


 

 

REAL


実数部

1


REAL((3.0,5.0))

3.0

AIMAG


虚数部

1


AIMAG((3.0,5.0))

5.0

DBLE


倍精度化

1


 

 

CMPLX


複素数化

2


CMPLX(3.0,5.0)

(3.0,5.0)

CONJG
 


 

共役複素数
 

1
 


 

CONJG((3.0,5.0))
 

(3.0,-5.0)
 


























































 

注)AMOD,MOD,SIGN,ISIGN,DSIGN は

その関数の性質から引数の最初の値がゼロのときは定義されない。

 FORTRANの処理系に組み込まれている関数で、引用には関数名に必要な

引数をつけて算術式に書けばよい。このとき引数にはそれぞれ個数、順序、型が

定められていることに注意する。引数として算術式を用いることができる。

 

b.文関数

 1つの文で定義する関数で、この文を文関数定義文(statement function def

ining statement)と呼ぶ。文関数定義文はプログラムの先頭におく。宣言文があ

る場合にはその後におく。文関数の名前は英字名。

 文関数の名前(仮引数1,2,3,・・・)=算術式or論理式

 例)SUM(X,Y)=X+Y

   LOGIC(A,B)=A.OR.B

 

c.外部関数

 基本外部関数として処理系に準備されている関数。引用にあたっては組込み関

数と同じに扱うことができる。組込み関数との相違は、組込み関数がソースプロ

グラム中で引用されるたびに、オブジェクトプログラムの対応する位置へ組み込

まれるのに対して、外部関数は関数副プログラムとかわりなくメインプログラム

の外におかれ、独立したプログラムとして扱われる。



関数名
 



 


 内 容
 

引 数

























 


関数名
 



 


 内 容
 

引 数

























 





EXP
DEXP

CEXP






指数

 


1

 





TANH
DTANH



双曲線正接
 

1
 



SQRT

DSQRT
CSQRT







平方根
 



1
 





ALOG
DLOG

CLOG






自然対数

 


1

 





ATAN

DATAN




逆正接

 

1

 




ALOG10

CLOG10




常用対数

 

1

 




ATAN2

DATAN2
 




 

逆正接


 

2


 




 

SIN

DSIN
CSIN







正弦
 



1
 





DMOD


剰余

2


COS

DCOS
CCOS







余弦
 



1
 





CABS
 


 

絶対値
 

1
 


 











 

TAN
DTAN



正接
 

1
 



SINH
DSINH



双曲線正弦
 

1
 



COSH
DCOSH
 



 

双曲線余弦

 

1

 



 

注)正弦・余弦関数の引数の単位はラジアン。             

                  

注)逆正接関数の結果は主値。    

 

 

d.関数副プログラム

 FUNCTION文で始まりEND行で終る1つの独立した副プログラムであ

り、主プログラムや他の副プログラムで引用して使用する1価関数である。

  [型宣言] FUNCTION 英字名(仮引数1,2,3,・・・)

 暗黙の型宣言に従わないときには、最初に宣言して用いる。

 

e.サブルーチン副プログラム

 SUBROUTIN文で始まりEND行で終る1つの独立した副プログラムで、

FUNCTION文が1価関数であるのに対し、SUBROUTIN文は多価関

数として使用されるだけでなく、入出力などをまとめて処理するのに使用できる。

  SUBROUTIN 英字名(仮引数1,2,3,・・・)

 引用にはCALL文を用いる。

  CALL 英字名(仮引数1,2,3,・・・)

 

f.RETURN文

 SUBROUTIN文またはFUNCTION文で始まる副プログラムから、

これらを引用した主プログラムあるいは副プログラムに戻るためのもので、副プ

ログラム中にいくつあってもよい。

 

g.PROGRAM文

 主プログラムであることを表わし、通常は省略される。

  PROGRAM 英字名

 

 

2.1.8 入出力文とFORMAT文

 

 入出力文(input/output statement)は、CPUと外部入出力装置の間でデー

タの転送を行ない、READ文、WRITE文のほかに外部ファイルを扱うため

の補助入出力文が準備されている。データの入出力にあたっては、なにを(デー

タ)をどのように(書式)入出力するかを指定する必要があり、データは入出力

並びで指定し、書式はFORMAT文で指定する。

 

a.READ文とWRITE文

@書式付きREAD文およびWRITE文

  READ(装置番号,文番号) 入力並び

  WRITE( 〃 , 〃 ) 出力並び

 装置番号は整定数(整変数)で、通常5に標準入力装置、6に標準出力装置が

割り付けられている。文番号は、FORMAT文の番号または配列名。文番号に

アスタリスク(*)を代用してFORMAT文を省略することができるが、 この

ときには1つの入力データは10桁程度(2147483647=231-1以下)、出力は小数

点以下7桁の実数あるいは小数点以下6桁の指数表示となる。

A書式なしREAD文およびWRITE文

  READ(装置番号) 入力並び

  WRITE( 〃 ) 出力並び

 機械語データを取り扱う。

 

b.入出力並び(input/output list)

 入出力並びとは、CPUと入出力装置の間でデータを割り当てるための変数名

(配列要素名、配列名も可)を並べたものである。

 変数名(配列要素名、配列名)をコンマで区切って並べたものを単純並び(

simple list)と呼び単純並びをかっこでくくったものも用いることができる。

 例)   READ(5,100) A,B

DO形並びが使用できる。

 例)   READ(5,100) (A(I,J),J=1,K),I=1,L

    100 FORMAT(8F10.0)

      WRITE(6,200) B,(I,(J,C(I,J),J=1,5),I=1,K,2)

    200 FORMAT(1H ,'B=',F10.3/1H ,6('C(',I3,','I3,')=',F10.5,1X))

 

c.FORMAT文

 書式付きREAD文およびWRITE文では入出力の書式をFORMAT文で

指定しなければならない。FORMAT文は欄記述子と欄区切りで構成される。

プリンタ及びコンソールに出力する場合には先頭の欄記述子は半角1文字(!、0、

1、+)で行送りの制御を指定する。

  文番号獅eORMAT(欄記述子,欄記述子,欄記述子,・・・)

 欄記述子には以下の4種類がある。

  数値欄記述子

   nIw(整数),nFw.d(実数),nEw.d(指数表示実数),

   nGw.d(有効数字実数),nDw.d(倍精度実数)

  文字欄記述子 nAw(文字),wH,’文字’

  空白欄記述子 wX

  論理欄記述子 nLw

 nはデータの個数、wはデータの長さ(カラムの個数)、dは小数点以下の桁

数を表わす。データ入力にあたっては指定したwの範囲でデータが優先する。つ

まりREAD文で引用するFORMAT文中では、データの長さだけに注意すれ

ばよいことになる。

 例)   READ(5,100) I,J,A,B,C,D

    100 FORMAT(2I5,3F10.0,D16.0)

      WRITE(6,200)

    200 FORMAT(1H1,'OUTPUT')

      WRITE(6,300) I,J,A,B,C,D

    300 FORMAT(1H ,2(5X,I5),3F10.3,4X,D16.9)

 欄区切りは通常コンマ(,)を使用する。斜線(/)は1行あたりのデータの終

了を表わす。

 例)   READ(5,100) I,J,A,B,C,D

    100 FORMAT(2I5/3F10.0/D16.0)

      WRITE(6,200) I,J,A,B,C,D

    200 FORMAT(1H1,'OUTPUT'/1H ,2I5/' ',3F10.3//D16.9)

 行送りはFORMAT文の先頭(あるいは斜線の直後)に指定する。出力装置

(通常はプリンタ)によっては使用できないものもある。

  1H! ('!'、/)  印刷前に1行改行

  1H0 ('0'、//)   〃  2 〃

  1H1 ('1')     〃  改頁

  1H+ ('+')     〃  改行無し(同じ行に印字)

 

d.補助入出力文

 ENDFILE文:指定した装置にファイル終了記録(EOF)を書く。ただ

          しFORTRANでEOFは読めない。

  ENDFILE 出力装置番号

 REWIND文:指定した装置を始点に戻す。

  REWIND 装置番号

 BACKSPACE文:指定した装置を1記録分戻す。

  BACKSPACE 装置番号

 

 

2.1.9 宣言文とDATA文

 

 FORTRANはプログラム中で使用する変数の型や、配列などをあらかじめ

宣言しておかなければならない。暗黙の型宣言などのFORTRANの規定値に

従わない場合に必要となる。宣言文はプログラムの先頭に置く。

 

a.DIMENSION文

 配列は添字付きの変数名で表わす。DIMENSION文は配列名とその大き

さを宣言する。これにより配列のための記憶場所が確保される。

 配列は型宣言文およびCOMMON文においても宣言できる。

 例1)DIMENSION A(10),B(11,11),C(10,100,10)

   基本水準では3次元配列まで、配列の寸法(大きさ)は1以上。

 例2)DIMENSION A(0:9),B(-5:5,-5:5),C(2:11,100,-1:8)

   上位水準では7次元配列まで可、添字式として寸法宣言子に ":"が使える。

 

b.型宣言文

 変数名、配列名および関数名について暗黙の型宣言に従わない場合に型と大き

さ(倍精度)を宣言し、同時に配列宣言もできる。

 整数型宣言 :INTEGER、INTEGER*4

 実数型   :REAL、REAL*8

 倍精度実数型:DOUBLE PRECISION

 複素数型  :COMPLEX

 論理型   :LOGICAL

 文字型   :CHARACTER

        例1)CHARACTER A*2,B*4,C*8

        例2)CHARACTER*4 A,B,C

 一括宣言  :IMPLICIT

        例1)IMPLICIT REAL*8(A-H,O-Z)

        例2)IMPLICIT INTEGER(A-H),REAL(I,J)

 

c.EQUIVALENCE文

 かっこでくくられた変数や配列要素の集まりを、記憶装置の同一の場所に割り

当てる(記憶場所を共有する)ために用いる。

 

d.COMMON文

 複数のプログラム単位間で使用する変数や配列の記憶場所を共有するために用

いる。

 

e.EXTERNAL文

 外部手続きであることを宣言する。外部手続き名を他の外部手続きの引数とし

て用いる(基本外部関数名をサブルーチン副プログラムの引数として用いる)場

合や、FORTRANで準備されている外部手続き(基本外部関数)を使用しな

で別に準備されたものを使用する場合に宣言する。

 

f.DATA文

 変数、配列要素あるいは配列に初期値として定数を与える。DATA文は宣言

文の後、実行文の前に置く。

 例)DATA I,J/1,2/A,CHA/10.0,5HCHARA/

 

g.BLOCK DATA文

 初期値設定副プログラム(specification subprogram or block data subprog

ram)は名前付き共通ブロックの各要素に初期値を与えるための1つの独立した副

プログラムで、BLOCK DATA文で始まりCOMMON文・DATA文

(順不同)、END行で構成される。

 例)BLOCK DATA

   COMMON

   DATA

   END

 必要に応じて、EQUIVALENCE,DIMENSION,型宣言文が使

用できる。