C C $Id: wdjoin.F,v 1.2 1998/07/16 16:40:49 jjv5 Exp arjan $ C C------------------------------------------------------------------------ SUBROUTINE WDJOIN(STRING,IEND,SEP,IERROR) C C SEARCHES STRING(1:IEND) FOR WORDS THAT ARE SEPARATED BY THE C ONE-CHARACTER SYMBOL SEP, AND MAKES A CONTIGUOUS BLOCK OF C CHARACTERS. FOR EXAMPLE, IF SEP IS AN EQUALS SIGN '=', THEN C THE SUBSTRING 'TMAX = 9999.0' WOULD BECOME 'TMAX=9999.0' C CHARACTER STRING*(*),SEP*1 C C FIRST PASS: MOVE EACH SEP SO THAT IT TOUCHES WHATEVER IS TO THE C LEFT OF IT. C IERROR = 0 DO 20 I=1,IEND IF(STRING(I:I).EQ.SEP)THEN STRING(I:I) = ' ' DO 10 J=I,2,-1 IF(STRING(J-1:J-1).NE.' ')THEN STRING(J:J) = SEP GO TO 20 ENDIF 10 CONTINUE C C IF WE REACH THIS POINT, THEN THERE WERE NOTHING BUT BLANKS TO C THE LEFT OF SEP. C IERROR = 1 RETURN ENDIF 20 CONTINUE C C SECOND PASS: MOVE ALL WORDS TO THE RIGHT OF ANY SEP SO THAT THEY C TOUCH THE SEP. C DO 40 I=1,IEND IF(STRING(I:I).EQ.SEP)THEN ISTART = I+1 CALL RDWORD(STRING,ISTART,ISTOP) IF(ISTART.EQ.0)THEN IERROR = 1 RETURN ELSEIF(INDEX(STRING(ISTART:ISTOP),SEP).NE.0)THEN IERROR = 1 RETURN ENDIF ILAST = ISTOP - ISTART + I+1 STRING(I+1:ILAST) = STRING(ISTART:ISTOP) IF(ILAST.LT.ISTOP)THEN DO 30 J=ILAST+1,ISTOP STRING(J:J) = ' ' 30 CONTINUE ENDIF ENDIF 40 CONTINUE RETURN END