fortran77讀寫文本文檔


 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
fortran77代碼

並且也不是變量名比較長時就取前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
fortran77

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM