fortran 检验子程序是否起作用

关于Fortran如何 去检验一个子程序是否起了作用?
如果我想在这个子程序运行完后,在终端上输出某些提示语,该怎么写?

在终端上输出提示语,受屏幕大小限制,卷动行数多了就看不到了,即使上卷终端能看到,也无法区分是何时输出的;
建议你写一个专门用来写运行日志到指定文本文件的函数,最好每行提示前面都带系统时间,就不会有上面的各种问题了:

img

基于gpt
在Fortran中可以使用WRITE语句来向终端输出信息。在子程序中,可以在其末尾添加一个WRITE语句,以输出提示信息。例如:

SUBROUTINE mysubroutine(x, y)
  REAL :: x, y
  ! 子程序代码
  WRITE(*,*) "子程序已经运行完毕。"
END SUBROUTINE

其中,WRITE(,)表示向标准输出流(即终端)输出信息。在逗号后面可以添加需要输出的信息,比如上面的提示语

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7484246
  • 除此之外, 这篇博客: Fortran 程序设计 实习02中的 题目要求 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • ​ 现有南海区域内 (115−120˚E,5−10˚N)(115-120˚E,5-10˚N)(115120˚E510˚N) 分辨率为 2.5˚×2.5˚2.5˚\times2.5˚2.5˚×2.5˚850hPa850hPa850hPa 水平风场 UUUVVV 逐月资料,时间为2002年5月和6月。编写程序完成以下要求:

    (1)利用 data 语句赋予数组初始值;

    (2)计算各格点的风速度 ;

    (3)输出2002年5月和6月各格点风速度,输出格式要求:从南向北、自西向东,类似于表格样式,一行为一个纬度的数据。

  • 以下回答由chatgpt基于相关博客总结生成:

    解决方案:

    关于如何检验Fortran子程序是否有效,有几个方法:

    1. 对代码进行编译

    使用Fortran编译器编译程序时,编译器会检查代码错误并生成编译器输出。如果存在语法错误或其他问题,编译过程会失败,提示您哪里出现问题。通过编译,可以检验子程序是否有效。例如以下代码:

    program test implicit none integer :: a, b, c a = 5 b = 7 c = a + b write(,) 'The sum of a and b is:', c end program

    如果存在语法错误,编译器会显示如下信息:

    $ gfortran test.f90 test.f90:5.1:

    integer :: a, b c 1 Error: Syntax error in variable declaration at (1) test.f90:6.1:

    a = 5 1 Error: Syntax error in assignment statement at (1) test.f90:7.1:

    b = 7 1 Error: Syntax error in assignment statement at (1) test.f90:8.1:

    c = a + b 1 Error: Syntax error in assignment statement at (1) test.f90:9.1:

    write(,) 'The sum of a and b is:', c 1 Error: Non-numeric character in statement label at (1) test.f90:4.1:

    program test 1 Error: Invalid character in name at (1) test.f90:13.1:

    end program 1 Error: Invalid character in name at (1)

    1. 使用调试器

    调试器是一种有助于检测和修复程序错误的工具。Fortran中最常用的调试器是GDB。使用调试器可以设置断点、单步执行程序以及查看变量的值等,可以更方便地检验子程序有效性。例如以下代码:

    program test implicit none integer :: a, b, c a = 5 b = 7 c = a + b write(,) 'The sum of a and b is:', c end program

    使用以下命令编译程序:

    $ gfortran -g test.f90

    然后,使用以下命令启动调试器:

    $ gdb ./a.out

    输入“break 9”命令可以在第9行设置断点。使用“run”命令运行程序,程序将在设置断点处停止。然后,使用“step”命令单步执行程序,可以查看程序执行过程中变量的值。

    关于如何在程序运行后在终端输出提示语,可以使用Fortran中的write语句。例如以下代码:

    program test implicit none integer :: a, b, c a = 5 b = 7 c = a + b write(,) 'The sum of a and b is:', c end program

    在程序执行完毕后,在终端上会输出以下内容:

    $ ./test The sum of a and b is: 12

    如果要输出更具体的提示信息,可以使用write语句的“//”运算符进行字符串拼接。例如以下代码:

    program test implicit none integer :: a, b, c a = 5 b = 7 c = a + b write(,) 'The sum of ', a, ' and ', b, ' is: ', c end program

    在程序执行完毕后,在终端上会输出以下内容:

    $ ./test The sum of 5 and 7 is: 12

    总之,使用编译器和调试器可以检验Fortran子程序有效性,使用write语句可以在程序运行后在终端输出提示语。

在子程序中输出特定提示到终端,比如:
write(,) ‘The subroutine XXX is used. ’