Fortran 中打印语句的缓冲区溢出

Buffer overflow from print statement in fortran

我正在尝试为我自己的项目编辑一个旧的 Abaqus 用户子程序。我正在尝试使用 print 语句调试一些分段错误(在大学计算机上,代码需要来自 abaqus 的输入,因此无法使用适当的调试器),但是,当我使用 print 语句时,它会中止并显示一条消息:*** buffer overflow detected ***: *path* terminated.

前几次(可能是 5 次?)我今天早上 运行 它实际上按预期工作和打印,但后来停止了。我试过使用 call flush(6) 来清除缓冲区,但这没有帮助。我应该使用不同的单位吗?或者以不同的方式清除缓冲区?还是完全不同?

我是 Fort运行 的新手,只有一般的编程经验,所以请就此问题提出任何建议!

这是我的代码的相关部分:

SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,
    1  RPL,DDSDDT,DRPLDE,DRPLDT,STRAN,DSTRAN,TIME,DTIME,
    2  TEMP,DTEMP,PREDEF,DPRED,CMNAME,NDI,NSHR,NTENS,
    3  NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,CELENT,
    4  DFGRD0,DFGRD1,NOEL,NPT,KSPT,KINC)

     INCLUDE 'ABA_PARAM.INC'
     CHARACTER*80 CMNAME

     DIMENSION STRESS(NTENS),STATEV(NSTATV),
    1  DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),
    2  STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),
    3  PROPS(NPROPS),COORDS(3),DROT(3,3),
    4  DFGRD0(3,3),DFGRD1(3,3)
    
     dt = DTIME
       
     print *, "TEMP", TEMP 

注意:我相信这是使用堡垒运行 90 和英特尔 2020

事实证明,使用 write(6, *) "TEMP: ", TEMP 可以满足我的需要,而不会出现缓冲区溢出,这对我来说已经足够了