INDEX is a search function; it takes two character arguments and returns an integer result. INDEX(S1, S2) searches for the character-string S2 in another string S1, which is usually longer. If S2 is present in S1 the function returns the character position at which it finds starts. If there is no match (or S1 is shorter than S2) then it returns the value zero. For example:
CHARACTER*20 SPELL SPELL = 'ABRACADABRA' K = INDEX(SPELL, 'RA')Here K will be set to 3 because this is the position of the first occurrence of the string 'RA'. To find the second occurrence it is necessary to restart the search at the next character in the main string, for example:
L = INDEX(SPELL(K+1:), 'RA')
The INDEX function is often useful when manipulating character
information. Suppose, for example, we have an string NAME
containing the a person's surname and initials, e.g.
Mozart,W.A
The name can be reformatted to put the initials before the surname
and omit the comma like this:
CHARACTER NAME*25, PERSON*25 *... KCOMMA = INDEX(NAME, ',') KSPACE = INDEX(NAME, ' ') PERSON = NAME(KCOMMA+1:KSPACE-1) // NAME(1:KCOMMA-1)Then PERSON will contain the string 'W.A.Mozart' (with blanks appended to the length of 25). Note that a separate variable, PERSON, was necessary because of the rule about overlapping strings in assignments.