Well, it seems obvious that a SOS is caused by use of too much storage!
However, you do not tend to get that too much nowadays as programs reside above the line. Ensure that you have generated the program to be re-entrant, uses AMODE(31) and RMODE(ANY) so that it resides above the line. If you are obtaining storage ensure that you are getting it in 312bit mode (above the line).
You will probably have to turn on trace to see what is going on, and consult the PDG to track down the excessive storage usage.
This was first published in February 2003