我有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)
这样的事情可能吗?