首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >F2C结构和记录

F2C结构和记录
EN

Stack Overflow用户
提问于 2020-04-30 09:16:03
回答 1查看 155关注 0票数 0

我正在使用F2C (FORTRAN77toC)将一个巨大的FORTRAN码转换成C。我的一个FORTRAN源文件有一个包含文件,由于某些原因,F2C不喜欢这个文件。下面是扩展名为.INS的包含文件(TAGLINE.INS) (我怀疑这个扩展名是否重要):

代码语言:javascript
复制
C
C
C***  SCRATCH INPUT DATA FROM FILE FNAM  (.RTV = RAW INPUT TAG VALUE)
C
          STRUCTURE     /STAGRICL/

            CHARACTER*76     UFN     !! U72 FILENAME.UP.CASE     INIT BLANK
            CHARACTER*76     RFN      ! R72 FILENAME.RAWCASE     INIT BLANK
            INTEGER*4        LFN      ! I4  FILENAME.LENGTH      INIT 0    

            CHARACTER*32     USN     !! U32 SECTION-NAME-UP.CASE INIT BLANK
            CHARACTER*32     RSN      ! R32 SECTION-NAME RAWCASE INIT BLANK
            INTEGER*4        LSN      ! I4  SECTION-NAME-LENGTH  INIT 0    

            CHARACTER*32     UTN     !! U32 TAG-NAME-UP.CASE     INIT BLANK
            CHARACTER*32     RTN      ! R32 TAG-NAME-RAWCASE     INIT BLANK
            INTEGER*4        LTN      ! I4  TAG-NAME-LENGTH      INIT 0    

            CHARACTER*80     UTV      ! U80 TAG-VALUE.UP.CASE.IN INIT BLANK
            CHARACTER*80     RTV     !! R80 TAG-VALUE.RAWCASE.IN INIT BLANK
            INTEGER*4        LTV      ! I4  TAG-VALUE-LENGTH     INIT 0    

            CHARACTER*80     RWL      ! R80 TAG-RAW.WHOLE.LINE   INIT BLANK
            INTEGER*4        LWL      ! I4  TAG-RAW.WHOLE.LENGTH INIT 0    
            INTEGER*4        NWL      ! I4  LIN.#.IN.ORIG.FILE   INIT 0    

            LOGICAL*4        SET      ! L4  TAGRICL   SET YET ?  INIT FALSE
            LOGICAL*4        USE      ! L4  TAGRICL  USED YET ?  INIT FALSE

      END STRUCTURE
C
C
      PARAMETER                   (N1000=200)
      RECORD /STAGRICL/   TAGRICL(N1000)  ! 1000.MAX TAG.NAMES.PER.FILE
      COMMON /CTAGRICL/   TAGRICL          ! RETURNED TAG.NAMES+TAG.VALUES

在尝试使用F2C将源代码转换为C时,我得到以下错误:

代码语言:javascript
复制
Error on line 5 of TAGLINE.INS: unclassifiable statement (starts "structure/")
Error on line 34 of TAGLINE.INS: unclassifiable statement (starts "record/sta")

显然,F2C抱怨包含文件(STRUCTURE /STAGRICL/)中的结构。Fortran 77注释行以字符c开头。

我的源代码包含.INS文件,如下所示:

代码语言:javascript
复制
SUBROUTINE FINDSEC (SECTION,    ISEC1,ISEC2)
C
c------no.mo.$debug.no.no.no
C
      INCLUDE 'TAGLINE.INS'
C
C
      CHARACTER*(*)       SECTION
......rest of the subroutine

谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-30 19:41:26

RECORDSTRUCTURE不是标准的Fortran,甚至不是一个得到广泛支持的扩展(至少在f2c真正相关的时候是这样)。它是由DEC开发的一个特殊扩展,因此保留在DEC编译器(Compaq和Intel)的后期开发中。

这些扩展在几年前就已经移植到了Gfortran中,但在非常老的编译器中,如g77f2c,甚至在一些当前的编译器中都不支持。当使用gfortran进行编译时,这些扩展必须由一个特殊的标志来允许。

您的选择是将Fortran代码重写为f2c能够理解的代码,或者自己翻译代码。或者,就像人们在本世纪经常做的那样,保留您的Fortran (+DEC扩展)代码,使用当前的Fortran (+扩展)编译器编译它,然后从C中调用二进制代码。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61514325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档