[ESS] trouble with interactive SAS mode in ESS 13.09-1

Martin Maechler maechler at stat.math.ethz.ch
Fri Nov 11 11:43:00 CET 2016


Rear Ross,

I will *NOT* be able to help with SAS problems, but is there
really no way you could use a more current version of ESS ?

13.09 means  Sept.2013 and this is a relatively long time in
ESS-time scale.

If you could use the last released version of ESS, 16.10,
and still experience the trouble you've mentioned,
I'm pretty sure that people on this list who do have SAS may be
much more motivated to help you.

Best regards,
Martin Maechler

>>>>> Boylan, Ross <Ross.Boylan at ucsf.edu>
>>>>>     on Thu, 10 Nov 2016 21:18:28 +0000 writes:

    > I don't seem able to get my code to execute in SAS.  Specifically, only the first line in the region seems to be transmitted.  Could the fact it is in a file that does not have a .sas extension be a factor?  Also, I have problems exiting.  BTW, http://ess.r-project.org/Manual/news.html doesn't show any SAS-related changes after 13-09-1.
    > Here's what happens:
    > start emacs 24.3.1 on linux/Ubuntu
    > open file  tng-sim0000_1.mprint in emacs.
    > M-x sas-mode
    > buffer mode line now shows ESS[SAS] [SAS]
    > M-x SAS
    > emacs now shows 4 panels, including *SAS.log* showing initialization of the SAS system (in other words, it found the executable).
    > I switch to the mprint buffer and highlight the region I want to execute and hit C-c C-r.
    > Emacs displays "starting evaluation ..." at the bottom, and just stays that way.  It is unresponsive to most keypresses, except to beep.  There are no visible changes in other buffers.
    > C-g interrupts things.  The log window now shows the first line only of the buffer.  If I've done this before it causes the prior single line to execute.

    > The behavior I'm expecting when I hit C-c C-r is for the entire region to execute (since it has run; at the end) and appropriate log and list output to  appear.

    > Another oddity is that the log and list windows both look as if they have shells in them, though I presume that is by design.  That may be related to my exit problem:

    > In the mprint buffer I go
    > C-c C-q and confirm I want to exit.
    > endsas; appears in the log and *SAS* buffers; the latter also shows "Process SAS finished at ..."
    > However, when I switch to the log or lst buffer and try to kill it (C-x C-k) I get the message that it has a running process and asking if I want to kill it.  This puzzled me since the SAS process is supposed to be dead.  Maybe a reference to the apparent shell process of the buffer?


    > --------------------------------*SAS.lst*-------------------------------------------------------
    > sh-4.3$ tty
    > /dev/pts/4
    > sh-4.3$ 


    > ---------------------------*SAS* after 3 attempts------------------------------------------------
    > + stdout=/dev/pts/4
    > + stderr=/dev/pts/5
    > + shift 2
    > + set +x
    > sas </dev/tty 1>/dev/pts/4 2>/dev/pts/5 -stdio -linesize 80 -noovp -nosyntaxcheck
    > data gen ids;                                                                                                                                         
    > data gen ids;                                                                                                                                         
    > data gen ids;             


    > ---------------------------*SAS.log* (with some lines removed)-----------------------------------------------------
    > sh-4.3$ tty
    > /dev/pts/5
    > sh-4.3$ 1                                The SAS System
    > 12:29 Thursday, November 10, 2016

    > NOTE: Copyright (c) 2002-2012 by SAS Institute Inc., Cary, NC, USA. 
    > NOTE: SAS (r) Proprietary Software 9.4 (TS1M3) 
    > NOTE: This session is executing on the Linux 4.4.0-47-generic (LIN X64) 
    > platform.

    > NOTE: Additional host information:

    > Linux LIN X64 4.4.0-47-generic #68~14.04.1-Ubuntu SMP Wed Oct 26 19:42:11 UTC
    > 2016 x86_64 Unrecognized Linux Distribution

    > NOTE: SAS initialization used:
    > real time           1.28 seconds
    > cpu time            0.05 seconds

    > 1
    > 2    data gen ids;
    > NOTE: The data set WORK.GEN has 1 observations and 0 variables.
    > NOTE: The data set WORK.IDS has 1 observations and 0 variables.
    > NOTE: DATA statement used (Total process time):
    > real time           34.58 seconds
    > cpu time            0.02 seconds

    > 3    data gen ids;
    > NOTE: The data set WORK.GEN has 1 observations and 0 variables.
    > NOTE: The data set WORK.IDS has 1 observations and 0 variables.
    > NOTE: DATA statement used (Total process time):
    > real time           14:47.20
    > cpu time            0.03 seconds
    > ^L2                                The SAS System
    > 12:29 Thursday, November 10, 2016


    > 4    data gen ids;

    > -------------------------- region I'm trying to execute------------------------------
    > data gen ids;                                                                                                                                         
    > call streaminit(123);                                                                                                                                 
    > srho = sqrt(abs(0.5));                                                                                                                                
    > smrho = sqrt(1-abs(0.5));                                                                                                                             
    > drop srho smrho;                                                                                                                                      
    > do iSim = 1 to 1;                                                                                                                                     
    > do id = 1 to 40000;                                                                                                                                   
    > if id <= 12000 then g=1;                                                                                                                              
    > else g=-1;                                                                                                                                            
    > a0 = rand('NORMAL');                                                                                                                                  
    > a1 = rand('NORMAL');                                                                                                                                  
    > a2 = rand('NORMAL');                                                                                                                                  
    > a0 = ((exp(a0*0.01)-1)/0.01 * exp(0.2*a0**2/2) - 0.006987930800249634)/1.4670501788740913;                                                            
    > a1 = ((exp(a1*0.01)-1)/0.01 * exp(0.2*a1**2/2) - 0.006987930800249634)/1.4670501788740913;                                                            
    > a2 = ((exp(a2*0.01)-1)/0.01 * exp(0.2*a2**2/2) - 0.006987930800249634)/1.4670501788740913;                                                            
    > b0 = (smrho*a0 + srho*a2)*1;                                                                                                                          
    > bT = (smrho*a1 + srho*a2)*1;                                                                                                                          
    > output ids;                                                                                                                                           
    > regularN = 0;                                                                                                                                         
    > regularStep = 0;                                                                                                                                      
    > ;                                                                                                                                                     
    > drop regularN regularStep;                                                                                                                            
    > do step = -0 to 100-0;                                                                                                                                
    > T = -0.5 + 1 * step/100;                                                                                                                              
    > regular = (step >= regularStep);                                                                                                                      
    > if regular then do;                                                                                                                                   
    > regularN + 1;                                                                                                                                         
    > regularStep = round(regularN * 100 * 0.5);                                                                                                            
    > gammav = 0;                                                                                                                                           
    > end;                                                                                                                                                  
    > else do;                                                                                                                                              
    > gammav = 0;                                                                                                                                           
    > end;                                                                                                                                                  
    > eta = 0 + b0 + (1 + bT)*T + 2 * g + 3 * g * T;                                                                                                        
    > Y = rand('NORMAL', eta, 1);                                                                                                                           
    > YForVisit = eta;                                                                                                                                      
    > output gen;                                                                                                                                           
    > end;                                                                                                                                                  
    > end;                                                                                                                                                  
    > end;                                                                                                                                                  
    > run;


    > ______________________________________________
    > ESS-help at r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/ess-help



More information about the ESS-help mailing list