在fortran程序中给出字符串参数

时间:2014-05-18 17:54:44

标签: string file input arguments fortran

我有fortran代码

    REAL E(5000),R(5000),B,C,D,F,H
       INTEGER Y(5000)
       OPEN(UNIT=15,FILE='INPUT.dat',STATUS='OLD')
       DO 40, I=1,4095
       READ(15,*) E(I),Y(I)
       R(I)=Y(I)*1.
 40    ENDDO
       CLOSE(15)
       OPEN(UNIT=25,FILE='OUTPUT.dat',STATUS='UNKNOWN')
       DO 60 I=1,300
       WRITE(25,*) E(I),R(I)
 60    ENDDO
       DO 50 K=300,1325
       J=K
       B=1.07
       C=0.93
       D=R(K+1)/R(K)
          IF(D.GE.B.OR.D.LE.C)THEN
C           F=(R(K-6)+R(K-5)+R(K-4))/3.
C           H=(R(K+6)+R(K+5)+R(K+4))/3.
C           R(J+1)=(F+H)/2
          R(J+1)=(R(K-2)+R(K-1)+R(K))/3.
          ENDIF
       WRITE(25,*) E(J+1),R(J+1)
 50    ENDDO
       DO 70 I=1327,4095
       WRITE(25,*) E(I),R(I)
 70    ENDDO
       CLOSE(25)
       STOP
       END

该程序将文件INPUT.dat作为输入,处理它并写入文件OUTPUT.dat。在60,50和70循环中还有一些数字:300和1325.我想要做的是编译代码一次然后使用

执行它
code(INPUT, OUTPUT, 300, 1325)

但是我不知道如何(或者如果这是支持的)在fortran中执行此操作。是否有可能完成?

修改

正如@High Performance Mark所建议的,@ M.S.B。我看了get_command_argument(),但我不知道如何使用它。例如,使用它的wiki示例如下

program test_get_command_argument
  integer :: i
  character(len=32) :: arg

  i = 0
  do
    call get_command_argument(i, arg)
    if (len_trim(arg) == 0) exit

    write (*,*) trim(arg)
    i = i+1
  end do
end program

我想要有接受参数的程序:字符串和整数。例如,在上面的例子中我想做

test_get_command_argument("INPUT", "OUTPUT", 300, 1325)

这样的事情可能吗?

0 个答案:

没有答案