INTEGER*2 FUNCTION SLASH ( string, istart, iend ) C CHARACTER*80 string C INTEGER*2 istart, iend INTEGER*2 length C C Executable begins here. C length = INDEX ( string(istart:iend), '/' ) ! Look for slash. IF ( length .LE. 0 ) THEN ! No slash. SLASH = 0 ! Flag it. ELSE ! Found slash. SLASH = LSTCHR ( istart, length ) ! Rejustify location. END IF ! RETURN END INTEGER*2 FUNCTION COMMA ( string, istart, iend ) C CHARACTER*80 string C INTEGER*2 istart, iend INTEGER*2 length C C Executable begins here. C length = INDEX ( string(istart:iend), ',' ) ! Look for comma. IF ( length .LE. 0 ) THEN ! No comma. COMMA = 0 ! Flag it. ELSE ! Found comma. COMMA = LSTCHR ( istart, length ) ! Rejustify location. END IF ! RETURN END INTEGER*2 FUNCTION SPACE ( string, istart, iend ) C CHARACTER*80 string C INTEGER*2 istart, iend INTEGER*2 length C C Executable begins here. C length = INDEX ( string(istart:iend), ' ' ) IF ( length .LE. 0 ) THEN SPACE = 0 ELSE SPACE = LSTCHR ( istart, length ) END IF RETURN END INTEGER*2 FUNCTION COLON ( string, istart, iend ) C CHARACTER*80 string C INTEGER*2 istart, iend INTEGER*2 length C C Executable begins here. C length = INDEX ( string(istart:iend), ':' ) IF ( length .LE. 0 ) THEN COLON = 0 ELSE COLON = LSTCHR ( istart, length ) END IF RETURN END INTEGER*2 FUNCTION EQUALS ( string, istart, iend ) C CHARACTER*80 string C INTEGER*2 istart, iend INTEGER*2 length C C Executable begins here. C length = INDEX ( string(istart:iend), '=' ) IF ( length .LE. 0 ) THEN EQUALS = 0 ELSE EQUALS = LSTCHR ( istart, length ) END IF RETURN END INTEGER*2 FUNCTION LSTCHR ( iend, length ) C INTEGER*2 iend, length C C Executable begins here. C LSTCHR = iend + length - 1 ! Point last character. RETURN END INTEGER*2 FUNCTION STRLEN ( istart, iend ) C INTEGER*2 istart, iend C C Executable begins here. C STRLEN = iend - istart + 1 RETURN END SUBROUTINE CONCAT ( str1, istart, iend, + iposs, str2, istrt, ind ) C CHARACTER*80 str1, str2 C INTEGER*2 istart, iend, iposs, istrt, ind INTEGER*2 len1, len2 INTEGER*2 STRLEN EXTERNAL STRLEN C C Executable begins here. C len1 = STRLEN ( iposs, iend ) ! len2 = STRLEN ( istrt, ind ) ! str1(istart+len2:len1+istart+len2) = ! + str1(iposs:iend ) ! str1(istart:len2+istart-1) = ! + str2(istrt:ind) ! iend = len1 + istart + len2 RETURN END INTEGER*2 FUNCTION RGTBRC ( string, istart, iend ) C CHARACTER*80 string C INTEGER*2 istart, iend INTEGER*2 length C C Executable begins here. C length = INDEX ( string(istart:iend), ']' ) ! Look for slash. IF ( length .LE. 0 ) THEN ! No slash. RGTBRC = 0 ! Flag it. ELSE ! Found slash. RGTBRC = LSTCHR ( istart, length ) ! Rejustify location. END IF ! RETURN END INTEGER*2 FUNCTION LFTBRC ( string, istart, iend ) C CHARACTER*80 string C INTEGER*2 istart, iend INTEGER*2 length C C Executable begins here. C length = INDEX ( string(istart:iend), '[' ) ! Look for slash. IF ( length .LE. 0 ) THEN ! No slash. LFTBRC = 0 ! Flag it. ELSE ! Found slash. LFTBRC = LSTCHR ( istart, length ) ! Rejustify location. END IF ! RETURN END SUBROUTINE BLNKFL ( string, istart, iend ) C CHARACTER*80 string CHARACTER*1 blnk C INTEGER*2 istart, iend INTEGER*2 ibegin C DATA blnk/' '/ C C Executable begins here. C ibegin = istart + 1 IF ( ibegin .LE. iend ) THEN DO 100 i = ibegin, iend string(i:i) = blnk 100 CONTINUE END IF RETURN END