[ESS] Replace control characters in log

Will schimpanski at gmx.de
Wed Jan 16 09:54:30 CET 2008


thanks for the comments so far. The third character of the mode line of 
the GNU .log file says "\" (DOS mode), but does not display ^M 
correctly. Additionally, I discovered that in BATCH mode the error 
messages are printed 3 times in the GNU Emacs SAS.log instead of 1 time 
like in the original SAS.log window.

Here's an example:

%%%%%%%%%%%%%%%Emacs - SAS.sas:%%%%%%%%%%%%%%%%%%%%%

PROC nonsense;

%%%%%%%%%%%%%%%Emacs - SAS.log:%%%%%%%%%%%%%%%%%%%%%

1          PROC nonsense;
ERROR: Procedure NONSENSE not found.^MERROR: Procedure NONSENSE not 
found.^MERROR: Procedure NONSENSE not found.
2          run;

%%%%%%%%%%%%%%%SAS - SAS.log:%%%%%%%%%%%%%%%%%%%%%
1    PROC nonsense;
ERROR: Procedure NONSENSE not found.
2    run;

I open the SAS windows (.sas, .log, .lst, and *scratch*) with this function:

(defun ess-sas-3window ()
"Put running SAS buffers into three windows in one frame.
Place the cursor in a myfile.sas buffer.  Run SAS in Batch mode,
Return the cursor to the myfile.sas buffer, then enter C-c 3 to
put myfile.sas in the upperleft window, myfile.log in the
upperright window, and myfile.lst buffers in the bottom left window.
The SAS Shell buffer remains buried."
   (setq sas-file-name (buffer-name))
   (find-file (concat (substring sas-file-name 0 -4) '".sas"))
   (other-window 1)
   (find-file (concat (substring sas-file-name 0 -4) '"-temp.log"))
   (setq buffer-read-only  nil)
   (highlight-lines-matching-regexp "ERROR" 'hi-red-b)
   (setq buffer-read-only t)
   (other-window 1)
   (find-file (concat (substring sas-file-name 0 -4) '"-temp.lst"))
   (setq buffer-read-only t)
   (other-window 1)
   (switch-to-buffer '"*scratch*")
   (other-window 1)

Maybe the SAS batch command in my <.emacs> is also important:

(setq-default ess-sas-submit-command "sas.exe -autoexec 
\"z:\\00_Preferences\\SAS\\autoexec_batch.sas\" -batch -pageno 1 -nosplash")
(setq-default ess-sas-submit-command-options "-sysin")
(setq-default ess-sas-data-view-submit-options "-nosysin -print NUL: 
-log NUL:")
(setq-default ess-sas-submit-method  'sh)

Maybe the SAS commands in my <autoexec.sas> are also relevant:

OPTIONS FORMCHAR='|----|+|---+=|-/\<>*'

Thanks for your help,


PS: If this settings don't work for you, please consider the following 
bug in the <ess-sas-submit-region> function, where the variable 
<ess-sas-submit-command-options> is missing. I patched the function like 

;;;;;;;;;;;;;;;;;;;;;essa-sas.el (ll. 971-996);;;;;;;;;;;;;;;;;;;;;;;;

(defun ess-sas-submit-region ()
      "Write region to temporary file, and submit to SAS."
      (write-region (region-beginning) (region-end)
     (concat (ess-sas-temp-root) ".sas"))

        (ess-sas-goto-shell t)

      (if (and (w32-shell-dos-semantics)
     (string-equal ":" (substring ess-sas-file-path 1 2)))
         (insert (substring ess-sas-file-path 0 2))

      (insert "cd \"" (convert-standard-filename
     (file-name-directory ess-sas-file-path)) "\"")

      (insert (concat ess-sas-submit-pre-command " " ess-sas-submit-command
            " " ess-sas-submit-command-options " " (ess-sas-temp-root) " 
" ess-sas-submit-post-command)) ;; WI-2007-10-11

Will skrev:
> Dear ESS list,
> it might sound strange but I am using GNU Emacs/ESS with SAS in a MS 
> Windows XP environment in Batch mode. I have the problem that in the log 
> window strange control characters appear ("^M") which mess up the layout.
> How do I tell Emacs to replace those control characters with the correct 
> formatting?
> Thanks in advance,
> Will
> ______________________________________________
> ESS-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/ess-help

More information about the ESS-help mailing list