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