RUNUBE in Robot

cncjunior1

Reputable Poster
Hello List. I asked this question a few months ago but I'm going to ask again because I'm getting desperate. We are using RUNUBE in Robot to run our scheduled UBEs. The issue we are facing is that if a UBE fails for whatever reason the RUNUBE command is telling the AS/400 that the job completed normally and Robot is kicking off the next job in the group and not sending out the alerts it should because it thinks everything is fine. I know that a majority of AS/400 setups use Robot for their JDE batch scheduler so I can't imagine everyone is having this issue. We are on 8.12, 8.96.2.2. I don't recall this being an issue in XE. I have attached the 400 job log too. Thank you
 

tsgconrom

Member
I ran across the same issue, it seems ROBOT is not waiting for the job to actually complete, it submits the job and appears to ROBOT that the job completed. You may have to use RUNUBEXML or buy the E1 scheduler piece from Help Systems which uses an interface to the RUNUBEXML command behind the scenes. You can react jobs and keep track of them properly through that additional software.
 

cncjunior1

Reputable Poster
I have a call open with JDE. I've had the call open for 3-4 weeks and they've done nothing but not return my calls or tell me they're waiting on development to answer some qustions.

I also had the initial issue with ROBOT not waiting for the job to complete but once I used the option in RUNUBE to submit the job in Interactive mode instead of Batch that went away.

I also attached screen shots of our control options setup if anyone sees anything wrong on that side.
 

AllisonD

Well Known Member
We have similar issues with RUNUBE and the iSeries scheduler. It seems JDE doesn't communicate reliably back to the iSeries that the RUNUBE Job has h ad errors. I've seen this since B7332 and no one at JDE was real intereste d in it since it involved RUNUBE and CL... Go figure. I look forward to se eing if you have any better luck...

From: jdelist-bounces@jdelist.com [mailto:jdelist-bounces@jdelist.com] On B ehalf Of cncjunior1
Sent: Friday, May 30, 2008 12:41 PM
To: jdelistsubscribers@jdelist.com
Subject: Re: RUNUBE in Robot

I have a call open with JDE. I've had the call open for 3-4 weeks and they' ve done nothing but not return my calls or tell me they're waiting on devel opment to answer some qustions.

I also had the initial issue with ROBOT not waiting for the job to complete but once I used the option in RUNUBE to submit the job in Interactive mode instead of Batch that went away.

I also attached screen shots of our control options setup if anyone sees an ything wrong on that side.

8.12, 8.96.2.2, iSeries V5R4, OAS
 

altquark

Legendary Poster
An alternative is as follows. Create a "Master" UBE that runs a launchUBE for each of your processes in order. Between each process, it can check to see if the previous process worked or not. Then, just schedule that "Master" UBE in robot.

I find that if I have processes that I need to launch that are dependent on prior processes, this is the most reliable method. I can also place logic in my master UBE to go through and check actual data if necessary prior to running the next job. I also use this type of job to asynchronously call multiple threaded jobs - it makes it a LOT easier to schedule a single job in the scheduler as opposed to multiple ones !

By the way - the fact is that robot (or running a runube using the OS) is always going to return a positive runtime value - even if the ube itself fails. That is because the runube command itself is successful - it doesn't return a value to the OS if the DATA is incorrect.

My recommendation for using a "master" UBE will allow you to provide for error checking...

(your setup for Robot is fine according to the screen shots - but hopefully my explanation will help your understanding of what robot sees as "successful" or not)
 

cncjunior1

Reputable Poster
Here's the response I got from Oracle so far on the issue, which goes with what we're seeing. I'm waiting to hear back if there are any errors that RUNUBE does send proper messages back to the OS for.

[ QUOTE ]
RUNUBE is a stand-alone program within EOne which was fully implemented in C. Like any other programs, RUNUBE also returns a ‘return-value’ to the Operating System that is either a success or failure. Usually, we use signal handlers to catch any necessary signals (like abnormal termination) and take the appropriate action (like clean up, proper diagnostic message to the user etc). According to IBM’s specification, we changed (few years ago) our signal handlers to exception handlers for better error reporting.



We use #pragma exception_handler directive to look for any asynchronous signals that can occur during the program execution and dump the call stack in the logs as necessary. For every failure condition on RUNUBE, we use abort( ) API to explicitly generate SIGABRT signal. We do this because calling abort( ) and generating SIGABRT gives the easiest way of invoking a cancellation request that can in turn trigger a cancel handler.



For example, following are the few examples of ‘error conditions’ for RUNUBE which would generate SIGABRT signal.



1) Providing insufficient number of command line

2) Entering invalid user name (or) password

3) Could not get the bootstrap environment

4) Could not get the password token information

5) Could not initialize the environment (for example wrong environment name)

6) Entering a wrong report (or) version name

7) Could not open tables like F983051, F986110 etc



All the above mentioned scenarios would generate SIGABRT signal so that the cancel handler for AS400 can be invoked to take the appropriate action (like clean up and dumping the call stack information). When SIGABRT is raised from RUNUBE (for the above mentioned few reasons), a corresponding C2M1601 Escape message would be logged in the AS400 job log. But this does not necessarily mean a failure of the job.



For example, I entered a wrong user name for my RUNUBE command on AS400. It displayed a error message in the screen like “runube: jdeSecGetExtendedTokenByPwd failed” and in the job log it displayed a C2M1601 Escape message indicating a abnormal termination (SIGABRT) signal was raised from RUNUBE. However, from the AS400 operating system’s perspective the job submitted to its job queue was successfully run and hence there was a completion message.

[/ QUOTE ]
 

mhootie

Active Member
Can anyone give more detail on this "master UBE" concept? What business function would be used and how do you check completion status?

Thanks so much,
Melissa
 
Top