[Info-vax] F6 and ctrl-C

Arne Vajhøj arne at vajhoej.dk
Fri Jul 16 20:49:51 EDT 2021


On 7/12/2021 9:41 AM, Joukj wrote:
> Arne Vajhøj wrote:
>> On 7/9/2021 2:35 AM, Joukj wrote:
>>> Dave Froble wrote:
>>>> On 7/8/2021 7:37 PM, Jan-Erik Söderholm wrote:
>>>>> It seems as PF6 and PF10 are linked to Ctrl/C and Ctrl/Z.
>>>>> At least as it says in the OpenVMS User Manual:
>>>>>
>>>>> Ctrl/Z and F10 Signals the end of the file for data entered from the
>>>>> terminal.
>>>>>
>>>>> Ctrl/Y, Ctrl/C and F6 Interrupts command processing. You can disable
>>>>> Ctrl/Y with the command SET NOCONTROL=Y.
>>>>
>>>> Basic allows ^C to be trapped and handled in a program.  Perhaps 
>>>> Cobol also has this capability.
>>>>
>>>> As Steve sometimes mentions, terse questions beget terse answers. 
>>>> Can you be more specific on how you're handling the terminal I/O ?
>>>>
>>> All languages should be able to do it by a call to sys$qiow
>>
>> lib$disable_ctrl and sys$qiow with 
>> IO$_SETMODE|IO$M_CTRLCAST|IO$M_CTRLYAST ?

> I used only sys$qiow to catch CTRL-C and run my own handler.(see fortran 
> code I wrote over 30 years ago)
> 
>        include '($iodef)/list'
>        structure /iostat_block/
>          integer*2 iostat
>        end structure
>        record /iostat_block/ iosb
> !
>        integer status , code
>        integer*2 input_chan
> !
>        integer ( kind = kind_i4 ) , external :: sys$assign , sys$qiow
> !
> ! the handler routine
>        external ctrlc_ast
> !
>        status = sys$assign( 'sys$input' , input_chan , , )
>        code = io$_setmode .or. io$m_ctrlcast
>        status = sys$qiow( , %val( input_chan ) , %val( code ) ,iosb &
>               , , , &
>               ctrlc_ast , , , , , )
>        if(.not. status) call lib$signal(%val(status))
>        if(.not.iosb.iostat) call lib$signal(%val(iosb.iostat))

lib$disable_ctrl is only needed for CTRL/Y - it is not
needed for CTRL/C.

Arne




More information about the Info-vax mailing list