Page 1 of 1

Job has finished, status = 96 (Crashed)

Posted: Tue Jan 23, 2007 10:34 am
by PeterPol
Hi all,

I have a job sequence with several sub jobs. If I run the sequence one of the (server) jobs produces the following log message:

Seq_Reg_RegistrateFile01..JobControl (DSWaitForJob): Job Job_Reg_GetProjectInputPath01.1 has finished, status = 96 (Crashed)

The job retrieves a table value and returns this value in a user status variable. The controller job has 2 triggers: Userstatus = '', and Userstatus <> ''

I tried a lot things but I still have no clue what goes wrong.

Any ideas?

Peter

Posted: Tue Jan 23, 2007 11:27 am
by ArndW
Try resetting the job and looking at the details of the log entry "from previous run" to see if you get additional information on the cause. Does the job also "crash" when run manually with the same parameters? Does it crash every time or just sporadically?

Posted: Wed Jan 24, 2007 1:54 am
by PeterPol
Hi ArndW,

I resetted the job, but it still crashes...
Where precisely can I find the log entry 'from previous run'? I tried to find it by doing a menu search on "from previous entry" in the log, but without result...
When run in isolation the job terminates normally with status OK.
When run within the sequence the job crashes every time.

Peter

Posted: Wed Jan 24, 2007 2:00 am
by kumar_s
As soon as you reset the job, you will find an entry as From previous run[...].

Posted: Wed Jan 24, 2007 4:05 am
by PeterPol
hi ,

I still can't find the entry you mentioned after doing a reset.

Nevertheless, I found out that the crash is caused by setting the userstatus to a string containing backslashes (using DSSetUserStatus). In the job I have a filepath like 'D:\DATA\DEV\PROJECT\INPUT' that I want to assign to the userstatus. If I replace this path by 'test' the userstatus is correctly filled and the job finishes with status = 1 in the controlling job. However when I assign 'test\test' to the userstatus variable the job crashes again?!

What could be the reason for this?
Are there alternatives to passing values to other jobs other than via userstatus?

Thanks in advance.
Peter

Posted: Wed Jan 24, 2007 4:11 am
by ArndW
PeterPol - good job on locating the rather obscure cause. In some of the DS code the backslash is used as a string delimiter to store and parse out multiple types of values from one string. This is probably what is happening in your case with the userstatus. I would create a minimal job that reproduces the error and submit it to your support provider as a bug report. But as it won't be fixed in time to help you with your problem you will need to use a different character. Could you substitute a forward slash in this case?

Posted: Wed Jan 24, 2007 5:03 am
by ray.wurlod
Can you post the actual call to DSSetUserStatus() ?
The backslash is a quote character in DataStage BASIC, so this may be the cause. Try quoting the string.

Code: Select all

Call DSSetUserStatus(DQuote('D:\DATA\DEV\PROJECT\INPUT'))

Posted: Wed Jan 24, 2007 5:19 am
by PeterPol
hi Ray,

Added DQuote but it still gives a crash :(

I already reported this issue to IBM as a bug

Peter

Posted: Wed Jan 24, 2007 5:31 am
by ArndW
I just took a quick look at the object code and the backslash is indeed used as a field delimiter in a couple of places, so it is probably not too far off to assume that this character cannot (currently) be used within the user status. The question is whether IBM will change to code to allow the backslash or change to documentation to disallow the backslash. My money is on the latter option.

Posted: Wed Jan 24, 2007 7:49 am
by chulett
Perhaps as a workaround you could pass it out with some other delimiting character? Then replace them with '\' before actual use.