	SUBROUTINE SCR_PUTCHR(LOGMODE,ICHR)
C	---- PUTS CHARACTER ON THE SCREEN IN EITHER EXCHANGE MODE OR INSERT
C	----	MODE DEPENDING ON THE VALUE OF LOGMODE
C	----	(.TRUE. = EXCHANGE)

	INCLUDE 'SCREEN.FOR'
	CHARACTER*1 CHR,CHRLINE*80
	CHR=CHAR(ICHR)
C
	IF(LOGMODE)THEN		!EXCHANGE MODE
		ISTAT=LIB$PUT_SCREEN(CHR(1:),ILIN,ICOL,IBOLD)
		IF(.NOT.ISTAT)CALL LIB$STOP(%VAL(ISTAT))
		CHRSCREEN(ILIN)(ICOL:ICOL)=CHR(1:)
		GOTO 1000
	ENDIF
C
	DO I=ICOL,80		!INSERT MODE
		IF(LOGSCREEN(ILIN,I))THEN
			CHRLINE(I:I)=CHRSCREEN(ILIN)(I:I)
		ELSE
			GOTO 10
		ENDIF
	ENDDO
C
10	CHRSCREEN(ILIN)(ICOL+1:I-1)=CHRLINE(ICOL:I-2)
	CHRSCREEN(ILIN)(ICOL:ICOL)=CHR(1:1)
	ISTAT=LIB$PUT_SCREEN(CHRSCREEN(ILIN)(ICOL:I-1),
     &			ILIN,ICOL,IBOLD)
		IF(.NOT.ISTAT)CALL LIB$STOP(%VAL(ISTAT))

1000	IF(LOGSCREEN(ILIN,ICOL+1))ICOL=ICOL+1
	ISTAT=LIB$SET_CURSOR(ILIN,ICOL)
		IF(.NOT.ISTAT)CALL LIB$STOP(%VAL(ISTAT))
	RETURN
	END
