跳到内容

Fortran/FAQ

来自维基教科书,开放世界中的开放书籍

本文包含一些关于 Fortran 的常见问题解答 (FAQ) 及其答案。

问。我应该学习 Fortran 吗?它过时了吗?

[编辑 | 编辑源代码]

答:Fortran 并没有过时,而且在不久的将来也不会过时。Fortran 是一种通用编程语言,适用于许多应用程序。然而,它擅长数值计算和高性能计算。它速度快、可移植性好,并且可以无缝处理数组。正因为如此,存在许多用于数值算法的高质量 Fortran 库,它在科学界广泛使用(例如数值天气预报)。该语言本身仍在维护,并定期更新现代功能;最新版本是 Fortran 2018。

问:我应该使用哪个 Fortran 编译器?

[编辑 | 编辑源代码]

答:Oracle Solaris Studio、GNU Fortran、G95 和 Silverfrost(仅限 Windows)是免费的 Fortran 95 编译器,Absoft、IBM、Intel、Lahey、NAG、Pathscale 和 PGI 销售 Fortran 编译器。有关 Fortran 编译器的比较信息,请访问 维基百科

问:如何创建带编号的文件名,例如 out_01.txt、out_02.txt 等?

[编辑 | 编辑源代码]

答:使用“内部写入”创建文件名,例如

write (file_name,"('out_',i2.2,'.txt')") i

答:一种更简洁的方法是

i=<file number>
WRITE(file_name, fmt = '(A4,I0,A4)')'out_',i,'.txt'

这样格式就很清晰,你正在将正确的字符串写入变量。我假设你想要一个整数作为数字。“I”格式语句需要一个整数长度,或者在某些情况下为零。你可能在想 F,其中小数点表示要考虑的小数位数。

问:使用此技术时 open 语句是什么样的?OPEN(UNIT = __, FILE = ???, STATUS='NEW')?

[编辑 | 编辑源代码]

答:Gfortran 不接受此块

      write(file_name,'cp',(i5.5),'.out') ITN
      open  (67,file = file_name)

出现错误,文件标签必须是 CHARACTER 类型

其他人可以帮忙吗?

答:请参见上面的答案。基本上,你写入变量 file_name 的方式不正确。

WRITE(file_name,fmt='(A2,I0,A4)')'cp',ITN,'.out'
OPEN(UNIT=67, file=file_name, status='new')

假设 ITN 已声明为整数并被赋予了值。

问:如何将字符串转换为整数和其他类型?反过来呢?

[编辑 | 编辑源代码]

答:使用“内部读取”或“内部写入”。实际上,你使用一个字符变量作为文件名,并读取或写入 I/O 列表。你编写类似以下的内容

   read (character_variable, format) list of variables

将字符串转换为另一种类型,以及

   write (character_variable, format) list of variables

从另一种类型转换为字符串,如下面的程序所示

program xconvert_integer_string   
character(20) :: cnum 
integer       :: i 
i = 445 
write(cnum,'(i5)') i 
write(*,'(a)') trim(cnum) ! should output "  445" 
write(cnum,'(i5.5)') i 
write(*,'(a)') trim(cnum) ! should output "00445" 
i = 34 
write(cnum,'(i0)') i 
write(*,'(a)') trim(cnum) ! should output "34" 
end program xconvert_integer_string

此答案基于 Paul van Delst 和 Dick Hendrickson 在 comp.lang.fortran 中的邮件。

问。如何在 Fortran 程序中向操作系统发出命令?

[编辑 | 编辑源代码]

答。Fortran 2008 标准提供 execute_command_line 内在过程来进行系统调用。以前的版本没有标准方法来进行系统调用,但许多编译器都有名为“system”或类似名称的扩展。请查阅编译器的文档。在 Fortran 2003 中,可以调用 C 代码,并且可以从 C 中调用操作系统。

华夏公益教科书