fortran95 文件讀寫等操作的字段參數總結

1. 打開文件(open)

open(unit=number,file='filename',form='...',status='...',access='...',recl=length,err=label,iostat=iostat,blank='...',position='...',action=action,pad='...',delim='...')

unit=number

number必須是一個正整數,它可以使用變量或是常量來賦值。number值最好避開1,2,5,6,因爲2,6是默認的輸出位置,也就是屏幕。1、5則是默認的輸入位置,也就是鍵盤。

file='filename'

這個字段用來指定所要打開的文件名稱,文件名要符合操作系統規定,像是Windows下文件名不區分大小寫,UNIX中則會區分大小寫,還有不管使用哪一個操作系統,最好都不要使用中文文件名。

form='formatted' or 'unformatted'

form字段只有兩個值可以設置:'formatted'或'unformatted'。
form='formatted'表示文件使用“文本文件”格式來保存;
form='unformatted'表示文件使用“二進制文件”格式來保存。
這一欄不給定時,默認值爲form='formatted'。

status='new' or 'old' or 'replace' or 'scratch' or 'unknown'

status='new' 表示這個文件原本不存在,是第一次打開;
status='old' 表示這個文件原本就已經存在;
status='replace' 文件若已存在,會重新創建一次,原本的內容會消失。文件若不存在,會創建新文件;
status='scratch' 表示要打開一個暫存盤,這個時候可以不需要指定文件名稱,也就是file這一欄可以忽略,因爲程序本身會自動取一個文件名,至於文件名是什麼也不重要,因爲暫存盤會在程序結束後自動刪除;
status='unknown' 由各編譯器自定義,通常會同replace的效果。
這一欄不給定時,默認值爲unknown。

access='sequential' or 'direct'

這個字段用來設置讀寫文件的方法。
access='sequential' 讀寫文件的操作會以“順序”的方法來做讀寫,這就是“順序讀寫文件”;
access='direct' 讀寫文件的操作可以任意指定位置,這就是“直接讀取文件”。
不賦值時,默認值爲sequential。

recl=lengh

在順序讀取文件中,recl字段值用來設置一次可以讀寫多大容量的數據。
在打開“直接讀取文件”時,recl=length的length值是用來設置文件中每一個模塊單元的區分長度。
length的單位在文本格式下爲1字符,也就是1byte。在二進制格式下則由編譯器自行決定,一般可能爲1byte(G77)或4bytes(Visual Fortran)。

err=label

這個字段用來設置當文件打開發生錯誤時,程序會跳躍到label所指的代碼行處來繼續執行程序。

iostat=var

這個字段會設置一個整數值給後面的整型變量,這是用來說明文件的打開狀態,數值會有下面三種情況:
var>0 表示讀取操作發生錯誤;
var=0 表示讀取操作正常;
var<0 表示文件終了。

blank='null' or 'zero'

這用來設置文件輸入數字時,當所設置的格式字段中有空格存在時所代表的意義。blank='null'時,空格代表沒有東西。blank='zero'時,空格部分會自動以0代入。

Fortran90添加的功能:

position='asis' or 'rewind' or 'append'

position='asis' 表示文件打開時的讀取位置,不特別指定位置,通常就是在文件開頭,這是默認值;
position='rewind' 表示文件打開時的讀取位置移到文件的開頭;
position='append' 表示文件打開時的讀取位置移到文件的結尾。

action='read' or 'write' or 'readwrite'

設置所打開文件的讀寫權限:
action='readwrite' 表示所打開文件可以用來讀取及寫入,這是默認值;
action='read' 表示所打開的文件只能用來讀取數據;
action='write' 表示所打開的文件只能用來寫入數據。

pad='yes' or 'no'

pad='yes' 在格式化輸入時,最前面的不足字段會自動以空格填滿,默認值是pad='yes';
pad='no' 在格式化輸入時,不足的字段不會自動以空格填滿。

delim='apostrophe' or 'quote' or 'none'

delim='none' 純粹輸出字符串內容;
delim='quote' 輸出字符串會在前後加上雙引號;
delim='apostrophe' 輸出字符串會在前後加上單引號。

2. 讀寫文件(write/read)

write/read(unit=number,fmt=format,nml=namelist,rec=record,iostat=stat,err=errlabel,end=endlabel,advance=advance,size=size)

unit=number

這個字段用來指定read/write所使用的輸入/輸出的位置。

fmt=format

指定輸入輸出格式使用。

nml=namelist

指定讀寫某個namelist的內容。

rec=record

在直接讀取文件中,設置所要讀寫的文件模塊位置。

iostat=var

這個字段會設置一個整數值給後面的整型變量,用來說明文件的讀寫狀態:
var>0 表示讀取操作發生錯誤;
var=0 表示讀取操作正常;
var<0 表示文件終了。

err=errlabel

指定在讀寫過程中發生錯誤時,會轉移到某個行代碼來繼續執行程序。

end=endlabel

指定在讀寫到文件末尾時,要轉移到某個行代碼來繼續執行程序。

Fortran90添加的功能:

advance='yes' or 'no'

設置在文本格式下的順序文件中,每一次的read/write命令完成之後,讀寫位置會不會自動向下移動一行。
advance='yes' 是默認的狀態,每讀寫一次會自動下移一行;
advance='no' 會暫停自動換行的操作,
使用這個字段時,一定要設置輸入輸出格式,在平面輸出時可以使用這個設置來控制write命令是否會自動換行。

size=count

當advance='no'時,纔可以使用這個字段,它會把這一次輸入輸出的字符數目設置給後面的整型變量。

3. 查詢文件狀態(inquire)

inquire(unit=number,file=filename,iostat=stat,err=label,exist=exist,opened=opened,number=number,named=named,access=access,sequential=sequential,direct=direct,form=form,formatted=formatted,unformatted=unformatted,recl=recl)

unit=number

賦值所要查詢的文件代號。

file=filename

賦值所要查詢的文件名稱。

iostat=stat 

查詢文件讀取情況:
var>0 表示讀取操作發生錯誤;
var=0 表示讀取操作正常;
var<0 表示文件終了。

err=errlabel

指定inquire發生錯誤時,會轉移到某個行代碼來繼續執行程序。

exist=exist

檢查文件是否存在,會返回一個布爾變量給後面的邏輯變量,返回真值表示文件存在,返回假值表示文件不存在。

opened=opened

檢查文件是否已經使用open命令打開,會返回一個布爾變量給後面的邏輯變量,返回真值表示文件已經打開,返回假值表示文件尚未打開。

number=number

由文件名來查詢這個文件所給定的代碼。

named=named

查詢文件是否取了名字,也就是檢驗文件是否爲臨時保存盤,返回值爲邏輯數。

access=access

檢查文件的讀取格式,會返回一個字符串,字符串可以是:
'sequential' 代表文件使用順序讀寫格式;
'direct' 代表文件使用直接讀取格式;
‘undefined’ 代表沒有定義。

sequential=sequential

查看文件時候採用順序格式,會返回一個字符串:
'yes' 代表文件是順序讀取文件;
'no' 代表文件不是順序讀取文件;
'unknown' 代表不知道。

direct=direct

查看文件時候採用直接格式,會返回一個字符串:
'yes' 代表文件是直接讀取文件;
'no' 代表文件不是直接讀取文件;
'unknown' 代表不知道。

form=form

查看文件的保存方法,會返回一個字符串:
'formatted' 打開的是文本文件;
'unformatted' 打開的是二進制文件;
'undefined' 沒有定義。

formatted=fmt

查看文件是否爲文本文件,返回一個字符串:
'yes' 代表本文件是文本文件;
'no' 代表本文件不是文本文件;
'unknown' 無法判定。

unformatted=fmt

查看文件是否爲二進制文件,返回一個字符串:
'yes' 代表本文件是二進制文件;
'no' 代表本文件不是二進制文件;
'unknown' 無法判定。

recl=length

返回open文件時recl欄的設定值。

nextrec=nr

返回下一次文件讀寫的位置。

blank=blank

返回值是字符串,用來查看open文件時的blank參數所給定的字符串值。

Fortran90添加的功能:

position=position

返回打開文件時position字段給定的字符串。

action=action

返回打開文件時action字段給定的字符串。

read=read

返回字符串,檢查文件是否爲只讀文件:
'yes' 代表本文件是隻讀的;
'no' 代表本文件不是隻讀的;
'unknown' 無法判定。

write=write

返回字符串,檢查文件是否可以寫入:
'yes' 代表本文件是可以寫入的;
'no' 代表本文件不是可以寫入的;
'unknown' 無法判定。

readwrite=readwrite

返回字符串,檢查文件是否可以同時讀寫:
'yes' 代表本文件是可以同時讀寫;
'no' 代表本文件不是可以同時讀寫;
'unknown' 無法判定。

delim=delim

返回打開文件時delim字段給定的字符串。

pad=pad

返回打開文件時pad字段給定的字符串。

4. 其它文件運行命令

backspace(unit=number,err=errlabel,iostat=iostat)

把文件的讀寫位置返回一步,其它參數同上。

endfile(unit=number,err=errlabel,iostat=iostat)

把目前文件的讀寫位置變成文件的結尾,其它同上。

rewind(unit=number,err=errlabel,iostat=iostat)

把文件的讀寫位置倒回文件開頭,其它同上。

close(unit=number,status=string,err=errlabel,iostat=iostat)

把文件關閉,不再進行讀寫操作。
status='keep' 在文件關閉後,保留這個文件,這是默認的狀態;
status='delete' 在文件關閉後,消除這個文件。


 參考資料: 彭國倫 《Fortran95程序設計》 中國電力出版社

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章