1 PROGRAM WRITETEXT 2 IMPLICIT NONE 3 INTEGER,PARAMETER :: NE=6!fortran90 語法定義變量 4 DOUBLE PRECISION A(6,6),B(6,6) 5 INTEGER I,J,M 6 C 非二進制讀寫文本文檔 7 DO 10 I=1,NE 8 DO 10 J=1,NE 9 A(I,J)=I+J 10 10 CONTINUE 11 OPEN(6,FILE='State.txt',STATUS='UNKNOWN') 12 WRITE(6,100) ((A(I,J),J=1,6),I=1,6)!寫入txt 13 CLOSE(6) 14 OPEN(6,FILE='State.txt',status='OLD',ACCESS='SEQUENTIAL') 15 100 FORMAT(6(E16.9,1X)) 16 C 讀取text中數據到數組 17 I=0 18 15 I=I+1 19 READ(6,200) (B(I,J),J=1,6) 20 IF (I.LT.6) GOTO 15 21 200 FORMAT(6(E16.9,1X)) 22 c 二進制方法讀寫文檔 23 24 ENDPROGRAM WRITETEXT
下面添加二進制形式。
1 PROGRAM WRITETEXT 2 IMPLICIT NONE 3 INTEGER,PARAMETER :: NE=6!fortran90 語法定義變量 4 DOUBLE PRECISION A(6,6),B(6,6),C(6,6) 5 INTEGER I,J,M 6 CCCCC 非二進制讀寫文本文檔 7 C 初始化A 8 DO 10 I=1,NE 9 DO 10 J=1,NE 10 A(I,J)=I+J 11 10 CONTINUE 12 C 將A寫入文檔6 13 OPEN(6,FILE='State.txt',STATUS='UNKNOWN')!往文本文檔中寫東西時最好用這種,若存在會自動刪除 14 WRITE(6,100) ((A(I,J),J=1,6),I=1,6)!寫入txt 15 !CLOSE(6)!其實可以不關閉而由內存直接寫到硬盤上。 16 !OPEN(6,FILE='State.txt',status='OLD',ACCESS='SEQUENTIAL')!如果不進行關閉再打開動作,文件指針在最后一行,就需要REWIND 6語句 17 100 FORMAT(6(E16.9,1X)) 18 C 讀取text 6中數據到數組B,實現了數據A--->B 19 I=0 20 15 I=I+1 21 REWIND 6!將6號文檔的指針移到文檔開頭 22 READ(6,200) (B(I,J),J=1,6) 23 IF (I.LT.6) GOTO 15 24 200 FORMAT(6(E16.9,1X)) 25 c 下面二進制方法讀寫文檔,實現數據A--->C 26 OPEN(1,FILE='FTEMP1.DAT',STATUS='NEW',ACCESS='SEQUENTIAL', 27 + FORM='UNFORMATTED') 28 WRITE(1) ((A(I,J),J=1,6),I=1,6)!寫入txt 29 REWIND 1!將1號文檔的指針移到文檔開頭 30 READ(1) ((C(I,J),J=1,6),I=1,6)!寫入txt 31 CLOSE(6) 32 CLOSE(1,STATUS='DELETE') 33 ENDPROGRAM WRITETEXT
通過下面的代碼可以看出,現在的編譯器可以很好的兼容Fortran77和Fortran90,在Fortran77中寫Fortran90代碼也沒問題,比如變量名字長度可以超過6個字符長度(但要小於31個字符長度)

1 PROGRAM WRITETEXT 2 IMPLICIT NONE 3 INTEGER,PARAMETER :: NE=6!fortran90 語法定義變量 4 DOUBLE PRECISION A(6,6),B(6,6),C(6,6) 5 INTEGER I,J,M,abcdefghijklmnopqrstuvwxyz!名字的長度不能超過 31個字符。 6 CCCCC 非二進制讀寫文本文檔 7 C 初始化A 8 DO 10 abcdefghijklmnopqrstuvwxyz=1,NE 9 DO 10 J=1,NE 10 A(abcdefghijklmnopqrstuvwxyz,J)=abcdefghijklmnopqrstuvwxyz+J 11 10 CONTINUE 12 C 將A寫入文檔6 13 OPEN(6,FILE='State.txt',STATUS='UNKNOWN')!往文本文檔中寫東西時最好用這種,若存在會自動刪除 14 WRITE(6,100) ((A(I,J),J=1,6),I=1,6)!寫入txt 15 !CLOSE(6)!其實可以不關閉而由內存直接寫到硬盤上。 16 !OPEN(6,FILE='State.txt',status='OLD',ACCESS='SEQUENTIAL')!如果不進行關閉再打開動作,文件指針在最后一行,就需要REWIND 6語句 17 100 FORMAT(6(E16.9,1X)) 18 C 讀取text 6中數據到數組B,實現了數據A--->B 19 I=0 20 15 I=I+1 21 REWIND 6!將6號文檔的指針移到文檔開頭 22 READ(6,200) (B(I,J),J=1,6) 23 IF (I.LT.6) GOTO 15 24 200 FORMAT(6(E16.9,1X)) 25 c 下面二進制方法讀寫文檔,實現數據A--->C 26 OPEN(1,FILE='FTEMP1.DAT',STATUS='NEW',ACCESS='SEQUENTIAL', 27 + FORM='UNFORMATTED') 28 WRITE(1) ((A(I,J),J=1,6),I=1,6)!寫入txt 29 REWIND 1!將1號文檔的指針移到文檔開頭 30 READ(1) ((C(I,J),J=1,6),I=1,6)!寫入txt 31 CLOSE(6) 32 CLOSE(1,STATUS='DELETE') 33 ENDPROGRAM WRITETEXT
並且也不是變量名比較長時就取前6個字符(要是只取前6個字符的話兩個較長的變量名前6個字符相同時會認為是同一個變量),而是全部字符都作為變量名。

1 PROGRAM WRITETEXT 2 IMPLICIT NONE 3 INTEGER,PARAMETER :: NE=6!fortran90 語法定義變量 4 DOUBLE PRECISION A(6,6),B(6,6),C(6,6) 5 INTEGER I,J,M,abcdefghijklmnopqrstuvwxyz,abcdefghijklmnopqrstuvw!名字的長度不能超過 31個字符。 6 CCCCC 非二進制讀寫文本文檔 7 C 初始化A 8 DO 10 abcdefghijklmnopqrstuvwxyz=1,NE 9 DO 10 abcdefghijklmnopqrstuvw=1,NE 10 A(abcdefghijklmnopqrstuvwxyz,abcdefghijklmnopqrstuvw)= 11 & abcdefghijklmnopqrstuvwxyz+abcdefghijklmnopqrstuvw 12 10 CONTINUE 13 C 將A寫入文檔6 14 OPEN(6,FILE='State.txt',STATUS='UNKNOWN')!往文本文檔中寫東西時最好用這種,若存在會自動刪除 15 WRITE(6,100) ((A(I,J),J=1,6),I=1,6)!寫入txt 16 !CLOSE(6)!其實可以不關閉而由內存直接寫到硬盤上。 17 !OPEN(6,FILE='State.txt',status='OLD',ACCESS='SEQUENTIAL')!如果不進行關閉再打開動作,文件指針在最后一行,就需要REWIND 6語句 18 100 FORMAT(6(E16.9,1X)) 19 C 讀取text 6中數據到數組B,實現了數據A--->B 20 I=0 21 15 I=I+1 22 REWIND 6!將6號文檔的指針移到文檔開頭 23 READ(6,200) (B(I,J),J=1,6) 24 IF (I.LT.6) GOTO 15 25 200 FORMAT(6(E16.9,1X)) 26 c 下面二進制方法讀寫文檔,實現數據A--->C 27 OPEN(1,FILE='FTEMP1.DAT',STATUS='NEW',ACCESS='SEQUENTIAL', 28 + FORM='UNFORMATTED') 29 WRITE(1) ((A(I,J),J=1,6),I=1,6)!寫入txt 30 REWIND 1!將1號文檔的指針移到文檔開頭 31 READ(1) ((C(I,J),J=1,6),I=1,6)!寫入txt 32 CLOSE(6) 33 CLOSE(1,STATUS='DELETE') 34 ENDPROGRAM WRITETEXT