/* reset.f -- translated by f2c (version 19980913). You must link the resulting object file with the libraries: -lf2c -lm (in that order) */ #include "f2c.h" /* Table of constant values */ static logical c_false = FALSE_; static logical c_true = TRUE_; /* $Procedure RESET ( Reset Error Status ) */ /* Subroutine */ int reset_(void) { logical stat; extern logical accept_(logical *), seterr_(logical *); extern /* Subroutine */ int putlms_(char *, ftnlen), putsms_(char *, ftnlen); /* $ Abstract */ /* Reset the SPICELIB error status to a value of "no error." */ /* As a result, the status routine, FAILED, will return a value */ /* of .FALSE. */ /* $ Disclaimer */ /* THIS SOFTWARE AND ANY RELATED MATERIALS WERE CREATED BY THE */ /* CALIFORNIA INSTITUTE OF TECHNOLOGY (CALTECH) UNDER A U.S. */ /* GOVERNMENT CONTRACT WITH THE NATIONAL AERONAUTICS AND SPACE */ /* ADMINISTRATION (NASA). THE SOFTWARE IS TECHNOLOGY AND SOFTWARE */ /* PUBLICLY AVAILABLE UNDER U.S. EXPORT LAWS AND IS PROVIDED "AS-IS" */ /* TO THE RECIPIENT WITHOUT WARRANTY OF ANY KIND, INCLUDING ANY */ /* WARRANTIES OF PERFORMANCE OR MERCHANTABILITY OR FITNESS FOR A */ /* PARTICULAR USE OR PURPOSE (AS SET FORTH IN UNITED STATES UCC */ /* SECTIONS 2312-2313) OR FOR ANY PURPOSE WHATSOEVER, FOR THE */ /* SOFTWARE AND RELATED MATERIALS, HOWEVER USED. */ /* IN NO EVENT SHALL CALTECH, ITS JET PROPULSION LABORATORY, OR NASA */ /* BE LIABLE FOR ANY DAMAGES AND/OR COSTS, INCLUDING, BUT NOT */ /* LIMITED TO, INCIDENTAL OR CONSEQUENTIAL DAMAGES OF ANY KIND, */ /* INCLUDING ECONOMIC DAMAGE OR INJURY TO PROPERTY AND LOST PROFITS, */ /* REGARDLESS OF WHETHER CALTECH, JPL, OR NASA BE ADVISED, HAVE */ /* REASON TO KNOW, OR, IN FACT, SHALL KNOW OF THE POSSIBILITY. */ /* RECIPIENT BEARS ALL RISK RELATING TO QUALITY AND PERFORMANCE OF */ /* THE SOFTWARE AND ANY RELATED MATERIALS, AND AGREES TO INDEMNIFY */ /* CALTECH AND NASA FOR ALL THIRD-PARTY CLAIMS RESULTING FROM THE */ /* ACTIONS OF RECIPIENT IN THE USE OF THE SOFTWARE. */ /* $ Required_Reading */ /* ERROR */ /* $ Keywords */ /* ERROR */ /* $ Declarations */ /* None. */ /* $ Brief_I/O */ /* VARIABLE I/O DESCRIPTION */ /* -------- --- -------------------------------------------------- */ /* None. */ /* $ Detailed_Input */ /* None. */ /* $ Detailed_Output */ /* None. */ /* $ Parameters */ /* None. */ /* $ Exceptions */ /* This routine does not detect any errors. */ /* However, this routine is part of the SPICELIB error */ /* handling mechanism. */ /* $ Files */ /* None. */ /* $ Particulars */ /* Please read the "required reading" first! */ /* The effects of this routine are: */ /* 1. The SPICELIB status is set to a value of "no error." */ /* 2. The long and short error messages are set to blank. */ /* 3. Setting of the long error message is re-enabled. */ /* Subsequent to a call to RESET, references to the status */ /* indicator function, FAILED, will return a value of .FALSE., */ /* until an error is detected. */ /* This routine should be called in cases where one wishes */ /* to attempt to continue processing after detection of an */ /* error, and the 'RETURN' error action is being used. When */ /* the error response action is set to 'RETURN', routines */ /* that have external references, or that can */ /* detect errors, return immediately upon entry when an */ /* error condition exists. This prevents a program from */ /* crashing, but does not allow for a recovery attempt. */ /* If one does wish to attempt to recover, */ /* in general the procedure is to test for an error */ /* condition, and if one exists, respond to the error */ /* (by outputting diagnostic messages, for example). Next, */ /* a call to RESET can be made. After resetting the */ /* error status, the normal execution thread can be resumed. */ /* It is also appropriate to call this routine when the error */ /* response action is 'REPORT', if one wishes to recover */ /* from errors. */ /* $ Examples */ /* 1. In this example, we try to read a line from the file, */ /* SPUD.DAT, using the toolkit routine, RDTEXT. */ /* When FAILED indicates an error, we grab the short */ /* error message and its explanation, using GETMSG (see), */ /* log the messages using our user-defined routine, */ /* USER_LOG (NOT a SPICELIB routine), reset the */ /* status, and keep going. */ /* C */ /* C We read a line from SPUD.DAT: */ /* C */ /* CALL RDTEXT ( 'SPUD.DAT', LINE, EOF ) */ /* IF ( FAILED() ) THEN */ /* C */ /* C Oops! an error occurred during the read. */ /* C Recover the short error message and its */ /* C explanation, reset the error status, */ /* C log the messages, and continue... */ /* C */ /* CALL GETMSG ( 'SHORT' , SMSG ) */ /* CALL GETMSG ( 'EXPLAIN' , EXPL ) */ /* CALL USER_LOG ( SMSG ) */ /* CALL USER_LOG ( EXPL ) */ /* CALL RESET */ /* END IF */ /* $ Restrictions */ /* It can be dangerous to call this routine without */ /* RESPONDING to the error condition first; by calling */ /* RESET, you are wiping out the SPICELIB's knowledge of */ /* the error. */ /* $ Literature_References */ /* None. */ /* $ Author_and_Institution */ /* N.J. Bachman (JPL) */ /* K.R. Gehringer (JPL) */ /* $ Version */ /* - SPICELIB Version 1.1.0, 14-MAR-1996 (KRG) */ /* Removed the call to FREEZE at the end of this subroutine. */ /* The call had no effect other than to copy the current */ /* stack in the trace package from the active stack into the */ /* frozen stack. The frozen stack could NEVER be accessed */ /* after this copying action; the only time the frozen stack */ /* could be accessed is when a program is executing in 'RETURN' */ /* mode and FAILED is .TRUE., i.e. after an error has been */ /* signalled, causing the active stack at the time of the */ /* error to be copied to the frozen stack. So this copying */ /* of the active stack on a RESET of the error handling */ /* accomplishes nothing. */ /* References to the setting of the frozen traceback were */ /* removed from the header as well. */ /* A missing Fortran RETURN statement was also added before the */ /* END statement */ /* - SPICELIB Version 1.0.1, 10-MAR-1992 (WLT) */ /* Comment section for permuted index source lines was added */ /* following the header. */ /* - SPICELIB Version 1.0.0, 31-JAN-1990 (NJB) */ /* -& */ /* $ Index_Entries */ /* reset error status */ /* -& */ /* SPICELIB functions */ /* Local Variables: */ /* Executable Code: */ /* This odd-looking function reference resets the error */ /* status to indicate "no error": */ stat = seterr_(&c_false); /* Wipe out the short and long error messages: */ putsms_(" ", (ftnlen)1); putlms_(" ", (ftnlen)1); /* Allow long error message to be updated: */ stat = accept_(&c_true); return 0; } /* reset_ */