ADAS Subroutine xxpars
subroutine xxpars( ndmet , strng1 , npt , bwnoa , lseta ,
& prtwta , cprta , ifail , itype)
c
c-----------------------------------------------------------------------
c
c ****************** fortran77 subroutine: xxpars *********************
c
c purpose: to analyse the tail character string of the first line of
c a specific ion file into binding wave numbers for different
c parents and statistical weights for the parents.
c
c unified version of b9pars, bapars & g5pars and a
c replacement for these subroutines.
c
c calling program: various
c
c
c subroutine:
c
c input : (i*4) ndmet = maximum number of metastables allowed
c input : (c*(*))strng1 = string to be parsed
c
c output: (i*4) npt = number of binding wave numbers detected
c output: (l*4) lseta() = .true. - parent term set for this w.no.
c .false. - parent term not set for w.no.
c output: (l*4) lfnd = .true. - l quantum number present in
c string
c .false. - no l quantum number detected
c output: (r*8) bwnoa() = binding wave numbers
c output: (r*8) prtwta() = parent statistical weights
c output: (c*(*))cprta() = parent name in brackets
c output: (i*4) ifail = 0 - subroutine concludes correctly
c 1 - fault detected in subroutine
c 2 - single ionisation potential detected
c output: (i*4) itype = resolution of parent metastables
c 1 - ls resolved
c 2 - lsj resolved
c 3 - arbitrary resolution
c
c (i*4) maxwrd = maximum number of words sought initially
c initially, finally number actually found
c (i*4) nfirst = first word to be extracted from string
c (i*4) ifirst() = index of first char. of word () in string
c (i*4) ilast() = index of last char. of word () in string
c (i*4) iwords = number of words found in string
c (i*4) iabt = failure number from r8fctn
c (i*4) nchar = number of characters in substring
c (i*4) i = general use
c (i*4) j = general use
c (i*4) k = general use
c (i*4) ic = general use
c (i*4) itp = flag for incompatible types
c (i*4) ityp = copy of current itype
c (i*4) kmrk = position marker in the string for parent
c l quantum number
c (i*4) itypea() = resolution of each parent
c (r*8) twta() = (2L+1) value for parent L quantum number
c (c*1) ctrma() = parent L quantum number letter set
c (inclusive convention for 'l'=j in set of
c character values for 'l' and extended
c ctrma, twta vectors)
c routines:
c routine source brief description
c -------------------------------------------------------------
c i4unit adas fetch unit number for output of messages
c r8fctn adas converts from character to real variable
c i4fctn adas converts from char. to integer variable
c xxword adas parses a string into separate words
c for ' ()<>{}' delimiters
c xxslen adas finds the length of a string excluding
c leading and trailing blanks
c xxrmve adas removes a character from a string
c xxcase adas change string to upper or lower case
C
c
c author: hp summers
c JA7.08, University of Strathclyde
c Tel: 0141-548-4196
c
c date: 30/01/03
c
c update: 22/11/04 - hp summers - corrected error in write back of
c cprta strings for the unified itype
c
c update: 17/05/07 - ad whiteford - Updated comments as part of
C subroutine documentation
C procedure.
c
c-----------------------------------------------------------------------
CHARACTER*(*) CPRTA(NDMET), STRNG1
INTEGER IFAIL, ITYPE, NDMET, NPT
LOGICAL LSETA(NDMET)
REAL*8 BWNOA(NDMET), PRTWTA(NDMET)