nAG Fortran コンパイラ 7.2 マニュアル

 
ナビゲーション:前へ   上へ   次へ

8.1 Fortran 95プログラム構造

このセクションにはFortran 95プログラムの構造に関する簡単な参照ガイドが 含まれています。

数式については次のセクションに記述されています。

  • 構文要素の定義は‘::=’によって表されます。
  • イタリック体の名前(例えば‘expr’ )は構文要素名です。
  • ‘[ ]’中の項目は省略可能です。
  • 省略符号‘...’は直前の項目の省略可能な繰返しを意味します。
  • ‘{’と‘}’はグルーピングにのみ使用されます。
  • ‘|’で区分された項目はその中のどれか一つという選択を表します。
  • -stmt’で終わる文はセクション “Fortran 95ステートメント”に記述されています。

INCLUDE行

INCLUDE行は次の形式を取ります:

INCLUDE char-literal-constant

char-literal-constant はアクセス可能なパス名でなくてはならず、 kind-param を取ることはできません。相対パス名の場合には現行のワーキング ディレクトリ、及び-I オプションで指定されたすべてのディレク トリに対してサーチが行われます。 INCLUDE行は実効的に指定されたファイルの内容によって置き換えられます。

プログラム単位の構造

program-unit ::= main-program | module | procedure | block-data-subprogram

main-program ::= [ program-stmt ]
body
end-program-stmt

body ::= declaration-section
[ executable-section ]
[ contains-section ]

注:contains-section は内部手続き中では使用できません(内部手続き とは別の手続きのcontains-section 中に配置される手続きのことを言い ます)。

contains-section ::= contains-stmt
procedure...

module ::= module-stmt
[ declaration-section ]
[ contains-section ]
end-module-stmt

procedure ::= function-subprogram | subroutine-subprogram

function-subprogram ::= function-stmt
body
end-function-stmt

subroutine-subprogram ::= subroutine-stmt
body
end-subroutine-stmt

block-data-subprogram ::= block-data-stmt
declaration-section
end-block-data-stmt

宣言セクション

declaration-section ::= [ use-stmt... ]
[ implicit-part... ]
[ declaration... ]

implicit-part ::= implicit-stmt | parameter-stmt | format-stmt | entry-stmt

declaration ::= derived-type-definition | interface-block | declarative |
format-stmt | entry-stmt

declarative ::= allocatable-stmt | common-stmt | data-stmt | dimension-stmt |
equivalence-stmt | external-stmt | intent-stmt | intrinsic-stmt | namelist-stmt |
optional-stmt | parameter-stmt | pointer-stmt | private-stmt | public-stmt |
save-stmt | statement-function-stmt | target-stmt | type-declaration-stmt

derived-type-definition ::= type-stmt
component-def-stmt...
end-type-stmt

interface-block ::= interface-stmt
{ interface-body | module-procedure-stmt } ...
end-interface-stmt

interface-body ::= function-stmt declaration-section end-function-stmt |
subroutine-stmt declaration-section end-subroutine-stmt

実行セクション

executable-section ::= [ executable | executable-construct | data-stmt ]...

executable ::= allocate-stmt | arithmetic-if-stmt | assignment-stmt | backspace-stmt | call-stmt |
close-stmt | computed-goto-stmt | continue-stmt | cycle-stmt | deallocate-stmt
| endfile-stmt | exit-stmt | forall-stmt | goto-stmt | if-stmt | inquire-stmt |
nullify-stmt | open-stmt | pause-stmt | pointer-assignment-stmt | print-stmt |
read-stmt | return-stmt | rewind-stmt | stop-stmt | where-stmt | write-stmt

executable-construct ::= select-case-construct | do-loop | forall-construct | if-construct |
where-construct

select-case-construct ::= select-stmt
[ case-stmt executable-section ] ...
end-select-stmt

if-construct ::= if-then-stmt
[ executable-section ]
[ elseif-stmt executable-section ] ...
[ else-stmt executable-section ]
endif-stmt

where-construct ::= where-construct-stmt
where-body
[ elsewhere-stmt where-body ]
endwhere-stmt

where-body ::= [ where-assignment-stmt | where-stmt | where-construct |
elsewhere-mask-stmt ] ...

forall-construct ::= forall-construct-stmt
forall-body
end-forall-stmt

forall-body ::= [ forall-assignment-stmt | where-stmt | where-construct | forall-stmt |
forall-construct ] ...

do-loop ::= do-stmt
executable-section
do-ending

do-ending ::= enddo-stmt | executable

注:do-stmt が終端ラベルを指定している場合、do-ending はそのラベ ルを持った文であり、goto-stmt, return-stmt, stop-stmt, exit-stmt, cycle-stmt, arithmetic-if-stmtEND文で あってはなりません。 do-stmtが終端ラベルを指定していない場合には、do-endingenddo-stmt でなくてはなりません。

© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks