On Mon, 26 Nov 2007, Dennis Fisher wrote: > Colleagues, > > I am writing scripts that run on both Windows (Vista) and Linux > (RedHat 9). The scripts will be used in both S-Plus (version 8) and > R (2.6.0). I am trying to use the "status" portion of the quit command: > ------------------------------------------------------------------------ > ----------------------------------------------------------------------- >> quit package:base R Documentation >> >> Terminate an R Session >> >> Description: >> >> The function 'quit' or its alias 'q' terminate the current R >> session. >> >> Usage: >> >> quit(save = "default", status = 0, runLast = TRUE) >> q(save = "default", status = 0, runLast = TRUE) >> .Last <- function(x) { ...... } >> >> Arguments: >> >> save: a character string indicating whether the environment >> (workspace) should be saved, one of '"no"', '"yes"', '"ask"' >> or '"default"'. >> >> status: the (numerical) error status to be returned to the operating >> system, where relevant. Conventionally '0' indicates >> successful completion. >> >> >> >> >> Some error statuses are used by R itself. The default error >> handler for non-interactive use effectively calls 'q("no", 1, >> FALSE)' and returns error code 1. Error status 2 is used for R >> 'suicide', that is a catastrophic failure, and other small >> numbers >> are used by specific ports for initialization failures. It is >> recommended that users choose statuses of 10 or more. >> >> Valid values of 'status' are system-dependent, but '0:255' are >> normally valid. > ------------------------------------------------------------------------ > ----------------------------------------------------------------------- > Of the four combinations (R/S-Plus crossed with Windows/Linux), the > only combination that I cannot get to work properly is R/Windows. > > The code below from Linux/R: >>> q(status=34, "no") >> P2: 72> echo $status >> 34 > shows the expected response. > > When I replicate that R code in Windows, then type: > 1. echo %status%: Windows echoes %status, indicating that the > environment variable status was never set > 2. echo %error level%: Windows echoes 1 (if i execute a normal quit > command, i.e., without setting status, Windows echoes 0). > > So, it appears that in Windows, %errorlevel% is the (undocumented) > equivalent of $status (Linux).
Actually, $status is shell-specific: $? is more standard (it comes from sh, $status from tcsh). $status does not work in /bin/sh on Linux for me (and I don't think it should). And that %errorlevel% does contain the status on some Windows shells is documented in the shell documentation. > However, in Windows, the value > returned appears to be limited to either 0 (normal exit) or 1 (status > set to a non-zero value) despite the claim that "valid values ... > [are] 0:255 (as is the case in Linux). The claim is of course correct! E.g. in tcsh > q("no", status=34) [d:/R/svn/trunk/src/gnuwin32]% echo $status 34 and in cmd.exe > q("no", status=34) D:\R\R-2.6.1\bin>echo %errorlevel% 34 Note those examples are from Rterm: Rgui is a Windows GUI application and the shell seeems to receive an error status from the GUI interface layer. But then Rterm is intended for use in scripts, not Rgui. -- Brian D. Ripley, [EMAIL PROTECTED] Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595 ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.