I'd echo what Alan said. It sounds more like you're having trouble finding out what the command line to SAS should look like, rather than invoking it with Python.
(I'm going to quote some of your message out-of-order to better facilitate my approach to this. I will, I trust, not misrepresent the context.) On Wed, 9 Feb 2005, Williams, Thomas wrote: > However, the program in question is c:\work\run_ratios.sas, with 2 > parameters: incov, and outcov. This program was initially invoked from an > aml program. The code that invoked SAS from this aml is: > > &SYSTEM %.SASLOC% -SYSPARM %sas_parm% -log ~ > %.ARCLOC%\ratios\log\%.file%.log -SYSIN ~ > %.ARCLOC%\sas_code\ratios\new_ratio.sas > > %.SASLOC%: the SAS executable file ('C:\Program Files\SAS > Institute\SAS\V8\SAS.exe') > %sas_parm%: the list of parameters to be passed onto SAS > %.file%: the name of the log file that is generated during the execution of > the SAS program. > %.ARCLOC%: directory of the SAS program (c:\work) First, something's not jibing here: you say the program to run is c:\work\run_ratios.sas , but none of the variables under AML appear to have "run_ratios" in it. (Not that I know what AML is). My expectation is that this code: > &SYSTEM %.SASLOC% -SYSPARM %sas_parm% -log ~ > %.ARCLOC%\ratios\log\%.file%.log -SYSIN ~ > %.ARCLOC%\sas_code\ratios\new_ratio.sas Expands to an invocation of this: """ C:\Program Files\SAS Institute\SAS\V8\SAS.exe -SYSPARM incov outcov -log c:\work\ratios\log\[logfilename].log -SYSIN c:\work\sas_code\ratios\new_ratio.sas """ (where [logfilename] is actually replaced with the name of your logfile.) As I said, no reference to "c:\work\run_ratios.sas" in this; so confirm this. My suggestion is that you open up an MSDOS window, and try variations on this until you find one that works. Once you find one that works, you know your command; and that's going to be 95% of the battle. In your Python code: > os.execl('C:\Program Files\SAS Institute\SAS\V8\SAS.exe') First, as Alan points out, try os.system() instead. I would also very much encourage a piece of advice he gave that might have slipped through, which is: build a string, first, and pass that string to os.system(). That way, you can do some debugging by making sure your string represents the command you cane up with earlier. I'd also recommend using forward slashes rather than backslashes, which saves you some escape heartache. Forward slashes should still work. You can also do something along the same lines your AML took, if you like: SAS_location = "C:/Program Files/SAS Institute/SAS/V8/SAS.exe" sas_parm = "incov outcov" ARC_location = "c:/work/" logfile = "ratios/mylog.log" SAS_SYSIN = "sas_code/ratios/new_ratio.sas" command_line = "%s -SYSPARM %s -log %s%s -SYSIN %s%s" % (SAS_location, sas_parm, ARC_location, logfile, ARC_location, SAS_SYSIN) print command_line # above line verifies the command matches what you determined from the # earlier testing from the MS-DOS command line os.system(command_line) # invoke SAS _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor