| Yes, SET HOST/LOG 0 is very useful, but then you have a lot of editting
to get rid of some of the junk characters like null, or escape sequences
which don't come out too well when you are doing a hardcopy.
How could you extend .0 to take in the SYS$OUTPUT stream? I would be
interested in ideas.
What follows is my attempt to improve things for my own (ab)usage of the
system:
$ status_process = 'f$verify(0)'
$ on control then continue
$ status_message = f$environment("message")
$ status_image = f$environment("verify_image")
$ set message /nofacility /notext /noidentification /noseverity
$! allow P1 to spell out a logging_file
$ log_file = f$parse(p1, "sys$scratch:session.log;0") - ";0"
$ title = "Command Logging Session"
$ delete/nolog/before=0-5-00 'log_file';*
$ set message 'status_message
$ open/write logging_file 'log_file'
$ on control then goto get_command
$ set noon
$ write sys$output ""
$! tell them how to escape
$ write sys$output "''title' started ... ""$LOGOUT"" to close."
$ write sys$output ""
$get_command:
$ inquire/nopunc command "* ''f$environment("prompt")"
$ if (f$length(f$edit(command, "collapse")) .eq. 0) then goto get_command
$! make sure that least two characters are spelt out to escape
$ if (f$locate(command, " $LOGOUT") .eq. 1) .and. -
(f$length(command) .gt. 2) -
then goto exit
$ write logging_file "$ ",f$edit(command, "trim")
$ 'command'
$ goto get_command
$exit:
$ close logging_file
$ write sys$output ""
$ write sys$output "... ''title' file ''log_file' closed."
$ write sys$output ""
$ set message 'status_message
$ exit (%X10000001 + (0 * f$verify(status_process, status_image)))
|
|
HI all,
I propose you a little procedure who record all the command you
type.You can use any tools, but only the command which have call
it is recording.
All the instructions are include in top of the procedure
Enjoy.
Marc..
----------------------------------cut here ---------------------------------
$!
$!
$!
$!RECORD.COM VERS 1.1
$! ***************************************************
$! * Created on December 3, 1987 by MARC Blassin *
$! * QA VALBONE *
$! ***************************************************
$! CREATE UNDER A IDEA OF DAVE H. (HACKERS NOTE 617)
$!
$! BEGIN RECORDING WITH '@RECORD NAME_YOU_WANTED_FOR_THE_SESSION'
$! DURING THE SESSION YOU CAN CALL ANY TOOLS (LIKE ALLIN1,HELP,NCP...)
$! BUT ONLY THE COMMAND WILL BE RECORDED .
$! AT ANY TIME YOU CAN STOP THE RECORDING WITH 'QUITR' OR 'CTRL/Y'
$!
$! YOU CAN ALSO STOP THE RECORDING FOR A TIME WITH 'STOPR'
$! AND CONTINUE WITH 'CONTR'.DURING THIS TIME ALL WORK NORMALY.
$!
$! AT THE END OF THE SESSION YOU CAN SEE IT IF YOU WANT. YOU ONLY
$! HAVE TO TYPE '[RETURN]' OR 'Y+[RETURN]' AT THE PROMPT
$!
$! THE 'R' BEFORE YOUR PROMPT MEAN THAT YOU ARE IN RECORDING SESSION
$! ENJOY.
$! MARC..
$!
$!
$ RS == "READ SYS$COMMAND"
$ WS == "WRITE SYS$OUTPUT"
$ SET NOVERIFY
$ SET NOON
$!
$!
$!
$ IF P1 .EQS. "" THEN -
RS P1/PROMPT="NAME OF THE SESSION > "
$ P1 = P1 + ".RCD"
$!
$ OPEN/WRITE RECORD 'P1'
$ GET_COMMAND:
$ ON CONTROL_Y THEN GOTO QUIT_RECORD
$ SET NOVERIFY
$ RS COMMAND/PROMPT="R''F$ENVIRONMENT("PROMPT")"
$ COMMAND = F$EDIT(COMMAND,"UPCASE")
$ IF COMMAND .EQS. "STOPR" THEN GOTO STOP_RECORD
$ IF COMMAND .EQS. "QUITR" THEN GOTO QUIT_RECORD
$ IF COMMAND .EQS. "EX" THEN GOTO GET_COMMAND
$ IF COMMAND .EQS. "EXI" THEN GOTO GET_COMMAND
$ IF COMMAND .EQS. "EXIT" THEN GOTO GET_COMMAND
$ IF COMMAND .EQS. "STO" THEN GOTO GET_COMMAND
$ IF COMMAND .EQS. "STOP" THEN GOTO GET_COMMAND
$ WRITE RECORD "''COMMAND'"
$ DEFINE/NOLOG/USER_MODE SYS$INPUT SYS$COMMAND
$ 'COMMAND'
$ GOTO GET_COMMAND
$!
$!
$!
$ STOP_RECORD:
$ RS COMMAND/PROMPT="''F$ENVIRONMENT("PROMPT")"
$ COMMAND = F$EDIT(COMMAND,"UPCASE")
$ ON CONTROL_Y THEN GOTO QUIT_RECORD
$ IF COMMAND .EQS. "QUITR" THEN GOTO QUIT_RECORD
$ IF COMMAND .EQS. "CONTR" THEN GOTO GET_COMMAND
$ IF COMMAND .EQS. "EX" THEN GOTO GET_COMMAND
$ IF COMMAND .EQS. "EXI" THEN GOTO GET_COMMAND
$ IF COMMAND .EQS. "EXIT" THEN GOTO GET_COMMAND
$ IF COMMAND .EQS. "STO" THEN GOTO GET_COMMAND
$ IF COMMAND .EQS. "STOP" THEN GOTO GET_COMMAND
$ DEFINE/NOLOG/USER_MODE SYS$INPUT SYS$COMMAND
$ 'COMMAND'
$ GOTO STOP_RECORD
$ EXIT
$!
$!
$!
$!
$!
$!
$ QUIT_RECORD:
$ CLOSE RECORD
$ IF F$SEARCH("''F$DIR()'*.JOU") .NES. "" THEN -
DELETE/NOLOG *.JOU.*
$ WS " [1;7mDO YOU WANT TO SHOW YOUR RECORDING SESSION[0m"
$ REASK:
$ RS ASK/PROMPT= "[Y] > "
$ ASK = F$EDIT(ASK,"UPCASE")
$ IF ASK .EQS. "" THEN GOTO SHOW_RECORD
$ IF ASK .EQS. "Y" THEN GOTO SHOW_RECORD
$ IF ASK .NES. "N" THEN GOTO REASK
$ EXIT
$!
$!
$!
$ SHOW_RECORD:
$ COUNT = 0
$ OPEN/READ SEE 'P1'
$ READ_LOOP:
$ READ/END_OF_FILE=END_LOOP_1 SEE SEELINE
$ COUNT = COUNT + 1
$ IF COUNT .GE. 19 THEN GOSUB PRESS_KEY
$ WS "''SEELINE'"
$ GOTO READ_LOOP
$!
$!
$!
$ PRESS_KEY:
$ RS KEY/PROMPT=" [1;7mPRESS ANY KEY TO CONTINUE SEEING THE RECORDING SESSION[0m"
$ COUNT = 0
$ RETURN
$!
$!
$!
$ END_LOOP_1:
$ CLOSE SEE
$ WS " [1;7mEND OF RECORDING SESSION[0m"
$ EXIT
|