zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    跟结束进程相关的那些信号
    tcpdump使用示例
    Linux在bash history当中添加timestamp
    CentOS中在/etc/rc.local添加开机自启动项启动失败
    CentOS配置通过DHCP的方式动态获取IP
    CentOS桌面安装
    MySQL二进制安装
    对okhttp参数的一些思考
    依赖倒置原则(DIP)
    Liskov替换原则(LSP)
  • 原文地址:https://www.cnblogs.com/zhubinglong/p/8886885.html
Copyright © 2011-2022 走看看