ナビゲーション:前へ 上へ 次へ
8.1 Fortran 95プログラム構造
このセクションにはFortran 95プログラムの構造に関する簡単な参照ガイドが 含まれています。
数式については次のセクションに記述されています。
- 構文要素の定義は‘::=’によって表されます。
- イタリック体の名前(例えば‘expr’ )は構文要素名です。
- ‘[ ]’中の項目は省略可能です。
- 省略符号‘...’は直前の項目の省略可能な繰返しを意味します。
- ‘{’と‘}’はグルーピングにのみ使用されます。
- ‘|’で区分された項目はその中のどれか一つという選択を表します。
- ‘-stmt’で終わる文はセクション “Fortran 95ステートメント”に記述されています。
INCLUDE行
INCLUDE
行は次の形式を取ります:
INCLUDE
char-literal-constant
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-stmt やEND
文で
あってはなりません。
do-stmtが終端ラベルを指定していない場合には、do-ending は
enddo-stmt でなくてはなりません。