Peter has the right idea. PTERM just does a TTYGET and TTYSET so you can call
that directly if you wish. Our legacy code uses "CALL !PTERM('-ERASE
':CHAR(8))" etc. to change TTY characteristics.
I think this "quick n dirty" code snippet could work for you....if you utility
is UV/BASIC based you could incorporate this code (maybe!)...
1. Temporary re-define/re-assign the BREAK key then loop for character
(decimal) 3...
* Re-define INTR (Break) key so we can 'detect' it
* Assumption is Control-C (Char 3) is the Break Key
* Use TCL PTERM -DISPLAY to check what your BREAK key is set to first ;-)
* David Hona, Jan. 2014
$INCLUDE UNIVERSE.INCLUDE TTY
ttyget tty$ then
if CC.INTR ne 3 then crt "WARNING: BREAK character is currently set to
ASCII decimal = ":CC.INTR:" and NOT '3' as expected"
if CC.INTR then
crt "Changing to decimal 2 (temporarily)"
crt "TTY interrupt character = Decimal ASCII = ":CC.INTR
CC.INTR = 2 ; * Set to decimal 2 character
(Control-B)
ttyset tty$ then
crt "TTY interrupt character = Decimal ASCII = ":CC.INTR
end else
crt "TTYSET failed!"
end
end
end
EXIT.FLAG = @FALSE
prompt '' ; * Suppress prompt character
* Now loop for CTRL-C character
loop
input BUFFER, -1
if BUFFER then
input CHAR, 1
crt "ASCII = ":seq(CHAR)
if upcase(CHAR) eq 'Q' then EXIT.FLAG = @TRUE
if seq(CHAR) eq 3 then
crt
crt "CONTROL-C detected!"
crt
end
end
until EXIT.FLAG do
nap 500 ; * Sleep so not to consume all the
CPU time
repeat
*
* Reset back to Control-C
*
crt "TTY interrupt character = Decimal ASCII = ":CC.INTR
CC.INTR = 3
ttyset tty$ then
crt "Reset back to Control-C"
end else
crt "Warning: TTYSET failed. Unable to reset BREAK key back to
Control-C"
end
end
2. ON.ABORT and @ABORT.CODE
If you are using an external routine (UNIX or Windows scripts) called from UV,
then you will have to utilise the ON.ABORT paragraph along with @ABORT.CODE to
determine the reason it is being executed. New to UV11.2 is that @ABORT.CODE
returns 4 for AUTOLOGOUT events.
There is no way to work out what routine was executing prior to invoking it
from what I recall - post-invocation of ON.ABORT.
You could set you own audit trail/transaction logging, setup your own Global
Labelled Common variables or just use/set @USER.RETURN.CODE which a paragraph
can access. Hence use one or a combo of those to run a clean-up utility invoked
via ON.ABORT.
Finally, some care needs to be taken to ensure your external routine/script
trapping interrupts (as that'll clash with UV's trap handling)...
Cheers,
David
-----Original Message-----
From: [email protected]
[mailto:[email protected]] On Behalf Of Peter Cheney
Sent: Tuesday, 24 December 2013 9:17 AM
To: U2 Users List
Subject: Re: [U2] [UV] INPUTTRAP Statement
Could you do this via a combination of the PTERM command's BREAK and INTR
options along with the ON.ABORT etc?
Something like changing the break from ctrl-C to another key combo during that
session?
Peter Cheney
Ultracs Developer
t 07 3017 8837 | f 07 3002 8400
e [email protected]<mailto:[email protected]>
w firstmac.com.au
________________________________________
From:
[email protected]<mailto:[email protected]>
<[email protected]<mailto:[email protected]>>
on behalf of Perry Taylor
<[email protected]<mailto:[email protected]>>
Sent: Tuesday, 24 December 2013 5:41
To: U2-Users List
Subject: [U2] [UV] INPUTTRAP Statement
Has anyone ever used the INPUTTRAP statement in UniVerse BASIC? I want to be
able to trap a break (Ctrl-c) but I can't seem to get it to work with CHAR(3),
or any other character for that matter. The UniVerse BASIC Commands
documentation provides no examples on its use.
Anybody done anything like this? Any sample code you're willing to share?
Thanks.
Perry Taylor
Senior MV Architect
ZirMed
888 West Market Street, Suite 400
Louisville, KY 40202
www.zirmed.com<http://www.zirmed.com/<http://www.zirmed.com%3chttp:/www.zirmed.com/>>
************** IMPORTANT MESSAGE *****************************
This e-mail message is intended only for the addressee(s) and contains
information which may be
confidential.
If you are not the intended recipient please advise the sender by return email,
do not use or
disclose the contents, and delete the message and any attachments from your
system. Unless
specifically indicated, this email does not constitute formal advice or
commitment by the sender
or the Commonwealth Bank of Australia (ABN 48 123 123 124) or its subsidiaries.
We can be contacted through our web site: commbank.com.au.
If you no longer wish to receive commercial electronic messages from us, please
reply to this
e-mail by typing Unsubscribe in the subject line.
**************************************************************
_______________________________________________
U2-Users mailing list
[email protected]
http://listserver.u2ug.org/mailman/listinfo/u2-users