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
© Copyright 2024 Paperzz