[comp.unix.ultrix] Problem with RISC Fortran signal

ralph@uhheph.phys.hawaii.edu (Ralph Becker-Szendy) (03/29/91)

Beginners question (I have been writing code on a Unix machine for a few
hours now, never programmed on one before), and yes, I have read the FM
(actually, the DEC FORTRAN for RISC manual hasn't been farther than a few feet
from me for the last few hours):

I am using the FORTRAN library routine "signal" as a replacement for VMS common
event flag clusters. I am writing a long-running program, and there has to be
a way to indicate to it to please flush the output (the machine may go down
soon or I want to look at the accumulated data), or to please stop (I am 
satisfied with the statistics).

I wrote a two little subroutines SIGHAND_FLUSH and SIGHAND_ABORT, which set
flush and abort flags in a common block. I was planning to use signals 30 and
31 (known as USR1 and USR2), but maybe 18=TSTP for the abort signal would be 
better. I declare those routines with something like 
STATUS = SIGNAL(30, SIGHAND_FLUSH, -1).

Well, doesn't work. STATUS is always -130, which stands for illegal argument.
A little experimentation shows that the SIGNAL routine only accepts signal
numbers between 0 and 16 (inclusive !!).

Question 1: Is this a bug ? It doesn't seem to be documented anywhere. Or am I
just using the signal routine wrong ?
Question 2: I am now using signal 15=TERM for ABORT and signal 14=ALRM for 
FLUSH. Is there something seriously wrong with grabbing these signals and using
them for my own purposes ?

Flame: After a few hours on Unix I can start to understand why people always 
say they prefer it over VMS. Using the common event flags was such a pain
compared to signals. But at least it worked right. 

-- 
Ralph Becker-Szendy                          UHHEPG=24742::RALPH (HEPNet,SPAN)
University of Hawaii                              RALPH@UHHEPG.PHYS.HAWAII.EDU
High Energy Physics Group                                  RALPH@UHHEPG.BITNET
Watanabe Hall #203, 2505 Correa Road, Honolulu, HI 96822         (808)956-2931