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

Reply via email to