簡體   English   中英

Fortran 字符串與 .LT 的比較

[英]Fortran string comparison with .LT

我必須修復一個使用 Fortran、C 和 C++ 的非常古老的大型金融系統中的錯誤。 我主要是一個 C++ 人,不知道 abt Fortran! 我在理解 Fortran 語句時遇到問題,我認為該語句在我們的系統中引起了令人討厭的錯誤。...

if (instructions .lt. ' ')  then
    instructions = ' '
endif

instructions是一個文本/字符串。

上面的代碼表現如何,它是否只比較第一個字符(至少我的測試表明)? 基本上這是一個生產問題,我正在嘗試為我的客戶提供解決方法。 一個正確的 Fortran 代碼來比較提交的字符串也可以......

提前致謝

 if (instructions .lt. ' ')  then 

.lt。 Fortram 的意思是“小於”,因此,如果instructions “小於”一個空格,請將其替換為一個空格。 它會考慮整個字符串,但由於右側只是一個空格,因此只需要查看instructions的第一個字符; 如果第一個字符小於一個空格(即,它是一個控制字符,如果我們談論的是 ASCII),那么它小於; 如果第一個字符是空格或更大(即可打印字符),則它不小於。

不幸的是,經過驗證的答案是不正確的:比較將遵循“指令”的全長,即如果指令的第一個字符是空格,則第二個字符可能仍包含一個小於(隱式)空格的字符,因為第二個操作數將用空格填充到“指令”的長度。 在這種情況下,比較仍將評估為 .true..

從所陳述的問題中不可能得到正確的代碼答案,因為需要比較的意圖不清楚。

人們可以將問題解釋為全長比較就足夠了,發布的代碼就是這樣做的。

暫無
暫無

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

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