2016-05-03 2 views
1

Я изучаю код и наткнулся на следующую строку:Что делает внутренняя функция «ИНДЕКС» в Fortran 77?

NP = INDEX (PATH, ' ')-1 

«NP» объявлен как целочисленную переменную PATH и в качестве символа. Слово «INDEX» означает функцию Fortran (она отображается в коде).

Что это значит и что он делает? Я искал в Интернете помощь, но ни один из результатов, которые я нашел, не был удовлетворительным.

Я нашел ссылку, в которой говорится, что функция INDEX всегда записывается как «INDEX (STRING, SUBSTRING)», но больше ничего не говорила; Эрго, сомнения все еще преобладают.

Я был бы признателен, если вы объясните, как работает линия кода выше, или если вы укажете меня в сторону некоторых хороших ресурсов.

+0

Вы ограничены FORTRAN 77? Этот стандарт является древним ... Если вы можете, переключитесь на более новую версию. –

+0

Да, я. Прямо сейчас переход на более новую версию не является вариантом. Но я обязательно сделаю этот шаг, когда придет время. Спасибо за совет! –

ответ

1

Поскольку вы специально просили определение для FORTRAN 77, вот соответствующая часть FORTRAN 77 стандарта ...

Cl. 15.10 "Table of Intrinsic Functions":

Примечания к таблице 5:

[ ...]

  1. INDEX(a1,a2) возвращает целочисленное значение, указывающее начальную позицию в строке символов a1 подстроки, идентичной строке a2. Если a2 происходит более одного раза в a1, возвращается исходная позиция первого вхождения.

    Если a2 не встречается в a1, возвращается нулевое значение. Обратите внимание, что ноль возвращается, если LEN(a1) < LEN(a2).

И соответствующая строка из таблицы 5:

|     |     |   |  |   |      | 
|     |     | Number of| Generic| Specific|  Type of  | 
|Intrinsic Function | Definition  | Arguments| Name | Name | Argument | Function | 
|___________________|_________________|__________|________|_________|__________|__________| 
| [...] 
|___________________|_________________|__________|________|_________|__________|__________| 
|     |     |   |  |   |   |   | 
|Index of   | Location of  |  2 |  | INDEX | Character| Integer | 
| a Substring  | Substring a2 |   |  |   |   |   | 
|     | in String a1 |   |  |   |   |   | 
|     | See Note 1  |   |  |   |   |   | 
|___________________|_________________|__________|________|_________|__________|__________| 

Так что ваша линия

NP = INDEX (PATH, ' ')-1 

ищет первое вхождение () в переменной PATH и вычитает 1 со своего положения. Затем он присваивается NP.

+0

Большое вам спасибо, Александр Фогт, за ответ на мой вопрос. Кроме того, спасибо за обмен с вашим источником. = D –

+0

@HugoA.Никакой науки о ракетах. Вы можете найти ссылки на Стандарты в [описании тега] (https://stackoverflow.com/tags/fortran/info). –

+0

Да, я это видел! Большое спасибо! = D –

0

Возвращает позицию подстроки в строке. Не должно быть сложно найти (кроме телефона), это в каждом последующем Fortran.