Search code examples
spss

Getting `spss.Submit` to log commands into the `output` window?


When I execute spss syntax commands from a .sps script, each command is written to the output window before it executes giving me a clear log of exactly how an output was created.

Even if the command is an INSERT command executing a different script - I get a log of the commands from that script.

This is very useful for many reasons:

  • sanity checking - I can always see exactly what went in to creating a specific output (which filters I used, etc.)

  • recreation - I (or someone else with this output) can easily re-run the same commands because they're right there.

  • debugging - if there's an error, I can see which commands caused it

However, when I run commands using spss.Submit inside a python block (in a BEGIN PROGRAM-END PROGRAM block), the actual commands called aren't logged into the output window.

I know I can find a full log in a log file - but that's not helpful.

Is there a way to tell spss to continue to log all the commands in the output window?


Solution

  • You can use set mprint on. before the begin program statement to have the syntax that is run via spss.Submit()show up in the output window. I like simpy putting it on the very top of my syntax file as a "set it and forget it".

    For example like so:

    set mprint on. 
    
    begin program python3. 
    import spss
    
    vars = list(range(1,11))
    
    for var in vars: 
        spss.Submit(f'compute v{var} = 0. ')
    
    end program.