(1) 並列計算など配列演算の強化
例
◇同じ形状の配列aとbの要素間の演算結果を要素とする配列:a+b,
a*b など
◇配列要素の関数値を要素とする配列:ABS(a), SQRT(a), INT(a)
など
◇マスク式:例 配列aの正の要素の位置で真,それ以外では偽の論
理配列
a>0
◇配列の部分配列: a(1:100)のとき,a(1:50), a(1:100:2) など
◇添字を要素とする整数配列bによるaの部分配列の指定
a(b)
◇豊富な配列関数:例 配列aの要素の和 = SUM(a),aの形状
= SHAPE(a) など
(2) 配列の動的割り当ての方法◇
例 INTEGER, ALLOCATABLE :: point(:,:)
.......
max_x=4096 ; max_y=2048
ALLOCATE( point(1:max_x,
1:max_y)
)
(3) 数値データの精度のパラメータ指定◇
これにより異なるシステム間の移植の際の不都合がなくなった。
例 INTEGER, PARAMETER :: p = SELECTED_REAL_KIND(12)
REAL(KIND=p)
:: x(1:1024), y(1:1024), z(1:1024)
12 は有効数
字桁数。システムの内部表現に応じて最適な
実数型が確保される。
(4) DOループの構文化◇
DO ... END DO の構文形式になり,終端文番号が必要でなくなった。
条件選択による分岐に,◇EXIT, ◇CYCLE, ◇WHILE などを新設
※ これにより,GOTO文を全く使用せずにプログラムが書けるようになっ
た。
また,文番号も必要としないが,新たにラベルを使用しなければなら
ない
場面が出てきた。◇
(5) 副プログラム関係
◇内部手続きの新設:これを使うと配列を返す関数なども定義可能
になる。
◇再帰呼び出し
◇キーワード引数と引数のオプション指定
◇引数の入出力特性指定
◇関数値を返すRESULT変数
(6) 構造型データの新設◇
(7) ポインタの新設◇
(8) モジュール副プログラム
◇変数宣言の共有化
◇ユーザ定義演算子
◇ユーザ定義代入文など
(9) その他
◇自由形式コーディングの導入
◇変数英字名の拡張(長さと下線の追加)
◇文字定数定義に" "型を追加
◇型宣言でデータの属性指定
◇SELECTE CASE 構文
◇DO型配列要素
◇文のラベル
◇WHERE文
◇「暗黙の型宣言」の無効化宣言
◇関係演算子の記号化
◇配列組込関数の補充
◇文字型組込関数の補充
参考ページ:http://www.media.kyoto-u.ac.jp/htomita/f90.html