C+ C NAME: C iwhitespace C PURPOSE: C Converts tabs and multiple spaces to single spaces C CATEGORY: C String manipulation C CALLING SEQUENCE: function iwhitespace(cStr) C INPUTS: C cStr character*(*) string to be processed C OUTPUTS: C cStr character*(*) modified string C iwhitespace integer length non-trivial part of output string C SEE ALSO: C uppercase, lowercase, itrim, icompress, bCompareStr C RESTRICTIONS: C The string is only tested for space, tab and null C PROCEDURE: C Each character in the string is converted separately. C MODIFICATION HISTORY: C JAN-1992, Paul Hick (UCSD); check for NULL added (some system procedures C pad strings with NULs instead of blanks) C- character cStr*(*) integer NUL / 0/ integer TAB / 9/ integer SP /32/ logical bNoChar logical bSpace bNoChar(I) = cStr(I:I) .eq. char(SP) .or. cStr(I:I) .eq. char(NUL) .or. cStr(I:I) .eq. char(TAB) bSpace = .FALSE. L = len(cStr) J = 1 do I=1,L if (.not. bNoChar(I)) then cStr(J:J) = cStr(I:I) ! Copy valid chars J = J+1 bSpace = .TRUE. else if (bNoChar(I) .and. bSpace) then cStr(J:J) = char(SP) J = J+1 bSpace = .FALSE. end if end do if (J .le. L) cStr(J:L) = ' ' J = J-1 if (cStr(J:J) .eq. char(SP)) J = J-1 iwhitespace = J return end