簡體   English   中英

讀取語句中的Fortran格式字符串

[英]Fortran format string in read statement

我在使用Fortran程序中的read語句接受格式字符串時遇到了麻煩,該程序由gfortran在OS X下編譯。

read語句和字符串構成兩行代碼,我收到的各種錯誤消息似乎取決於這兩個語句是如何並行使用的(另外,以防萬一,要讀入的數組的聲明) :

read(10, format) ( velmatt(n,row,i),m=1,3 )

format = "(11x,' x   ',a3,2x,i8,6x,3f11.6)"

這會導致錯誤,

Fortran runtime error: Missing initial left parenthesis in format

我必須補充說,我還嘗試了替代格式語句的一些替代語法,並且它是由read函數調用的,因為推薦的確切形式似乎有所不同(我是fortran的新手)。 以下是一些替代方案,

read(10, 11) ( velmatt(n,row,i),m=1,3 )

11 format(11x,' x   ',a3,2x,i8,6x,3f11.6)

甚至

read(10, 'format') ( velmatt(n,row,i),m=1,3 )

format = (11x,' x   ',a3,2x,i8,6x,3f11.6)

其中至少有一個出錯

Fortran runtime error: Constant string in input format

其中一個也給出了這個錯誤,

Missing format label at (1) 

我讀到格式語句應該是用引號括起來的parantheses,但在這種情況下我的第一種方法應該有效嗎? 因此,錯誤消息似乎是彼此互補的,還有一些我不知道的東西......

(我還不清楚在fortran中使用正確單位數的重要性,如果這是問題的一部分或全部,那就很抱歉)

無論如何,以上都沒有(加上我嘗試的更多)滿足編譯器。

您發布的示例中,只有一個

read (10,11)

是正確的。 在第一個中,您要求READ在名為FORMAT的變量中查找格式,我假設您之前聲明為CHARACTER。 如果您先分配了格式,那么它可能會有效,但這不是推薦的方法。 但實際上,該變量未初始化且沒有正確的值。

您可以像使用(10,11)情況一樣使用帶標簽的格式,也可以將格式本身放在READ中,如下所示:

read(10, "(11x,' x   ',a3,2x,i8,6x,3f11.6)") ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM