I've written a module containing several routines to manipulate words in
strings, where a word is usually defined as blank delimited, although a
couple of the routines allow any given character as the delimiter.
It will do what you want, but may not be any better than your parse.f
Function WORDS(string) will return the number of blank-delimited words,
17 in the case of your example, and Subroutine WordParse will parse a
string into an array of strings, each containing a 'word' - an arbitrary
delimiter can be specified.
You can get the module from
http://www.hef.ru.nl/~wes/programs.html
Good luck,
Wes
On Wed, 2011-03-16 at 09:28 -0600, bennie blackwell wrote:
> I have a need to parse a character string of chemical species to 1)
> determine the number of species and then 2) read the individual
> species as character variables. An example might be the space
> delimited record for the following 17 species:
>
>
>
> N2 C O O2 CO2 CO N NO NO2 CN C3 C2 C2N2 C5 C4 C4N2 C20
>
>
>
> I have an old f77 program (parse.f) written by a colleague in 1988 and
> modified by myself in 1991 that allows a variety of delimiters,
> including space, comma, <, =, and >. I could run parse.f through a F77
> to F90 converter and move forward. However, I am looking for a more
> modern F90 approach. Is there a better approach than parsing each
> character individually, checking to see if the single character
> matches the allowable delimiter characters and mucking around in
> general.
>
>
> Thanks,
>
> Ben Blackwell
>
> Blackwell Consulting
>
> PO Box 2879
>
> Corrales, NM 87048
>
> 505-897-5090
>
> (fax) 505-890-4992
>
> [log in to unmask]
>
--
Dr. W. J. Metzger Experimental High Energy Physics Group
tel. +31-24-3653127 Faculty of Science
+31-24-3652099 (secr.) Radboud University Nijmegen
fax. +31-24-3652191 Heyendaalseweg 135
6525 AJ Nijmegen, The Netherlands
e-mail: [log in to unmask] or [log in to unmask]
http://home.cern.ch/metzger/ or http://www.hef.ru.nl/~wes
|