Square root of a negative

Post questions here relative to DataStage Server Edition for such areas as Server job design, DS Basic, Routines, Job Sequences, etc.

Moderators: chulett, rschirm, roy

Post Reply
jasper
Participant
Posts: 111
Joined: Mon May 06, 2002 1:25 am
Location: Belgium

Square root of a negative

Post by jasper »

hi,
I've created a server job that basically is:
folder-stage(all .xml-files, which is mostly only one)
xml-input stage with 3 different outputs (different key-column)
this data is then loaded in 3 oracle-stages
these stages are then again read and linked to a transformer which is again writing to an oracle stage.

In the log I get warnings like:DataStage Job 448 Phantom 19107
Program "DSD.StageRun": Line 301, Square root of a negative number.
DataStage Phantom Finished.
However: I'm not doing any mathematical function, there's even no function being used .

Any idea's? I know I can just suppress the message, but I would like to have an idea of what is happening.
Is there any way I can find the file where it is giving problems at 'line 301' (like the generate OSH in the parallel jobs). I'm not really famiiliar with server-jobs, mostly working parallel.
roy
Participant
Posts: 2598
Joined: Wed Jul 30, 2003 2:05 am
Location: Israel

Post by roy »

Hi,
I posted this info both here and @ ADN before.
Please use the search here to find how you get to the code you need.
It should be in the RT_BPnnn directory where nnn is your job id.
(in your case 448)

IHTH,
Roy R.
Time is money but when you don't have money time is all you can afford.

Search before posting:)

Join the DataStagers team effort at:
http://www.worldcommunitygrid.org
Image
ArndW
Participant
Posts: 16318
Joined: Tue Nov 16, 2004 9:08 am
Location: Germany
Contact:

Post by ArndW »

Actually, in this case the program is DSD.StageRun - I looked at the compiled code and there is no SQRT statement to be found anywhere in there. Can you clear the &PH& subdirectory before your run and then look at the {text} files in there after an aborted run to see if there is any additional information?
jasper
Participant
Posts: 111
Joined: Mon May 06, 2002 1:25 am
Location: Belgium

Post by jasper »

ok,
I did the search on the square root part, this didn't show anything. It was only while writing the post I thought about the question where to find the code.

Still with the code it does not become clear. (there is no line 301)

Code: Select all

 more JOB.1061193054.DT.1373958241.TRANS1
* Tokens were replaced below as follows:
* JobParam%%1 <= OUTDIR
* Pin%%V0S31P1.Column%%1 <= vod.VodItembroadcasterId
* Pin%%V0S31P1.Column%%2 <= vod.contentRef
* Pin%%V0S31P1.Column%%3 <= vod.VodItemid
* Pin%%V0S31P1.Column%%4 <= vod.nodeRefList
* Pin%%V0S31P1.Column%%5 <= vod.previewDate
* Pin%%V0S31P1.Column%%6 <= vod.viewingLimit
* Pin%%V0S31P1.Column%%7 <= vod.viewingWindow
* Pin%%V0S31P1.Column%%8 <= vod.VodItemPeriodduration
* Pin%%V0S31P1.Column%%9 <= vod.Periodend
* Pin%%V0S31P1.Column%%10 <= vod.Periodstart
* GET.Pin%%V0S31P1 <= GET.vod
* Pin%%V0S31P1.REJECTEDCODE <= vod.REJECTEDCODE
* Pin%%V0S31P2.Column%%1 <= contnet_lk.duration
* Pin%%V0S31P2.Column%%2 <= contnet_lk.Contentid
* Pin%%V0S31P2.Column%%3 <= contnet_lk.title
* GET.Pin%%V0S31P2 <= GET.contnet_lk
* Pin%%V0S31P2.REJECTEDCODE <= contnet_lk.REJECTEDCODE
* Pin%%V0S31P3.Column%%1 <= prod_lk.currency
* Pin%%V0S31P3.Column%%2 <= prod_lk.elemList
* Pin%%V0S31P3.Column%%3 <= prod_lk.price
* Pin%%V0S31P3.Column%%4 <= prod_lk.tax
* GET.Pin%%V0S31P3 <= GET.prod_lk
* Pin%%V0S31P3.REJECTEDCODE <= prod_lk.REJECTEDCODE
* Pin%%V0S31P4.Column%%1 <= DSLink37.VodItembroadcasterId
* Pin%%V0S31P4.Column%%2 <= DSLink37.contentRef
* Pin%%V0S31P4.Column%%3 <= DSLink37.VodItemid
* Pin%%V0S31P4.Column%%4 <= DSLink37.nodeRefList
* Pin%%V0S31P4.Column%%5 <= DSLink37.previewDate
* Pin%%V0S31P4.Column%%6 <= DSLink37.viewingLimit
* Pin%%V0S31P4.Column%%7 <= DSLink37.viewingWindow
* Pin%%V0S31P4.Column%%8 <= DSLink37.VodItemPeriodduration
* Pin%%V0S31P4.Column%%9 <= DSLink37.Periodend
* Pin%%V0S31P4.Column%%10 <= DSLink37.Periodstart
* Pin%%V0S31P4.Column%%11 <= DSLink37.duration
* Pin%%V0S31P4.Column%%12 <= DSLink37.title
* Pin%%V0S31P4.Column%%13 <= DSLink37.currency
* Pin%%V0S31P4.Column%%14 <= DSLink37.price
* Pin%%V0S31P4.Column%%15 <= DSLink37.tax
* PUT.Pin%%V0S31P4 <= PUT.DSLink37
* Pin%%V0S31P4.REJECTED <= DSLink37.REJECTED
* Pin%%V0S31P4.REJECTEDCODE <= DSLink37.REJECTEDCODE
*
* Subroutine for active stage import_lysis_xml.Transformer_31 generated at 13:33:48 31 AUG 2005
*
SUBROUTINE DSTransformerStage(HANDLES,ERROR)

$INCLUDE DSINCLUDE DSD_RTCONFIG.H
$INCLUDE DSINCLUDE DSD_STAGE.H
$INCLUDE DSINCLUDE DSD_BCI.H

$DEFINE JobParam%%1 STAGECOM.JOB.STATUS<7,1>

$INCLUDE DSINCLUDE JOBCONTROL.H
DEFFUN DSRLoadString(Num,Text,Args) CALLING '*DataStage*DSR_LOADSTRING'
$DEFINE Pin%%V0S31P1.Column%%1 STAGECOM.ARR(1)
$DEFINE Pin%%V0S31P1.Column%%2 STAGECOM.ARR(2)
$DEFINE Pin%%V0S31P1.Column%%3 STAGECOM.ARR(3)
$DEFINE Pin%%V0S31P1.Column%%4 STAGECOM.ARR(4)
$DEFINE Pin%%V0S31P1.Column%%5 STAGECOM.ARR(5)
$DEFINE Pin%%V0S31P1.Column%%6 STAGECOM.ARR(6)
$DEFINE Pin%%V0S31P1.Column%%7 STAGECOM.ARR(7)
$DEFINE Pin%%V0S31P1.Column%%8 STAGECOM.ARR(8)
$DEFINE Pin%%V0S31P1.Column%%9 STAGECOM.ARR(9)
$DEFINE Pin%%V0S31P1.Column%%10 STAGECOM.ARR(10)
$DEFINE GET.Pin%%V0S31P1 CALL $DSP.GetNext(1,Pin%%V0S31P1.REJECTEDCODE)
IF STAGECOM.TRACE.STATS THEN CALL $PERF.NAME(-2,'contnet_lk.Derivation')
$DEFINE Pin%%V0S31P2.Column%%1 STAGECOM.ARR(11)
$DEFINE Pin%%V0S31P2.Column%%2 STAGECOM.ARR(12)
$DEFINE Pin%%V0S31P2.Column%%3 STAGECOM.ARR(13)
$DEFINE GET.Pin%%V0S31P2 CALL $DSP.GetByKey(2,Pin%%V0S31P2.REJECTEDCODE)
IF STAGECOM.TRACE.STATS THEN CALL $PERF.NAME(-3,'prod_lk.Derivation')
$DEFINE Pin%%V0S31P3.Column%%1 STAGECOM.ARR(14)
$DEFINE Pin%%V0S31P3.Column%%2 STAGECOM.ARR(15)
$DEFINE Pin%%V0S31P3.Column%%3 STAGECOM.ARR(16)
$DEFINE Pin%%V0S31P3.Column%%4 STAGECOM.ARR(17)
$DEFINE GET.Pin%%V0S31P3 CALL $DSP.GetByKey(3,Pin%%V0S31P3.REJECTEDCODE)
IF STAGECOM.TRACE.STATS THEN CALL $PERF.NAME(-4,'DSLink37.Derivation')
$DEFINE Pin%%V0S31P4.Column%%1 STAGECOM.ARR(1)
$DEFINE Pin%%V0S31P4.Column%%2 STAGECOM.ARR(2)
$DEFINE Pin%%V0S31P4.Column%%3 STAGECOM.ARR(3)
$DEFINE Pin%%V0S31P4.Column%%4 STAGECOM.ARR(4)
$DEFINE Pin%%V0S31P4.Column%%5 STAGECOM.ARR(5)
$DEFINE Pin%%V0S31P4.Column%%6 STAGECOM.ARR(6)
$DEFINE Pin%%V0S31P4.Column%%7 STAGECOM.ARR(7)
$DEFINE Pin%%V0S31P4.Column%%8 STAGECOM.ARR(8)
$DEFINE Pin%%V0S31P4.Column%%9 STAGECOM.ARR(9)
$DEFINE Pin%%V0S31P4.Column%%10 STAGECOM.ARR(10)
$DEFINE Pin%%V0S31P4.Column%%11 STAGECOM.ARR(11)
$DEFINE Pin%%V0S31P4.Column%%12 STAGECOM.ARR(13)
$DEFINE Pin%%V0S31P4.Column%%13 STAGECOM.ARR(14)
$DEFINE Pin%%V0S31P4.Column%%14 STAGECOM.ARR(16)
$DEFINE Pin%%V0S31P4.Column%%15 STAGECOM.ARR(17)
$DEFINE PUT.Pin%%V0S31P4 CALL $DSP.Put(4, Pin%%V0S31P4.REJECTEDCODE)

UPDATE.COUNT = STAGECOM.RATE



LOOP
        REJECTED = @TRUE
        * Get next row from primary input pin vod
        STAGECOM.PINNO = 1
        GET.Pin%%V0S31P1
        ERROR = Pin%%V0S31P1.REJECTEDCODE
WHILE NOT(ERROR)
        * Primary Key derivation code for pin contnet_lk
        STAGECOM.PINNO = 2
            IF STAGECOM.TRACE.STATS THEN CALL $PERF.BEGIN(-2)
        Pin%%V0S31P2.Column%%2 = Pin%%V0S31P1.Column%%2
            IF STAGECOM.TRACE.STATS THEN CALL $PERF.END(-2)
        GET.Pin%%V0S31P2
        * Primary Key derivation code for pin prod_lk
        STAGECOM.PINNO = 3
            IF STAGECOM.TRACE.STATS THEN CALL $PERF.BEGIN(-3)
        Pin%%V0S31P3.Column%%2 = Pin%%V0S31P1.Column%%3
            IF STAGECOM.TRACE.STATS THEN CALL $PERF.END(-3)
        GET.Pin%%V0S31P3

        STAGECOM.PINNO = 4
        * This is the first link in this TXN group, start the transaction.
        IF BCICOM.TXGROUPSTATUS<4,1> = "" OR BCICOM.TXGROUPSTATUS<4,1> = 0 THEN
            TXSTATUS = 0
            CALL $DSP.TxnStart(4, TXSTATUS)
            IF TXSTATUS = TXNStarted THEN BCICOM.TXGROUPSTATUS<4,1> = TXSTATUS
            BCICOM.TXGROUPSTATUS<4,2> = 4       ;* Pin handle
        END
        Pin%%V0S31P4.REJECTEDCODE = 0
        IF BCICOM.TXGROUPSTATUS<4,1> = TXNStarted THEN
            IF STAGECOM.TRACE.STATS THEN CALL $PERF.BEGIN(-4)
            IF @TRUE THEN
                * Column derivation code for pin DSLink37
                Pin%%V0S31P4.REJECTED = @FALSE
            IF STAGECOM.TRACE.STATS THEN CALL $PERF.END(-4)

                PUT.Pin%%V0S31P4
                IF NOT(Pin%%V0S31P4.REJECTEDCODE) THEN
                    REJECTED = @FALSE
                END ELSE
                    Pin%%V0S31P4.REJECTED = @TRUE
                    * TXN Continue on SQL write failure
                END
            END
            ELSE
                Pin%%V0S31P4.REJECTED = @TRUE
                Pin%%V0S31P4.REJECTEDCODE = 0
                * TXN Continue on link constraint failure
            END
        END


        FOR I = 4 TO 4
            BEGIN CASE
            CASE BCICOM.TXGROUPSTATUS<I,1> = TXNCommitted OR BCICOM.TXGROUPSTATUS<I,1> = TXNAborted
                BCICOM.TXGROUPSTATUS<I,1> = ""
            CASE BCICOM.TXGROUPSTATUS<I,1> <> ""
                BCICOM.TXGROUPSTATUS<I,1> = TXNStarted
            END CASE
        NEXT I

  UPDATE.COUNT -= 1
  IF UPDATE.COUNT LE 0 THEN CALL DSD.Update(HANDLES);UPDATE.COUNT = STAGECOM.RATE
REPEAT

IF (ERROR = DSE.EOF) or (ERROR = DSE.EOT) THEN
    TXSTATUS = 0
    * Transaction size is 0 - commit pending rows.
    CALL $DSP.TxnCommit(4, TXSTATUS)
END
RETURN
END
jasper
Participant
Posts: 111
Joined: Mon May 06, 2002 1:25 am
Location: Belgium

Post by jasper »

in &PH& it just sais:
more DSD.RUN_49231_13758 :

DataStage Job 448 Phantom 9831
DataStage Phantom Finished.
kduke
Charter Member
Charter Member
Posts: 5227
Joined: Thu May 29, 2003 9:47 am
Location: Dallas, TX
Contact:

Post by kduke »

I think this is one of two things. Either a section is missing or you defined 2 groups which repeat. I had to process the same data twice because or 2 groups which repeat.
Mamu Kim
chulett
Charter Member
Charter Member
Posts: 43085
Joined: Tue Nov 12, 2002 4:34 pm
Location: Denver, CO

Post by chulett »

jasper wrote:I did the search on the square root part, this didn't show anything.
Searching reveals four other posts going back over two years where people have seen this error message. They all seem to have something in common - XML on Sun Solaris. It was acknowledged as a bug by Ascential and supposedly on their fix list. Doesn't sound like it ever was. :?

Now, if you're not runnng on a Sun platform...
-craig

"You can never have too many knives" -- Logan Nine Fingers
vmcburney
Participant
Posts: 3593
Joined: Thu Jan 23, 2003 5:25 pm
Location: Australia, Melbourne
Contact:

Post by vmcburney »

I was told by Ascential support that it was a known defect in the XML Input stage on Solaris and we could just ignore it. Posted this same message some months back when someone else asked the same question. Doesn't cause any harm to your data, it's just a nuisance that may result in your support staff missing a more important warning message in that job.
Post Reply