	SUBROUTINE SETCHR(ISTATS,ERRFLG)
	IMPLICIT INTEGER (A-Z)
	INTEGER*2 IOSB(4)
	PARAMETER IO$_SETCHAR='1A'X
	DIMENSION PRIBUF(14),NSTAT(2)
	CHARACTER*53 CHRPRI
	CHARACTER*15 LOGNAM
	EQUIVALENCE (CHRPRI,PRIBUF)
	DATA ORGSTS/0/
	RSTAT=0
	SETC=1
	GSTAT=0
10	ERRFLG=SYS$TRNLOG('TT',%REF(LOGLEN),%DESCR(LOGNAM),%REF(TAB),
     1			 %REF(ACC),%VAL(3))
	IF((ERRFLG.AND.1).NE.1) RETURN
	ERRFLG=SYS$GETDEV(%DESCR(LOGNAM),%REF(PRILEN),%DESCR(CHRPRI),
     1			 %VAL(0),%VAL(0))
	IF((ERRFLG.AND.1).NE.1) RETURN
	ERRFLG=SYS$ASSIGN(%DESCR(LOGNAM),ICHN,,)
	IF((ERRFLG.AND.1).NE.1) RETURN
	IF(GSTAT.EQ.0) GOTO 20
	ORGSTS=PRIBUF(3)
	RETURN
20	NSTAT(1)=PRIBUF(2)
	IF(SETC.EQ.1) NSTAT(2)=PRIBUF(3).OR.ISTATS
	IF(SETC.EQ.0) NSTAT(2)=PRIBUF(3).AND.('FFFFFFFF'X.XOR.ISTATS)
	IF(RSTAT.EQ.1) NSTAT(2)=ORGSTS
	ERRFLG=SYS$QIOW(,%VAL(ICHN),%VAL(IO$_SETCHAR),IOSB,,,
     1			 %REF(NSTAT),,,,,)
	IF((ERRFLG.AND.1).NE.1) RETURN
	ERRFLG=SYS$DASSGN(%VAL(ICHN))
	RETURN
	ENTRY GETCHR(ERRFLG)
	GSTAT=1
	GOTO 10
	ENTRY CLRCHR(ISTATS,ERRFLG)
	SETC=0
	GSTAT=0
	RSTAT=0
	GOTO 10
	ENTRY RESCHR(ERRFLG)
	RSTAT=1
	GSTAT=0
	GOTO 10
	END
