ADAS Subroutine bapars
SUBROUTINE BAPARS(NDMET,STRING,NPT,BWNOA,LSETA, & PRTWTA,CPRTA,IFAIL) C C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTINE: BAPARS ********************* 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 MODIFICATION OF B8PARS. C C CALLING PROGRAM: ADAS210 C C NOTES: DETECT - BINDING WAVE NUMBER WHICH PRECEED TERM ASSIGNATION C - TERM CONTAINED IN '(..)'. C C C SUBROUTINE: C C INPUT : (I*4) NDMET = MAXIMUM NUMBER OF METASTABLES ALLOWED C INPUT : (C*(*))STRING = 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*9) 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 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) ITYPE = RESOLUTION OF PARENT METASTABLES C 1 - LS RESOLVED C 2 - LSJ RESOLVED C 3 - ARBITRARY RESOLUTION 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 (R*8) TWTA() = (2L+1) VALUE FOR PARENT L QUANTUM NUMBER C (C*1) CTRMA() = PARENT L QUANTUM NUMBER LETTER SET C 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 C AUTHOR: HP SUMMERS C K1/1/57 C JET EXT. 4941 C C DATE: 22/06/92 C C UPDATE: 8/07/93 - HPS ALTERED TO USE XXWORD PARSING ROUTINE C C UPDATE: 11/05/95 - HPS ADD CPRTA TO PARAMETER LIST C C UPDATE: 13/11/95 - DHB EXTENDED ROUTINE TO HANDLE J/ARBITRARY C RESOLVED PARENT METASTABLE INFORMATION C IN THE FIRST DATA CARD STRING. INTRODUCED C ITYPE TO FLAG RESOLUTION IF REQUIRED. C C UPDATE: 21/12/95 - DHB INCREASED SIZE OF IFIRST & ILAST TO 12 IN C LINE WITH INCREASE TO NDMET C C UNIX-IDL PORT: C C VERSION: 1.1 DATE: 22-1-96 C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC) C - PUT UNDER SCCS CONTROL C C VERSION: 1.2 DATE: 28-1-96 C MODIFIED: HPS + WILLIAM OSBORN (TESSELLA SUPPORT SERVICES PLC) C - PUT IN DEFAULT FOR NO PARENTS IN FILE. C C----------------------------------------------------------------------- CHARACTER*9 CPRTA(NDMET) CHARACTER*(*) STRING INTEGER IFAIL, NDMET, NPT LOGICAL LSETA(NDMET) REAL*8 BWNOA(NDMET), PRTWTA(NDMET)