comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: AXP VMS IDL problem with Control_C?
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: AXP VMS IDL problem with Control_C? [message #3553] Fri, 24 February 1995 04:48 Go to next message
gurman is currently offline  gurman
Messages: 82
Registered: August 1992
Member
In article <23FEB199510395357@sorbet.gsfc.nasa.gov>,
landsman@sorbet.gsfc.nasa.gov (Wayne Landsman (301)-286-3625) wrote:

> We are having problems with the Control_C interrupt in VMS IDL running under
> AXP OpenVMS 6.1. The first time one calls Control_C it works properly,
> as a keyboard interrupt returning one to the IDL prompt. But on subsequent
> calls, it behaves like Control_Y and aborts one to the $ prompt. This
> problem seems to occur under IDL V3.5, V3.6 and V3.6.1c, but didn't occur
> the old operating system V1.5 and doesn't occur on the Vaxes. The problem
> can be quite serious as the only way to abort an infinite or long IDL loop is
> to abort the session.
>
> Is anyone else familiar with this problem, and possibly found a solution?

Wayne -

For what it's worth, this behavior seems to follow the second ^C in
any OpenVMS AXP application, including DEC ones. I wonder if it's an
(intentional) feature....

Joe Gurman

--
Joseph B. Gurman / NASA Goddard Space Flight Center/ Solar Data Analysis Center / Code 682 / Greenbelt MD 20771 USA / gurman@uvsp.gsfc.nasa.gov
| Federal employees are still prohibited from holding opinions while at work. Any opinions expressed herein must therefore be someone else's. |
Re: AXP VMS IDL problem with Control_C? [message #3743 is a reply to message #3553] Sat, 25 February 1995 15:59 Go to previous message
rivers is currently offline  rivers
Messages: 228
Registered: March 1991
Senior Member
>
>> We are having problems with the Control_C interrupt in VMS IDL running under
>> AXP OpenVMS 6.1. The first time one calls Control_C it works properly,
>> as a keyboard interrupt returning one to the IDL prompt. But on subsequent
>> calls, it behaves like Control_Y and aborts one to the $ prompt.

> For what it's worth, this behavior seems to follow the second ^C in
> any OpenVMS AXP application, including DEC ones. I wonder if it's an
> (intentional) feature....
>

That is certainly not universally true. All the applications I have written,
which originally ran on VAX/VMS and now run on AXP/VMS, handle ^C just fine. I
did not recode anything when recompiling on AXP. You have to be aware of the
(documented) way the ^C handler works. You need to redeclare the handler after
each ^C. For those interested I am appending the routines I use. Routine
set_control_c() must be called again each time from the ast_routine if it is
desired to treat multiple ^Cs the same way.

What DEC applications treat ^C differently under AXP/VMS from VAX/VMS?

____________________________________________________________
Mark Rivers (312) 702-2279 (office)
CARS (312) 702-9951 (secretary)
Univ. of Chicago (312) 702-5454 (FAX)
5640 S. Ellis Ave. (708) 922-0499 (home)
Chicago, IL 60637 rivers@cars3.uchicago.edu (Internet)


SUBROUTINE clear_control_c
IMPLICIT NONE
CALL set_control_c(0)
RETURN
END



SUBROUTINE set_control_c(ast_routine)

c Routine to declare an AST routine to be entered on ^C.
c Modified by MLR 17-NOV-1991 to return harmlessly if SYS$INPUT is not a
c terminal.
IMPLICIT NONE
INCLUDE '($iodef)'
INCLUDE '($DVIDEF)'
INTEGER istat, channel, sys$assign , sys$qiow, ast_routine
INTEGER LIB$GETDVI

LOGICAL first_time/.true./
LOGICAL terminal_device

c
IF (first_time) THEN
first_time = .false.
istat = sys$assign('sys$input', channel,,)
IF (.NOT. istat) CALL lib$signal(%val(istat))
c Find out if SYS$INPUT is a terminal
istat = LIB$GETDVI(DVI$_TRM,,'SYS$INPUT', terminal_device)
IF (.NOT. istat) CALL LIB$SIGNAL(%val(istat))
END IF
c
IF (.NOT. terminal_device) RETURN
IF (ast_routine .NE. 0) THEN
istat = sys$qiow
& ( ,
& %val (channel),
& %val (io$_setmode .OR. io$m_ctrlcast),
& ,
& ,
& ,
& ast_routine,
& ,
& ,
& ,, )
ELSE
istat = sys$qiow
& ( ,
& %val (channel),
& %val (io$_setmode .OR. io$m_ctrlcast),
& ,
& ,
& ,
& %val(0),
& ,
& ,
& ,, )
END IF
c
IF ( .NOT. istat ) CALL lib$signal(%val(istat))
RETURN
END
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: SORT needs minor fix
Next Topic: Re: LeGendre Polynomials?

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Sat Oct 11 04:22:33 PDT 2025

Total time taken to generate the page: 0.64267 seconds