使用Fortran77中的标志区分块数据中的条目

时间:2018-08-07 13:46:56

标签: fortran fortran77

我正在double max = items.stream().mapToDouble(Double::doubleValue).max().getAsDouble();//16.0 double min = items.stream().mapToDouble(Double::doubleValue).min().getAsDouble();//-6.0 中的Fortran 77中初始化头结构。而我有这个* .f-文件的两个版本。一个更新了新功能,但仍应支持旧版本。

新版本看起来相似:

BLOCK DATA

在旧版本中,某些条目不存在:

 Block Data INIT_HS
      Implicit None
C
      Include 'hdr_str.inc'
C
      Data (HDR_STRUC (I, NAVA), I = 1, 5)/
     &      CITY   , AREA,
     &      LAT   , LONG,
     &      ELEV,
     &      END/
C
      Data (HDR_STRUC (I, NAVB), I = 1, 3)/
     &      CITY   , CUST AREA,
     &      NAME    , END/
C
      Data HDR_STRING (CODE) /'CODE'/
      Data HDR_STRING (ALT   ) /'ALT'/
      Data HDR_STRING (LAT) /'LAT'/
      Data HDR_STRING (LON) /'LON'/
      Data HDR_STRING (ACCL) /'ACCL'/
END

对于其余的合并源代码,我找到了一种在调用可执行文件时移交参数的解决方案:

 Block Data INIT_HS
      Implicit None
C
      Include 'hdr_str.inc'
C
      Data (HDR_STRUC (I, NAVA), I = 1, 3)/
     &      LAT   , LONG,
     &      ELEV,
     &      END/
C
      Data (HDR_STRUC (I, NAVB), I = 1, 2)/
     &      CITY   , CUST AREA,
     &      END/
C
      Data HDR_STRING (CODE) /'CODE'/
      Data HDR_STRING (LAT) /'LAT'/
      Data HDR_STRING (LON) /'LON'/
END

或:

  DUMMY.exe VERSOLD

因此,我实现了一个功能,用于设置标志的版本。对于普通的DUMMY.exe VERSNEW 等来说,这没问题,但是在此PROGRAM, SUBROUTINE中,我不能仅仅实现BLOCK DATA ... CALL GETVERS 我将从编译器IF (VERSOLD) THEN中获得以下错误消息(..是以前的g77 ..)

(gfortran -m32 -std=legacy -ffixed-line-length-none -c -g -fno-automatic -fno-second-underscore -finit-local-zero )

当然我可以用另一个名称实现第二个Error: Syntax error in DATA statement at (1)

我真的很想知道是否还有其他好的解决方案?

0 个答案:

没有答案