Routine is not cataloged

Post questions here relative to DataStage Enterprise/PX Edition for such areas as Parallel job design, Parallel datasets, BuildOps, Wrappers, etc.

Moderators: chulett, rschirm, roy

Post Reply
xli
Charter Member
Charter Member
Posts: 74
Joined: Fri May 09, 2003 12:31 am

Routine is not cataloged

Post by xli »

Hi, All

I have got the following error message :

before-job routine returned error: DSU.ExecSH is not cataloged.

ExecSH is actually a built-in routine. rather than user defined.

I made a copy of ExecSH, eg ExecSH1, ExecSH1 works fine.

I tried to rebuild index, but not help.

I wonder if anybody encoutered this problem before ? please tell me what the problem is and how to fix it.

many thanks

xli
ray.wurlod
Participant
Posts: 54607
Joined: Wed Oct 23, 2002 10:52 pm
Location: Sydney, Australia
Contact:

Post by ray.wurlod »

Look at the VOC entry for ExecSH both in the project where it does not work and in one where it does.

Code: Select all

LIST.ITEM VOC WITH @ID LIKE "...ExecSH..."
IBM Software Services Group
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
xli
Charter Member
Charter Member
Posts: 74
Joined: Fri May 09, 2003 12:31 am

Post by xli »

ray.wurlod wrote:Look at the VOC entry for ExecSH both in the project where it does not work and in one where it does.

Code: Select all

LIST.ITEM VOC WITH @ID LIKE "...ExecSH..."
In proj A (ExecSH does not work)

no entry return !!

In proj B (ExecSH works)

DSU.ExecSH
001 V
002 DSU_BP.O/DSU.ExecSH
003 B
004 BN
009 DSU_BP.O

what caused this problem then ? do I need to add entries in VOC in proj A manually ?

Also, if I run following statement in both proj A and proj B,

LIST.ITEM VOC WITH @ID LIKE '...EXECSH...'

they return the same entries as below :

DSX.EXECSH
001 V
002 DSG_BP.O/ExecSH.B
003 B
004 BN
009 DSG_BP.O

what does this mean ?

xli
ray.wurlod
Participant
Posts: 54607
Joined: Wed Oct 23, 2002 10:52 pm
Location: Sydney, Australia
Contact:

Post by ray.wurlod »

It apears that, in Project B, either someone has written their own ExecSH and compiled it, or that Project B has been around for a very long time (since at least version 5.2).

Check whether there is a DEFFUN declaring ExecSH as calling "DSU.ExecSH". If there is, this is at the heart of your problem; you could change the Calling clause to "DSX.EXECSH" which is the newer way to catalog supplied routines.

Otherwise you can create the VOC entry for DSU.ExecSH by writing and compiling an ExecSH routine (or exporting it from Project B and importing it into Project A). A better approach would be to eliminate the user-written version and to rely upon the supplied version, unless there's something special about the user-written version, which you would hope is documented in its source code in Project B.

There was one consulting firm who gained notoriety for copying all the supplied routines, and recompiling them as if that company had written and provided them. That practice created "DSU."-prefixed routines that paralleled the "DSX."-prefixed ones, for no advantage other than billable time for that "consulting" firm. :x
IBM Software Services Group
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
xli
Charter Member
Charter Member
Posts: 74
Joined: Fri May 09, 2003 12:31 am

Post by xli »

Hi, Ray

we are using version7.1.5A, lots of projects reside on this server, only proj A has this problem.

ExecSH is original built-in routine and read-only. there is not a DEFFUN declaring ExecSH as calling "DSU.ExecSH".

basically, I don't think there is a user-written version in this project. I have created a new project, I found the same entries in VOC file :

DSU.ExecSH
001 V
002 DSU_BP.O/DSU.ExecSH
003 B
004 BN
009 DSU_BP.O

I wonder what may cause ExecSH not cataloged in proj A ? what is the best way to fix it ?

Thanks

xli
ray.wurlod
Participant
Posts: 54607
Joined: Wed Oct 23, 2002 10:52 pm
Location: Sydney, Australia
Contact:

Post by ray.wurlod »

ED VOC DSU.ExecSH
I
V
DSU_BP.O/DSU.ExecSH
B
BN

space
space
space
space
DSU_BP.O
Enter
FI
IBM Software Services Group
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
xli
Charter Member
Charter Member
Posts: 74
Joined: Fri May 09, 2003 12:31 am

Post by xli »

Thanks, Ray

Now I have added ExecSH record in VOC file :

DSU.ExecSH
001 V
002 DSU_BP.O/DSU.ExecSH
003 B
004 BN
009 DSU_BP.O

While I ran the test job, I got another error message :

before-job routine returned error: Cataloged routine DSU.ExecSH - unable to open object DSU_BP.O/DSU.ExecSH

how to fix this issue ?

many thanks

xli
ArndW
Participant
Posts: 16318
Joined: Tue Nov 16, 2004 9:08 am
Location: Germany
Contact:

Post by ArndW »

Is there a file called DSU.ExecSH in the project sub-directory DSU_BP.O? If not, copy it in from the same directory in another (functioning) project.
xli
Charter Member
Charter Member
Posts: 74
Joined: Fri May 09, 2003 12:31 am

Post by xli »

Great, it works now !

Many thanks to Ray and ArndW for your help.


xli
xli
Charter Member
Charter Member
Posts: 74
Joined: Fri May 09, 2003 12:31 am

Post by xli »

One more question :

I found another records in VOC file :

DSX.EXECSH
001 V
002 DSG_BP.O/ExecSH.B
003 B
004 BN
009 DSG_BP.O

Compared with the record I created :

DSU.ExecSH
001 V
002 DSU_BP.O/DSU.ExecSH
003 B
004 BN
009 DSU_BP.O

Seems they are pointing to the same routine ExecSH. why are there two records ? what is the relationship between them ?

Thanks

xli
ArndW
Participant
Posts: 16318
Joined: Tue Nov 16, 2004 9:08 am
Location: Germany
Contact:

Post by ArndW »

Actually, they are pointing at different objects in the same folder, "ExecSH.B" and "DSU.ExecSH", respectively.

The DSX prefixed names are for DataStage supplied items, the DSU prefix means user-supplied ones.
xli
Charter Member
Charter Member
Posts: 74
Joined: Fri May 09, 2003 12:31 am

Post by xli »

confused, as I said, I can see both DSU.ExecSH and DSX .EXECSH in a new project.

Then, is ExecSH a DataStage supplied one or user supplied one ? I have thought of it as DataStage supplied. Actually, I can only see ExecSH in the Routine folder, no EXECSH.


xli
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

It is supplied as part of the standard install. However, it sounds like someone has futzed around and created a 'User Defined' version of it as well, seemingly with the same name - not exactly what I would call a Best Practice. :?
-craig

"You can never have too many knives" -- Logan Nine Fingers
xli
Charter Member
Charter Member
Posts: 74
Joined: Fri May 09, 2003 12:31 am

Post by xli »

chulett wrote:It is supplied as part of the standard install. However, it sounds like someone has futzed around and created a 'User Defined' version of it as well, seemingly with the same name - not exactly what I would call a Best Practice. :?
Hmmm, I don't think there is someone creating a user defined ExecSH routine. :roll:

These two records can be found in a new project, meanwhile, I believe you can find these two records in your datastage project too.
Post Reply