SUBROUTINE SETUP_INTERRUPT (INT_CHAR) C C This subroutine is used to setup the interrupt character to C use. This is the character to escape to the Vaxnet command C prompt. All other character are passed to the remote system. C INCLUDE 'COM.INC/NOLIST' CHARACTER*(*) INTERRUPTQ, INT_CHAR CHARACTER*2 CURRENT LOGICAL*1 TEMP(1) PARAMETER (INTERRUPTQ = 1 'Enter the Vaxnet interrupt character (') IF (STARTUP) THEN STATUS = GET_SYMBOL ('INTERRUPT_CHAR', SCRATCH, SIZE) IF (SIZE .EQ. 0) THEN INTERRUPT_CHAR(1) = SOH ! Default to CTRL/A. ELSE CALL CVT_CTRL (%REF(SCRATCH), SIZE) INTERRUPT_CHAR(1) = ICHAR(SCRATCH(1:1)) ENDIF IF (STATUS) RETURN ! Return if symbol found. ELSE IF ( LEN(INT_CHAR) .GT. 0) THEN CALL CVT_CTRL (%REF(INT_CHAR), LEN(INT_CHAR)) INTERRUPT_CHAR(1) = ICHAR(INT_CHAR(1:1)) RETURN ENDIF ENDIF C C Make the printable ASCII interrupt character for question. C IF (INTERRUPT_CHAR(1) .LT. 32) THEN SIZE = 2 ! Two characters to display. CURRENT(1:1) = '^' ! Show it's a control character CURRENT(2:2) = CHAR(INTERRUPT_CHAR(1)+64) ! Make the ASCII. ELSE SIZE = 1 ! One character to display. CURRENT(1:1) = CHAR(INTERRUPT_CHAR(1)) ! Convert integer to ASCII. ENDIF BACKUP = .FALSE. ! Initialize the backup flag. 100 CALL WRITE_USER(INTERRUPTQ//CURRENT//'): ') IF (BATCH_MODE) THEN READ (IN_UNIT,150,END=9900) TEMP 150 FORMAT (1A1) ELSE LOCAL_STATUS = SYS$QIOW(%VAL(LEFN_IN),%VAL(LCHAN_IN), 1 %VAL(IO$_TTYREADALL), 1 LIOSB,,,TEMP(1),%VAL(1),,NOTERM,,) CALL CHECK_STATUS('SETUP_INTERRUPT',LOCAL_STATUS) ENDIF CALL WRITE_USER(SS) ! Output single spacing. IF (TEMP(1) .EQ. ESCAPE .OR. 1 TEMP(1) .EQ. '?') THEN ! Print some help. CALL GET_HELP ('SET INTERRUPT') CALL WRITE_USER(SS) GO TO 100 ELSEIF (TEMP(1) .EQ. '!') THEN ! Backup to previous question. BACKUP = .TRUE. ELSEIF (TEMP(1) .NE. CR) THEN ! If not , copy the INTERRUPT_CHAR(1) = TEMP(1) ! new interrupt character. ENDIF RETURN 9900 CALL FINISH() ! Exit on end of file. END