簡體   English   中英

F2C結構和記錄

[英]F2C structure and record

我正在使用F2C (FORTRAN 77 TO C) 將巨大的 FORTRAN 代碼轉換為 C。 我的源 FORTRAN 文件之一有一個 F2C 由於某些原因不喜歡的包含文件。 這是帶有擴展名.INS的包含文件(TAGLINE.INS)(我懷疑擴展名是否重要):

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 時,出現以下錯誤:

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 文件,如下所示:

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

謝謝您的幫助

RECORDSTRUCTURE不是標准 Fortran 甚至不是廣泛支持的擴展(至少在f2c真正相關的日子里)。 它是 DEC 開發的一個特殊擴展,因此保留在 DEC 編譯器(Compaq 和 Intel)的后期開發中。

幾年前,這些擴展已移植到 Gfortran,但在g77f2c等非常古老的編譯器甚至某些當前編譯器中不受支持。 當使用 gfortran 編譯時,這些擴展必須由特殊標志允許。

您的選擇是將 Fortran 代碼重寫為f2c可以理解的代碼,或者自己翻譯代碼。 或者,就像本世紀人們經常做的那樣,保留您的 Fortran(+DEC 擴展)代碼,使用當前的 Fortran(+擴展)編譯器編譯它,然后從 Z0D61F8370CAD1DE12580B84D143 調用二進制文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM