我(尝试!)维护一个非常大的一组FORTRAN代码。此代码包含分散在各处的WRITE语句:捕获Fortran中的写例程
WRITE(NOUT,2050)DAMPING
2050 FORMAT(3X,'DAMPING =',F6.2,'%')
我想要做的就是控制这些WRITE语句。原因是我们需要创建一个额外的输出文件(有一些修改),并且复制语句的工作量太大。相反,我希望对它们进行修改......一种方式可能是有我自己写程序:
WRITEF(NOUT,2050)DAMPING
2050 FORMAT(3X,'DAMPING =',F6.2,'%')
--------------------------------
SUBROUTINE WRITEF(objectToWrite)
...
Code to write out object
...
END
另一种可能是把写语句作为参数:
WRITEF(WRITE(NOUT,2050)DAMPING)
2050 FORMAT(3X,'DAMPING =',F6.2,'%')
--------------------------------
SUBROUTINE WRITEF(characterToWrite)
...
Code to write out character
...
END
但不幸的是我缺乏FORTRAN知识来知道这是否可能,以及如何实现它!
第二个绝对不可能,因为写入不是返回值的函数。看起来你只能选择重构代码,以便在完成计算后将写入语句收集到几个子程序中。 – ja72 2014-11-21 15:17:55
感谢您的反馈,但不幸的是代码编写的方式是不可能的 - 值被写入文件,然后在计算正在运行时被遗忘/覆盖... – qu1ckdry 2014-11-21 17:17:06
请注意,格式只是问题的一部分。 'write'语句通常带有任意长度的任意类型变量列表。有没有干净的方式来使自己的功能,采取这样的参数列表。你想做什么*可能会成为预处理器的工作。 – agentp 2014-11-21 22:56:23