	SUBROUTINE SCR_NEXTWD(DIRECT)
C	---- MOVE TO THE NEXT WORD DEPENDING ON LOGICAL DIRECTION
C	----	(.TRUE. = FORWARDS)
	LOGICAL*1 DIRECT, NONBLANK
	INCLUDE 'SCREEN.FOR'
C
	NONBLANK = .FALSE.
	IF(DIRECT)THEN
	  DO I=ICOL+1,80
		IF(.NOT.LOGSCREEN(ILIN,I))THEN

C		  ---- NO SPACE FOUND, GO TO NEXT FIELD IF THERE IS ONE
		  ILASTCOL = I-1
		  ILASTLIN = ILIN
		  CALL SCR_NEXTFLD(DIRECT)
C		  --- SEE IF THERE IS A NEW FIELD, IS SO MOVE TO IT
		  IF (ILIN .GT. ILASTLIN) THEN
C			--- OKAY TO MOVE TO NEXT FIELD ON NEXT LINE
		  ELSE IF (ICOL .GT. ILASTCOL) THEN
C			--- OKAY TO MOVE TO NEXT FIELD ON SAME LINE
		  ELSE
			ICOL = ILASTCOL	!NO MORE FIELDS, STAY PUT
			ILIN = ILASTLIN	
		  ENDIF
		  GOTO 110
		ENDIF
		IF(CHRSCREEN(ILIN)(I:I).NE.' ') NONBLANK = .TRUE.
		IF(NONBLANK .AND. CHRSCREEN(ILIN)(I:I).EQ.' ')GOTO 100
	  ENDDO
	 GOTO 100
	ENDIF
C
	DO I=ICOL-1,1,-1
		IF(.NOT.LOGSCREEN(ILIN,I))THEN

C		  ---- NO SPACE FOUND, GO TO NEXT FIELD IF THERE IS ONE
		  ILASTCOL = I+1
		  ILASTLIN = ILIN
		  CALL SCR_EOL(DIRECT)
		  IF (ILIN .EQ. ILASTLIN .AND. ILASTCOL.LE. ICOL) THEN
			  ICOL = ILASTCOL
			  ILIN = ILASTLIN
			  GOTO 110	!NO MOVE FIELDS, MOVE TO BEGINNING 
		  ELSE 
			  RETURN	!STAY AT EOL OF EARLIER FIELD
		  ENDIF
		ENDIF
		IF(CHRSCREEN(ILIN)(I:I).NE.' ') NONBLANK = .TRUE.
		IF(NONBLANK .AND. CHRSCREEN(ILIN)(I:I).EQ.' ')GOTO 100
	ENDDO
C
100	ICOL=I
110	ISTAT=LIB$SET_CURSOR(ILIN,ICOL)
		IF(.NOT.ISTAT)CALL LIB$STOP(%VAL(ISTAT))
	RETURN
	END
