Routine is not cataloged
Moderators: chulett, rschirm, roy
Routine is not cataloged
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
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
-
- Participant
- Posts: 54607
- Joined: Wed Oct 23, 2002 10:52 pm
- Location: Sydney, Australia
- Contact:
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.
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
In proj A (ExecSH does not work)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..."
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
-
- Participant
- Posts: 54607
- Joined: Wed Oct 23, 2002 10:52 pm
- Location: Sydney, Australia
- Contact:
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.
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.
IBM Software Services Group
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
Any contribution to this forum is my own opinion and does not necessarily reflect any position that IBM may hold.
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
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
-
- Participant
- Posts: 54607
- Joined: Wed Oct 23, 2002 10:52 pm
- Location: Sydney, Australia
- Contact:
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
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
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.
<a href=http://www.worldcommunitygrid.org/team/ ... TZ9H4CGVP1 target="WCGWin">
</a>
</a>
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
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
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.
The DSX prefixed names are for DataStage supplied items, the DSU prefix means user-supplied ones.
<a href=http://www.worldcommunitygrid.org/team/ ... TZ9H4CGVP1 target="WCGWin">
</a>
</a>
Hmmm, I don't think there is someone creating a user defined ExecSH routine.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.
These two records can be found in a new project, meanwhile, I believe you can find these two records in your datastage project too.