關於無格式讀
當檔案的介質不是紙、卡片而是磁介質(如磁帶、磁碟)時,當然也可以使用帶格式的讀、寫語句進行輸入輸出。但是,一般的FORTRAN程式中,常常是由於記憶體貯器容量不夠而利用磁帶或磁碟來暫時暫存大批中間計算結果的。如果採用帶格式的讀、寫語句向磁帶或磁碟檔案輸入或輸出中間計算結果,那么這樣做將會自白浪費掉由於輸入輸出時需要進行格式轉換的時間,同時也將多占磁碟或磁帶的空間。除去某些特殊的需要,要求使用帶格式的讀、寫語句之外,否則這樣做是不經濟的。針對這種情況,FORTRAN允許對數據作無格式的輸入和輸出,也就是說,將一個數據按它在記憶體單元中二進制形式的本來面目,不做任何的格式轉換進行輸入或輸出,這樣可以節省輸入輸出的時間,同時也節省外存空間。所以說一個無格式記錄是一個二進制的數串。
無格式的讀語句
無格式的讀語句有下列兩種形式:
xxx||READ(u)k;xxx||READ(u)
其中u——檔案的FORTRAN號,它是一個整常數,或者是一個整變數的引用;k——輸入表。
執行這個讀語句時,輸入檔案u上的記錄並將這記錄的值分別賦給輸入表k中所列的元素。
無格式讀的寫法
無格式讀寫語句的寫法很方便,只要在讀寫語句中去掉格式標識符,並寫上合適的設備號就可以了。例如語句:
WRITE(8)N,(X(J),J=1,N);
表示在設備號8上寫一個無格式記錄。這個記錄可以通過無格式讀語句讀入:
READ(8)N,(X(J),J=l,N);
請注意無格式和表控格式的區別。表控格式是有格式的,這種格式是計算機系統隱含的。無格式的寫只是把記憶體的數據(二進制表示)照搬到指定的輸出設備上,無格式的讀是把輸入設備上的數據(二進制表示)再搬回到記憶體中。由於無格式讀寫不需要對數據的表示形式進行轉換,因此讀寫速度比有格式的快。
注意事項
使用無格式讀寫語句應注意下列問題:
(1)在同一檔案上不能同時使用有格式和無格式的輸入輸出。如果第一個記錄是用無格式WRITE寫的,則全部記錄均套用無格式WRITE語句寫。也必須用無格式READ語句讀這些記錄。
(2)無格式讀寫只適用於磁帶檔案和磁碟檔案,不能用於印表機、讀卡機和終端設備。
(3)如果要把一種計算機的輸出用磁帶複製到另一種計算機,不建儀使用無格式輸出。