如何使用 gfortran 中的调用系统在“<<EOF ... EOF”之间调用代码?

How can I invoke code between '<<EOF... EOF' using call system in gfortran?

我想使用“调用系统”在“<

gnuplot -persist <<EOF
set title "grafico"
plot "salida.txt"
EOF

"salida.txt"

1  1
2  2
3  3
4  4
5  5
gnuplot -persist -e "set title 'grafico'; plot 'salida.txt'"
program gnuplot
    implicit none
    character(len=1000) :: command 

    command = "gnuplot -persist <<EOF"//new_line('A')//&
              "set title 'grafico'"//new_line('A')//&
              "plot 'salida.txt'"//new_line('A')//&
              "EOF"

    ! system() is a GNU extension. This is more portable:
    call EXECUTE_COMMAND_LINE(command)
end program

注意字符串连接的 // 和行继续的 &

如果您不介意使用 GNU 扩展,请使用 -fbackslash 标志进行编译,如果您愿意,可以这样编写字符串:

    command = "gnuplot -persist <<EOF\n&
              &set title 'grafico'\n&
              &plot 'salida.txt'\n&
              &EOF"

请注意 \n 而不是 new_line('A')。另请注意,这不是连接字符串,而是单个字符串。像以前一样有一个 & 用于行继续,但如果字符串是上一行字符串的延续,则在行的开头也有一个 &