Error while compiling parallel routine

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
bala_135
Premium Member
Premium Member
Posts: 156
Joined: Fri Oct 28, 2005 1:00 am
Location: Melbourne,Australia

Error while compiling parallel routine

Post by bala_135 »

Hello All,

I have written a c code which takes 2 arguments and adds it and return it to the main program.I have compiled and sucessfully got the result.Type i have taken care.

I want to call this external function in my stage.I am using a parallel routine.

In the routine,I am giving the libary path where my object code and exes are located.

When i use this in the job i am getting the following compile error.

Do i need to do some setting to make it work.

##I TOSH 000002 20:05:48(001) <main_program> orchgeneral: loaded
##I TOSH 000002 20:05:48(002) <main_program> orchsort: loaded
##I TOSH 000002 20:05:48(003) <main_program> orchstats: loaded
##W TFPA 000012 20:05:49(000) <main_program> Warning: the PWD environment variable is not defined. Remote process startup may be unsuccessful as a result.If your ORCHESTRATE job does not start up correctly, please set your PWD variable to a value that will work on all nodes of your system.
##E TBLD 000000 20:05:50(000) <main_program> Error when checking composite operator: Subprocess command failed with exit status 32512
##E TFSR 000019 20:05:50(001) <main_program> Could not check all operators because of previous error(s)
##W TFCP 000000 20:05:50(002) <transform> Error when checking composite operator: The number of reject datasets "0"is less than the number of input datasets "1".
##W TBLD 000000 20:05:50(003) <main_program> Error when checking composite operator: Output from subprocess: sed: not found

##W TBLD 000000 20:05:50(004) <main_program> Error when checking composite operator: Output from subprocess: cxx: not found

##I TFCP 000008 20:05:50(005) <transform> Error when checking composite operator: cxx -O -IC:/Ascential/DataStage/PXEngine/include -W/TP -W/EHa -DAPT_USE_ANSI_IOSTREAMS -c C:/Ascential/DataStage/Projects/sam1/RT_BP1.O/V0S3_Untitled1_Transformer_3.C -o C:/Ascential/DataStage/Projects/sam1/RT_BP1.O/V0S3_Untitled1_Transformer_3.tmp.o
##E TCOS 000029 20:05:50(006) <main_program> Creation of step finished with status = FAILED (Untitled1.Transformer_3)

*** Internal Generated Transformer Code follows:
0001: //
0002: // Generated file to implement the V0S3_Untitled1_Transformer_3 transform operator.
0003: //
0004:
0005: // define our input/output link names
0006: inputname 0 DSLink2;
0007: outputname 0 DSLink5;
0008:
0009: initialize {
0010: // define our row rejected variable
0011: int8 RowRejected0;
0012:
0013: // define our null set variable
0014: int8 NullSetVar0;
0015:
0016: }
0017:
0018: mainloop {
0019: // initialise our row rejected variable
0020: RowRejected0 = 1;
0021:
0022: // evaluate columns (no constraints) for link: DSLink5
0023: writerecord 0;
0024: RowRejected0 = 0;
0025: }
0026:
0027: finish {
0028: }
0029:
*** End of Internal Generated Transformer Code


Thanks,
Bala.
lstsaur
Participant
Posts: 1139
Joined: Thu Oct 21, 2004 9:59 pm

Post by lstsaur »

Bala,
I am assuming that you have installed .NET 2003 C++ compiler and your parallel jobs using Transformer stage are working.

If above assumption is correct, then just make sure the path that you populated in the Library Path of the general page is pointing to the path of the Object you created, e.g. C:\yourC++Loaction\TrxFuncs.o.
bala_135
Premium Member
Premium Member
Posts: 156
Joined: Fri Oct 28, 2005 1:00 am
Location: Melbourne,Australia

Post by bala_135 »

Hi Istsaur,

Thank you very much for the reply.
I am using a Turbo C complier to create the c program(complied,sucesssfully ran there),it creates the object code as .obj and an executable file *.exe.

Now in my library path when i give the object file its showing an error.

.NET 2003 C++ compiler is installed because my other thransformer jobs are working fine.

I am having a doubt is this the problem.Creating a c program in turbo c complier and trying to call that in .NET 2003 C++ compiler.

Regards,
Bala.
kumar_s
Charter Member
Charter Member
Posts: 5245
Joined: Thu Jun 16, 2005 11:00 pm

Post by kumar_s »

##W TFPA 000012 20:05:49(000) <main_program> Warning: the PWD environment variable is not defined. Remote process startup may be unsuccessful as a result.If your ORCHESTRATE job does not start up correctly, please set your PWD variable to a value that will work on all nodes of your system.
Check out this error. You may need to set a user defined environmental varriable called PDW and assign the default project directy in it or a '.'.
Impossible doesn't mean 'it is not possible' actually means... 'NOBODY HAS DONE IT SO FAR'
bala_135
Premium Member
Premium Member
Posts: 156
Joined: Fri Oct 28, 2005 1:00 am
Location: Melbourne,Australia

Post by bala_135 »

Hi Kumar/Istsaur

I have set the PWD variable pointing to my project now that warning is gone but still i cannot compile it.

Regarding the setting of the library path.I have folder which has the
C code,object code and executables.I am browsing and giving that in the library path is that right because each time its saying cannot open the file.

Error message.
Output from transformer compilation follows:

##I TFCN 000001 17:24:21(000) <main_program>
Ascential DataStage(tm) Enterprise Edition 7.5
Copyright (c) 2004, 1997-2004 Ascential Software Corporation.
All Rights Reserved


##I TOSH 000002 17:24:21(001) <main_program> orchgeneral: loaded
##I TOSH 000002 17:24:21(002) <main_program> orchsort: loaded
##I TOSH 000002 17:24:21(003) <main_program> orchstats: loaded
##E TBLD 000000 17:24:25(000) <main_program> Error when checking composite operator: Subprocess command failed with exit status 40192
##E TFSR 000019 17:24:25(001) <main_program> Could not check all operators because of previous error(s)
##W TFCP 000000 17:24:25(002) <transform> Error when checking composite operator: The number of reject datasets "0"is less than the number of input datasets "1".
##I TBLD 000000 17:24:25(003) <main_program> Error when checking composite operator: Output from subprocess: C:\Ascential\DataStage\Projects\Rafic\RT_BP49.O\V0S3_Routine_Transformer_3.C(236) : warning C4244: '=' : conversion from 'APT_Int64' to 'int', possible loss of data

##I TFCP 000008 17:24:25(004) <transform> Error when checking composite operator: cxx -LC:/Ascential/DataStage/Projects/Rafic/RT_BP49.O/ -LC:/Ascential/DataStage/PXEngine/lib -LC:/Ascential/DataStage/PXEngine/user_lib -W/TP -W/dll -W/base:0x50000000 -lliborchnt -lliborchcorent -lliborchbuildopnt F:\bala\C\COMMAND\TrxFuncs.o C:/Ascential/DataStage/Projects/Rafic/RT_BP49.O/V0S3_Routine_Transformer_3.tmp.o -o C:/Ascential/DataStage/Projects/Rafic/RT_BP49.O/V0S3_Routine_Transformer_3.dll
##I TBLD 000000 17:24:25(005) <main_program> Error when checking composite operator: Output from subprocess: LINK : warning LNK4224: /DEBUGTYPE:BOTH is no longer supported; ignored

##I TBLD 000000 17:24:25(006) <main_program> Error when checking composite operator: Output from subprocess: LINK : fatal error LNK1181: cannot open input file 'F:balaCCOMMANDTrxFuncs.o'

##E TCOS 000029 17:24:25(007) <main_program> Creation of step finished with status = FAILED (Routine.Transformer_3)

*** Internal Generated Transformer Code follows:
0001: //
0002: // Generated file to implement the V0S3_repos_Transformer_3 transform operator.
0003: //
0004:
0005: // define external functions used
0006: extern int32 P1(int32 arg1,int32 arg2);
0007:
0008: // define our input/output link names
0009: inputname 0 DSLink2;
0010: outputname 0 DSLink5;
0011:
0012: initialize {
0013: // define our row rejected variable
0014: int8 RowRejected0;
0015:
0016: // define our null set variable
0017: int8 NullSetVar0;
0018:
0019: }
0020:
0021: mainloop {
0022: // initialise our row rejected variable
0023: RowRejected0 = 1;
0024:
0025: // evaluate columns (no constraints) for link: DSLink5
0026: DSLink5.New = P1(1 , 2);
0027: writerecord 0;
0028: RowRejected0 = 0;
0029: }
0030:
0031: finish {
0032: }
0033:
*** End of Internal Generated Transformer Code

Regards,
Bala.
lstsaur
Participant
Posts: 1139
Joined: Thu Oct 21, 2004 9:59 pm

Post by lstsaur »

Hi Bala,
It's a problem that you creating a c program in turbo c complier and trying to call that in .NET 2003 C++ compiler. Your object code should definetely have a .o not a .obj.

I could see that you tried to run the TrxFunc.o example program provided from DataStage EE. I have tried TrxFunc.o routine on my 7.5x2 EE and it works as expected. You are almost there. Good luck.
kumar_s
Charter Member
Charter Member
Posts: 5245
Joined: Thu Jun 16, 2005 11:00 pm

Post by kumar_s »

Also check the necessary permision, including executable permission available for that object file.
Impossible doesn't mean 'it is not possible' actually means... 'NOBODY HAS DONE IT SO FAR'
Post Reply