编译.f文件,"未定义引用' MAIN _'问题

时间:2015-06-20 00:04:40

标签: fortran gfortran

我正在尝试使用g77编译.f文件。 我尝试使用.cmd批处理文件(按照g77 documentation中描述的方法之一)使用以下内容(在.cmd文件中)编译它:

g77 -o gtemp.exe gtemp.f
pause

但是当我运行上层.cmd文件时,我收到以下错误消息: "未定义对' MAIN _'

的引用

为什么会这样? gtemp.f文件与g77.exe文件位于同一文件夹中。谢谢。

以下是gtemp.f文件的代码:

      SUBROUTINE GTEMP(DIF,TMIN,TMAX,TAV,TG)                                    GTEMP    2
      DIMENSION AMON(12),TG(12)                                                 GTEMP    3
      DATA AMON / 15.,46.,74.,95.,135.,166.,196.,227.,258.,288.,                GTEMP    4
     1            319.,349. /                                                   GTEMP    5
      DATA P,PI,PO / 8760.,3.14159265,0.6 /                                     GTEMP    6
C                                                                               GTEMP    7
      BETA   = SQRT(PI/(DIF*P))*10.                                             GTEMP    8
      X      = EXP(-BETA)                                                       GTEMP    9
      X2     = X*X                                                              GTEMP   10
      C      = COS(BETA)                                                        GTEMP   11
      S      = SIN(BETA)                                                        GTEMP   12
      Y      = X2 - 2.*X*C + 1.                                                 GTEMP   13
      Y      = Y / (2.*BETA*BETA)                                               GTEMP   14
      GM     = SQRT(Y)                                                          GTEMP   15
      Z      = (1.-X*(C+S)) / (1.-X*(C-S))                                      GTEMP   16
      PHI    = ATAN(Z)                                                          GTEMP   17
      BO     = (TMAX-TMIN)*0.5                                                  GTEMP   18
      DO 40 I=1,12                                                              GTEMP   19
      THETA  = AMON(I)*24.                                                      GTEMP   20
   40 TG(I)  = TAV - BO*COS(2.*(PI/P)*THETA-PO-PHI)*GM + 460.                   GTEMP   21
      RETURN                                                                    GTEMP   22
      END                                                                       GTEMP   23

1 个答案:

答案 0 :(得分:1)

当编译器找不到主程序时会发生此问题。

按如下方式创建主程序

Program Test
Implicit None 

Real :: DIF, TMIN, TMAX, TAV, TG(12) 

Call GTEMP(DIF,TMIN,TMAX,TAV,TG)

Contains

  SUBROUTINE GTEMP(DIF,TMIN,TMAX,TAV,TG)
  ..... 
  END SUBROUTINE GTEMP

End Program Test