| 
 | 
 
      纯新人一枚,由于科研需要,刚学77不久,在UBUNTU下解析一个由F77写的远古代码,我用CODEBLOCK移植到了WIN平台下,在跟踪代码过程中,一个子程序中读取了一个二进制文件,关于这里READ的用法,我没太搞清楚,希望得到指点。      读入二进制文件是这么写的,如图1所示。关键部分: 
   OPEN(UNIT=IOPDS,FILE=FILNAM(1:LNFILE),ERR=100, STATUS='UNKNOWN', 
     &     ACCESS='SEQUENTIAL', FORM='UNFORMATTED',IOSTAT=IOS) 
                  ENDIF 
       READ(UNIT=IOPDS,ERR=300,IOSTAT=IOS)  LNOW,(WORK(I),I=1,LNOW)    这个read后面的LNOW是什么类型,因为前面也没有显示声明。。?因为WORK在前面已经申明是WORK(1),那么这里是从二进制文件FILE(INQUIRE存在)中读入全部数据后放到LNOW中,在赋值到WORK(1)中吗? 最重要的是我设断点跟踪的过程中,发现执行完READ后,LNOW等于0(执行前为2000多),WORK为0,参见图2,这是说明二进制文件中的所有数据没有读入进去吗??还是我理解有问题,如果读进去了,为啥我用IDE的WATCH栏看到的是0。 
      看了论坛上的帖子http://fcode.cn/guide-4-1.html帮助很大,里面是分行读入,我碰到的情况似乎和帖子所讲有出入,这个程序是用一个LNOW把二进制的所有数据都读入了吗? 
       这个地方的理解,对我后面阅读学习这个程序非常关键,今天整了一天,还是没整明白,明明文件存在,也OPEN了,读进去为啥LNOW是0,不知道我哪里没理解对这个程序的意思. 另外这些代码在UBUNTU下编译跑例子都正常,也就是说这块代码是没问题的。只是放在WIN下我想用CODEBLOCK能够快速阅读,方便快速理解,应该也不会是平台的差异导致的。谢谢大家的帮助和指点。 
 
 
       另外我单独把这个读取部分拿出来用77模仿了下,其中FILENAME具体化,执行前后LNOW和WORK皆为0. 
       PROGRAM READTXT 
       LOGICAL EX 
       DIMENSION WORK(1) 
      INQUIRE(FILE='FASTLIB',EXIST=EX) 
      IF(.NOT.EX) THEN 
                  WRITE (*,*) "Hello World!" 
                  RETURN 
                  ELSE     
     OPEN(UNIT=66,FILE='FASTLIB', 
     &     STATUS='UNKNOWN', 
     &     ACCESS='SEQUENTIAL', FORM='UNFORMATTED', IOSTAT=IOS) 
                  ENDIF    
     READ (66,IOSTAT=IOS)   LNOW,(WORK(I),I=1,LNOW) 
 
 
FILE文件的二进制和十进制文件我用这个远古程序附带的小工具在LINUX下转换出来了,也一起上传上来。 
 
 
 
 
 |   
 
 
 
 |