[英]pass FORTRAN READ arguments into a string
我有一個包含要讀取的變量名稱的字符串,我想將此字符串傳遞給read函數。 這可以讓我更改讀取的變量名,而只需將向量更改為變量名即可。 例如:
PROGRAM test
implicit none
integer :: no, age
character(len=20) :: myname, vars
vars='no, myname, age'
read(*, '(i4,a20,i4)') vars
print*, no, myname, age
END PROGRAM test
這可能嗎?
您可以查看“ NAMELIST” I / O,這也許可以滿足您的需求。 通常,名稱列表IO會遇到各種問題,而且人們無論如何都會訴諸於編寫自己的自定義IO例程。 但是,只要滿足您的需求,它就很容易使用。 例如
program nmltest
implicit none
real :: x
integer :: y
namelist /mynml/ x, y
x = 4711
y = 42
write(*, mynml)
end program nmltest
Fortran是一種編譯語言。 READ
語句很難(到不可能)在運行時從字符串列表中提取變量地址。 這就是為什么,如janneb指出,Fortran語言提供了NAMELIST
這成為自Fortran 90的語言標准(一些Fortran 77的也對名稱列表的支持,但它是非標准和不兼容是編譯器之間的擔保)的一部分運營商。 它的用法如下:
...
NAMELIST /vars/ no, age, myname
...
READ(*, NML=vars)
...
輸入應該是這樣的:
! Input can contain comments starting with exclamation marks
! And blank lines too
&vars
no = 12,
myname = 'sometext'/
但是, NAMELIST
無法使用格式化的輸入/輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.