Two ways of calling this: 1. with text representing group of topstatements (pfd == null) 2. with text representing a function name & body (pfd != null)
Execute program. Throw ScriptException on error.
Get/Set Program associated with this thread. This enables multiple scripts (Programs) running simultaneously in different threads. It is needed because which Program is being run is essentially global data - and this makes it thread local data.