Сравнение строк Фортрана с .LT - PullRequest
0 голосов
/ 23 августа 2010

Мне нужно исправить ошибку в очень старой и крупной финансовой системе, которая использует Fortran, C и C ++. Я в основном парень на C ++, понятия не имею о Фортране! У меня проблема с пониманием оператора Fortran, который, как мне кажется, вызвал неприятную ошибку в наших системах ....

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

instructions - это текст / строка.

Как ведет себя приведенный выше код, сравнивает ли он только первый символ (по крайней мере, мои тесты предлагают)? По сути, это проблема производства, я пытаюсь обойти своих клиентов. Правильный код Фортрана для сравнения поданных строк также подойдет ...

Заранее спасибо

1 Ответ

2 голосов
/ 23 августа 2010
 if (instructions .lt. ' ')  then 

.lt. is Fortram означает «меньше чем», поэтому, если instructions «меньше» пробела, замените его пробелом. Он будет рассматривать всю строку, но, поскольку правая часть - это всего лишь один пробел, нужно взглянуть только на первый символ instructions; Если первый символ меньше пробела (то есть это control-char, если мы говорим об ASCII), то он меньше; если первый символ представляет собой пробел или больше (то есть печатный символ), то он не меньше чем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...