C REDO COMMAND PROGRAM C MICHAEL A. SAVERINO 10/13/82 C----------------------------------------------------------------------------- C THIS PROGRAM READS IN A LOCAL SYMBOL FROM THE REDO COMMAND LINE C INTERPRETER, ENABLES THE USER TO EDIT THE CHARACTER STRING ASSOCIATED C WITH THE SYMBOL, AND RETURNS THE SYMBOL TO THE REDO COMMAND LINE INTERPRETER. C IF THE USER WISHES NOT TO EDIT THE STRING, JUST HIT IN RESPONSE TO C THE Edit? PROMPT. IF THE USER WISHES TO EDIT THE STRING, TYPE THE OLD C STRING AND THE NEW STRING SEPERATED BY A "|". (i.e. IF THE COMMAND C SHOW USERS NEEDS TO BE CHANGED TO SHOW SYSTEM, THEN THE USER MUST TYPE C USERS|SYSTEM IN RESPONSE TO THE Edit? PROMPT). THE NEW COMMAND WILL BE C DISPLAYED AND YOU WILL BE PROMPTED FOR FURHTER CHANGES BEFORE EXECUTION. C HIT RETURN IN RESPONSE TO THE Edit? PROMPT IF NO FURHTER CHANGES ARE REQUIRED C----------------------------------------------------------------------------- CHARACTER*255 IN_LINE,OUT_LINE,CHG_BUF INTEGER BUF,STR$TRIM,LEN,LENCHG,STR$POSITION,DIV,CHK_OLD_STR * ,STR$REPLACE CALL LIB$GET_SYMBOL('PREVIOUS_LINE',IN_LINE,BUF)! READ IN PREVIOUS SYM. 999 TYPE*,'Command: '//IN_LINE(1:BUF) 99 CALL LIB$GET_FOREIGN(CHG_BUF,'Edit? ',LENCHG) !PROMPT FOR EDIT STRING IF (LENCHG.EQ.0)THEN !EXIT OF NO CHANGES OUT_LINE=IN_LINE ELSE DIV=STR$POSITION(CHG_BUF,'|') !PARSE CHANGE STRING IF (DIV.EQ.0)THEN PRINT*,'Change command syntax error!!!' GOTO 99 ENDIF CHK_OLD_STR=STR$POSITION(IN_LINE(1:BUF),CHG_BUF(1:DIV-1)) IF(CHK_OLD_STR.EQ.0)THEN PRINT*,'Change string not found!!!' GOTO 99 !ERROR IF NO MATCH ENDIF CALL STR$REPLACE(IN_LINE,IN_LINE,CHK_OLD_STR, * CHK_OLD_STR+DIV-2,CHG_BUF(DIV+1:LENCHG))!SUBSTITUTE STRINGS CALL STR$TRIM(IN_LINE,IN_LINE,BUF) GOTO 999 ENDIF CALL STR$TRIM(OUT_LINE,OUT_LINE,LEN) CALL LIB$SET_SYMBOL('CURRENT_LINE',OUT_LINE(1:LEN)) CALL EXIT !SET NEW STRING TO END !CURRENT SYMBOL