PDFファイルをダウンロードしてください

Fortranプログラミング入門
-入出力-
入力文
☆文法 read(装置番号,書式) 入力対象, 入力対象, …
・「装置番号」から「書式」の通りに入力し,「入力対
象」に代入する
・装置番号が*か5は標準入力(キーボード入力)
・書式を*にすると標準書式で入力
1
出力文
☆文法 write (装置番号,書式) 出力対象, 出力対象, …
・「装置番号」に「書式」の通りに「出力対象」を出力.
・装置番号 * か 6 は標準出力 (ディスプレイ出力)
・書式 * は標準書式で出力.自動的に設定.
2
例題1
整数型の変数iとjを宣言し,read文でキーボードから値を
読み込めるようにせよ.また,変数iとjをwrite文で端末に
出力せよ.
3
例題1
program disp
implicit none
integer :: i, j
read(*,*) ‘Please input i and j’
read(*,*) i, j
write(*,*) ‘i and j are’
write(*,*) i, j
stop
end program disp
4
外部ファイルの入出力
☆文法 open(装置番号,オプション)
ファイルを開き装置番号との関連付けを行う
・装置番号を表す自然数.0と5と6は使用不可
・オプション
file = ‘ファイル名’
-> ファイル名を指定する
装置番号は 0 から2147483647 の値で自由に設定可能
※ 0 は標準エラー出力
5は標準入力
6は標準出力
のため使用しない
5
外部ファイルの入出力
☆文法 close (装置番号,オプション)
ファイルを閉じ装置番号との関連付けを取り消す
・装置番号はopen文で開いたファイルを指定する
ファイルの使用開始
(open文)
ファイルへの入出力
(read文,write文)
ファイルの使用終了
(colse文)
6
例題1
「kaki」ファイルと「yomi」を作成せよ.
「yomi」ファイルには
1, 2
3, 4, 5
と記入せよ.
そのとき,「yomi」ファイルの内容を「kaki」ファイルにコピーする
プログラムを書け.ファイル名は「copy.f90」とせよ.
・「yomi」と「kaki」ファイルをopen文で開く
・「yomi」ファイルをread文で読み込む
・write文で「kaki」ファイルに書き込む
・close文で「yomi」と「kaki」ファイルを閉じる
7
例題1 外部ファイルへの入出力
ファイル copy.f90
program copy
implicit none
integer :: a, b, c
open(10,file='yomi')
open(20,file='kaki')
read(10,*) a,b
write(20,*) a,b
read(10,*) a,b,c
write(20,*) a,b,c
close(10)
close(20)
stop
end program copy
ファイル yomi
1, 2
3, 4, 5
ファイル kaki
?
8
外部ファイルの入出力
☆文法 open(装置番号,オプション)
ファイルを開き装置番号との関連付けを行う
・装置番号を表す自然数.5と6は使用不可
・オプション
status = ‘NEW’‘OLD’‘REPLACE’‘SCRATH’ ‘UNKOWN’
->NEW : 開くファイルが既に存在するとエラー
OLD :開くファイルが存在しないとエラー
REPLACE : 開くファイルが既に存在するなら上書き.
ファイルが存在しないなら新規作成.
SCRATH : 一時ファイルに対し指定
UNKOWN : 不明時.statusを書かないとUNKOWN
9
外部ファイルの入出力
☆文法 open(装置番号,オプション)
ファイルを開き装置番号との関連付けを行う
・装置番号を表す自然数.5と6は使用不可
・オプション
action = ‘READ’ ‘WRITE’ ‘READWRITE’
-> READ : 読み込み専用でファイルを開く
WRITE : 書き込み専用でファイルを開く
READWRITE : 特に制限なくファイルを開く.Actionを書
かないとREADWRITEになる.
10
外部ファイルの入出力
☆文法 open(装置番号,オプション)
ファイルを開き装置番号との関連付けを行う
・装置番号を表す自然数.5と6は使用不可
・オプション
err = s
-> ファイルを開くときにエラーが発生した場合,
文番号sに飛んで処理を続ける(エラー処理).
補足 : 文番号とは
文に番号が付けられる.
文番号 実行文
11
外部ファイルの入出力
program プログラム名
implicit none
・・・
open(10, file=‘kaki’, status=‘NEW’,err=1000)
open(20, file=‘yomi’, status=OLD’,err=2000)
・・・
stop
1000 write(*,*) ‘ERROR : cannot open kaki file’
stop
2000 write(*,*) ‘ERROR : cannot open yomi file’
stop
end program プログラム名
12
書式
☆文法 文番号 format(カンマで区切った編集記述子)
編集記述子
・I形編集記述子 i数字
整数型の変数や定数の値を読み込み,書き込みするた
めの編集記述子.
˽˽˽#####
・˽はスペース, #は表示する数字
・iの後ろの数字の数だけ表示
・iの後ろの数字よりも表示桁が小さい場合
スペースで埋める
・ iの後ろの数字よりも表示桁が大きい場合,表示不可
13
書式
☆文法 文番号 format(カンマで区切った編集記述子)
編集記述子
・I形編集記述子 i数字
整数型の変数や定数の値を読み込み,書き込みするた
めの編集記述子.
例
出力結果
integer :: a = 1234
a=***
i3 : 3桁の数字を表示
write(*,100) a
表示できない…
write(*,200) a
a=˽1234 i5 : 5桁の数字を表示
100 format(‘a=’,i3)
スペースで埋める
200 format(‘a=’,i5)
14
書式
☆文法 文番号 format(カンマで区切った編集記述子)
編集記述子
・I形編集記述子 i数字
整数型の変数や定数の値を読み込み,書き込みするた
めの編集記述子.
例
出力結果
integer :: a = 1234
a=*** a=˽1234
write(*,100) a, a
100 format(‘a=’,i3,’ a=’,i5)
15
書式
☆文法 文番号 format(カンマで区切った編集記述子)
編集記述子
・F形編集記述子 f数字1.数字2
実数型の変数や定数の値を読み込み,書き込みするた
めの編集記述子.
˽±###.####
数字2の幅
数字1の幅
: 小数点以下の数字を数字2の数だけ表示
: スペース,符号,小数点を含めた数字を数字1の数
だけ表示
16
書式
☆文法 文番号 format(カンマで区切った編集記述子)
編集記述子
・F形編集記述子 f数字1.数字2
実数型の変数や定数の値を読み込み,書き込みするた
めの編集記述子.
出力結果
例
a=˽˽˽˽-12.35
real :: a = -12.3456
write(*,100) a
a=˽˽˽˽-12.3456
write(*,200) a
100 format(‘a=’,f10.2)
200 format(‘a=’, f12.4)
17
書式
☆文法 文番号 format(カンマで区切った編集記述子)
編集記述子
・E形編集記述子 e数字1.数字2
実数型の変数や定数を指数表示で読み込み,書き込み
するための編集記述子.
˽±0.####E±###
数字2の幅
数字1の幅
: 小数点以下の数字を数字2の数だけ表示
: スペース,符号,小数点,Eを含めた数字を数字1の数
だけ表示
18
書式
☆文法 文番号 format(カンマで区切った編集記述子)
編集記述子
・E形編集記述子 e数字1.数字2
実数型の変数や定数を指数表示で読み込み,書き込み
するための編集記述子.
出力結果
例
a=˽-0.12E+02
real :: a = -12.3456
write(*,100) a
a=˽-0.1234E+02
write(*,200) a
100 format(‘a=’,e10.2)
200 format(‘a=’, e12.4)
19