1 SUBROUTINE PARSEQ (STR, TAGS, MTAG, NTAG)
3 !$$$ SUBPROGRAM DOCUMENTATION BLOCK
6 ! PRGMMR: WOOLLEN ORG: NP20 DATE: 1994-01-06
8 ! ABSTRACT: THIS SUBROUTINE PARSES A STRING CONTAINING ONE OR MORE
9 ! MNEMONICS INTO AN ARRAY OF MNEMONICS. THE MNEMONICS WITHIN THE
10 ! STRING MUST BE SEPARATED BY ONE OR MORE BLANK CHARACTERS.
11 ! THIS SUBROUTINE IS CONSIDERED OBSOLETE, AND APPLICATION CODES
12 ! SHOULD NOW INSTEAD USE THE NEWER BUFR ARCHIVE LIBRARY SUBROUTINE
13 ! PARSTR WHICH IS MORE FLEXIBLE BECAUSE IT ALLOWS FOR OTHER
14 ! SEPARATORS BESIDES JUST THE BLANK CHARACTER.
16 ! PROGRAM HISTORY LOG:
17 ! 1994-01-06 J. WOOLLEN -- ORIGINAL AUTHOR
18 ! 1998-07-08 J. WOOLLEN -- REPLACED CALL TO CRAY LIBRARY ROUTINE
19 ! "ABORT" WITH CALL TO NEW INTERNAL BUFRLIB
21 ! 2003-11-04 J. ATOR -- ADDED DOCUMENTATION
22 ! 2003-11-04 S. BENDER -- ADDED REMARKS/BUFRLIB ROUTINE
24 ! 2003-11-04 D. KEYSER -- UNIFIED/PORTABLE FOR WRF; ADDED HISTORY
25 ! DOCUMENTATION; OUTPUTS MORE COMPLETE
26 ! DIAGNOSTIC INFO WHEN ROUTINE TERMINATES
27 ! ABNORMALLY; CHANGED CALL FROM BORT TO BORT2
28 ! 2007-01-19 J. ATOR -- MARKED AS OBSOLETE AND ADDED PRINT
31 ! USAGE: CALL PARSEQ (STR, TAGS, MTAG, NTAG)
32 ! INPUT ARGUMENT LIST:
33 ! STR - CHARACTER*(*): STRING
34 ! MTAG - INTEGER: MAXIMUM NUMBER OF MNEMONICS TO BE PARSED
37 ! OUTPUT ARGUMENT LIST:
38 ! TAGS - CHARACTER*(*): MTAG-WORD ARRAY OF MNEMONICS (FIRST
40 ! NTAG - INTEGER: NUMBER OF MNEMONICS RETURNED
43 ! THIS ROUTINE CALLS: BORT2
44 ! THIS ROUTINE IS CALLED BY: None
45 ! Normally not called by any application
46 ! programs but it could be.
49 ! LANGUAGE: FORTRAN 77
50 ! MACHINE: PORTABLE TO ALL PLATFORMS
54 CHARACTER ( * ) STR, TAGS (MTAG)
55 CHARACTER(128) BORT_STR1, BORT_STR2
65 !-----------------------------------------------------------------------
66 !-----------------------------------------------------------------------
71 PRINT * , '+++++++++++++++++BUFR ARCHIVE LIBRARY++++++++++++++++++&
74 101 FORMAT(' BUFRLIB: PARSEQ - THIS SUBROUTINE IS NOW OBSOLETE; ', &
75 & 'USE SUBROUTINE PARSTR INSTEAD')
76 PRINT * , '+++++++++++++++++BUFR ARCHIVE LIBRARY++++++++++++++++++&
85 LTAG = LEN (TAGS (1) )
86 IF (LSTR.GT.80) GOTO 900
93 IF (.NOT.WORD.AND.STR (I:I) .NE.' ') THEN
95 IF (NTAG.GT.MTAG) GOTO 901
99 IF (WORD.AND.STR (I:I) .EQ.' ') NCHR = 0
100 WORD = STR (I:I) .NE.' '
104 IF (NCHR.GT.LTAG) GOTO 902
105 TAGS (NTAG) (NCHR:NCHR) = STR (I:I)
114 900 WRITE (BORT_STR1, '("BUFRLIB: PARSEQ - INPUT STRING (",A,") HAS ")&
116 WRITE (BORT_STR2, '(18X,"LENGTH (",I4,"), > LIMIT OF 80 CHAR.")') &
118 CALL BORT2 (BORT_STR1, BORT_STR2)
119 901 WRITE (BORT_STR1, '("BUFRLIB: PARSEQ - INPUT STRING (",A,") '// &
120 'CONTAINS",I4)') STR, NTAG
121 WRITE (BORT_STR2, '(18X,"MNEMONICS, THIS EXCEEDS THE LIMIT {",I4,'&
122 &//'" - THIRD (INPUT) ARGUMENT}")') MTAG
123 CALL BORT2 (BORT_STR1, BORT_STR2)
124 902 WRITE (BORT_STR1, '("BUFRLIB: PARSEQ - INPUT STRING (",A,") ")') &
126 WRITE (BORT_STR2, '(18X,"CONTAINS A PARSED MNEMONIC WITH LENGTH '/&
127 &/'EXCEEDING THE MAXIMIM OF",I4," CHARACTERS")') LTAG
128 CALL BORT2 (BORT_STR1, BORT_STR2)
129 END SUBROUTINE PARSEQ