Floor

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
imfarhan
Participant
Posts: 53
Joined: Tue Jul 24, 2012 9:34 am

Floor

Post by imfarhan »

Hi All Would be grateful if you could help me

The the following functions calculate total 'Minutes' between (Admission and Discharges.)

Code: Select all

 svAdmissionDate = '2013-01-01'
 svAdmissionTime = '23:55:00'
 svDischargeDate = '2013-01-02'
 svDischargeTime = '09:00:00'

 svDaysBetween     = DaysSinceFromDate(svDischargeDate, svAdmissionDate)
 svFirstDaySeconds = 86400 - MidnightSecondsFromTime(svAdmissionTime)
 svExtraDaySeconds = If svDaysBetween > 1 Then Floor((svDaysBetween-1) * 86400) Else 0
 svSAmeDay 		   = MidnightSecondsFromTime(svAdmissionTime)
 svSAmeDaySec2	   = MidnightSecondsFromTime(svDischargeTime)
 svCalcMinutes    = If svDaysBetween>0 Then Floor((svFirstDaySeconds + svSameDaySec2 + svExtraDaysSeconds)/60) Else Floor((svSameDaySec2 - svSameDaySec)/60)

When I Write into DS (DataSet) its work fine
But When I write through SCD its generate error how ever its not SCD
its generate the error on the function (Floor) when I remove the FLoor function its work fine..... But I need to use the Floor() function to remove the decimal values.

I hope make sense and I appreciate your help!!!
The Error with Floor() is shown below:

Kind regards
Farhan

Code: Select all

[img]
Output from transformer compilation follows:

##I IIS-DSEE-TFCN-00001 16:08:48(000) <main_program> 
IBM InfoSphere DataStage Enterprise Edition 8.7.0.6847 
Copyright (c) 2001, 2005-2011 IBM Corporation. All rights reserved
 


##I IIS-DSEE-TFCN-00006 16:08:48(001) <main_program> conductor uname: -s=Windows_NT; -r=1; -v=6; -n=HHTDWHBK01; -m=Pentium
##I IIS-DSEE-TOSH-00002 16:08:48(002) <main_program> orchgeneral: loaded
##I IIS-DSEE-TOSH-00002 16:08:48(003) <main_program> orchsort: loaded
##I IIS-DSEE-TOSH-00002 16:08:48(004) <main_program> orchstats: loaded
##W IIS-DSEE-TOSH-00049 16:08:48(007) <main_program> Parameter specified but not used in flow: DSPXWorkingDir
##E IIS-DSEE-TBLD-00076 16:08:52(001) <main_program> Error when checking composite operator: Subprocess command failed with exit status 24,576.
##E IIS-DSEE-TFSR-00019 16:08:52(002) <main_program> Could not check all operators because of previous error(s)
##W IIS-DSEE-TFTM-00012 16:08:52(003) <transform> Error when checking composite operator: The number of reject datasets "0" is less than the number of input datasets "1".
##I IIS-DSEE-TBLD-00000 16:08:52(004) <main_program> Error when checking composite operator: Output from subprocess: C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/include\exception(85) : warning C4985: 'strcpy_s': attributes not present on previous declaration.
        C:/PROGRA~2/MKSTOO~1/include\string.h(90) : see declaration of 'strcpy_s'
C:\IBM\InformationServer\Server\PXEngine\include\apt_util/keylookup.h(1162) : warning C4251: 'APT_KeyLookupRange::rangeOptions_' : class 'std::vector<_Ty>' needs to have dll-interface to be used by clients of class 'APT_KeyLookupRange'
        with
        [
            _
##I IIS-DSEE-TBLD-00000 16:08:52(005) <main_program> Error when checking composite operator: Output from subprocess: Ty=APT_KeyLookupRange::rangeOption
        ]
C:\IBM\InformationServer\Server\PXEngine\include\apt_components/transformop/transformbase.h(187) : warning C4244: 'argument' : conversion from 'APT_UInt64' to 'unsigned int', possible loss of data
C:\IBM\InformationServer\Server\PXEngine\include\apt_components/transformop/transformbase.h(187) : warning C4800: 'unsigned __int64' : forcing value to bool 'true' or 'false' (performance warning)
C:\IBM\InformationServer\Server\PXEngine\include\apt_components/trans
##I IIS-DSEE-TBLD-00000 16:08:52(006) <main_program> Error when checking composite operator: Output from subprocess: formop/transformbase.h(188) : warning C4244: 'argument' : conversion from 'APT_UInt64' to 'unsigned int', possible loss of data
C:\IBM\InformationServer\Server\PXEngine\include\apt_components/transformop/transformbase.h(189) : warning C4244: 'argument' : conversion from 'APT_UInt64' to 'unsigned int', possible loss of data
C:\IBM\InformationServer\Server\Projects\ReleaseTest\RT_BP3704.O\V0S333_RDS_Inpatient_Spell_Transform_x3_Diff_Transformer_Transformer_333.C(240) : warning C4101: 'output' : unreferenced
##I IIS-DSEE-TBLD-00000 16:08:52(007) <main_program> Error when checking composite operator: Output from subprocess:  local variable
C:\IBM\InformationServer\Server\Projects\ReleaseTest\RT_BP3704.O\V0S333_RDS_Inpatient_Spell_Transform_x3_Diff_Transformer_Transformer_333.C(235) : warning C4101: 'input' : unreferenced local variable
C:\IBM\InformationServer\Server\Projects\ReleaseTest\RT_BP3704.O\V0S333_RDS_Inpatient_Spell_Transform_x3_Diff_Transformer_Transformer_333.C(529) : warning C4244: '=' : conversion from 'APT_DFloat' to 'APT_Int32', possible loss of data
C:\IBM\InformationServer\Server\Projects\ReleaseTest\RT_BP
##I IIS-DSEE-TBLD-00000 16:08:52(008) <main_program> Error when checking composite operator: Output from subprocess: 3704.O\V0S333_RDS_Inpatient_Spell_Transform_x3_Diff_Transformer_Transformer_333.C(545) : warning C4244: '=' : conversion from 'double' to 'APT_Int32', possible loss of data
C:\IBM\InformationServer\Server\Projects\ReleaseTest\RT_BP3704.O\V0S333_RDS_Inpatient_Spell_Transform_x3_Diff_Transformer_Transformer_333.C(563) : warning C4244: '=' : conversion from 'APT_DFloat' to 'APT_Int32', possible loss of data
C:\IBM\InformationServer\Server\Projects\ReleaseTest\RT_BP3704.O\V0S333_RDS_Inpatient_Spell_Transform_
##I IIS-DSEE-TBLD-00000 16:08:52(009) <main_program> Error when checking composite operator: Output from subprocess: x3_Diff_Transformer_Transformer_333.C(575) : warning C4244: '=' : conversion from 'APT_DFloat' to 'APT_Int32', possible loss of data

##I IIS-DSEE-TBLD-00079 16:08:52(010) <transform> Error when checking composite operator: cxx    -LC:/IBM/InformationServer/Server/Projects/ReleaseTest/RT_BP3704.O/ -LC:/IBM/InformationServer/Server/PXEngine/lib -LC:/IBM/InformationServer/Server/PXEngine/user_lib -s -W/dll -W/base:0x50000000 -W/Zc:wchar_t- -lliborchnt -lliborchcorent -lliborchbuildopnt C:/IBM/InformationServer/Server/PXEngine/lib/calculateAgeYears.o C:/IBM/InformationServer/Server/Projects/ReleaseTest/RT_BP3704.O/V0S333_RDS_Inpatient_Spell_Transform_x3_Diff_Transformer_Transformer_333.tmp.o -o C:/IBM/InformationServer/Server/Projects/ReleaseTest/RT_BP3704.O/V0S333_RDS_Inpatient_Spell_Transform_x3_Diff_Transformer_Transformer_333.dll.
##I IIS-DSEE-TBLD-00000 16:08:52(011) <main_program> Error when checking composite operator: Output from subprocess: LIBCMT.lib(invarg.obj) : warning LNK4006: __invalid_parameter_noinfo already defined in c.lib(nutlibc4.dll); second definition ignored
LIBCMT.lib(hooks.obj) : warning LNK4006: "void __cdecl terminate(void)" (?terminate@@YAXXZ) already defined in c.lib(nutlibc4.dll); second definition ignored
LIBCMT.lib(atox.obj) : warning LNK4006: _atoi already defined in c.lib(nutlibc4.dll); second definition ignored
LIBCMT.lib(unhandld.obj) : warning LNK4006: "long __stdcall __CxxUnhandledExceptionFilter(struct _EXCEPT
##I IIS-DSEE-TBLD-00000 16:08:52(012) <main_program> Error when checking composite operator: Output from subprocess: ION_POINTERS *)" (?__CxxUnhandledExceptionFilter@@YGJPAU_EXCEPTION_POINTERS@@@Z) already defined in c.lib(unhandld.obj); second definition ignored

##I IIS-DSEE-TBLD-00000 16:08:52(013) <main_program> Error when checking composite operator: Output from subprocess: LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
C:\IBM\InformationServer\Server\Projects\ReleaseTest\RT_BP3704.O\V0S333_RDS_Inpatient_Spell_Transform_x3_Diff_Transformer_Transformer_333.dll : fatal error LNK1120: 1 unresolved externals

##E IIS-DSEE-TCOS-00029 16:08:52(014) <main_program> Creation of a step finished with status = FAILED. (RDS_Inpatient_Spell_Transform_x3_Diff_Transformer.Transformer_333)

*** Internal Generated Transformer Code follows:
0001: //
0002: // Generated file to implement the V0S333_RDS_Inpatient_Spell_Transform_x3_Diff_Transformer_Transformer_333 transform operator.
0003: //
0004: 
0005: // define external functions used
0006: extern int32 calculateAgeYears(string startDate,string endDate);
0007: 
0008: // define our input/output link names
0009: inputname 0 Add_TimeStamps;
0010: outputname 0 FromSource;
0011: 
0012: initialize {
0013: 	// define our control variables
0014: 	int8 RowRejected0;
0015: 	int8 NullSetVar0;
0016: 
0017: 	// declare our intermediate variables for this section
0018: 	string InterVar0_3;
0019: 
0020: 	// initialise constant values which require conversion
0021: 	InterVar0_3 = "Delete";
0022: 	// Stage variable declaration and initialisation
0023: 	timestamp StageVar0_svEffectiveStartTimestamp;
0024: 	StageVar0_svEffectiveStartTimestamp = timestamp_from_string("2001-01-01 00:00:01");
0025: 	timestamp StageVar0_svEffectiveEndTimestamp;
0026: 	StageVar0_svEffectiveEndTimestamp = timestamp_from_string("2001-01-01 00:00:01");
0027: 	int32 StageVar0_svDaysLOS;
0028: 	StageVar0_svDaysLOS = 0;
0029: 	date StageVar0_svAdmissionDate;
0030: 	StageVar0_svAdmissionDate = date_from_string("2001-01-01");
0031: 	time StageVar0_svAdmissionTime;
0032: 	StageVar0_svAdmissionTime = time_from_string("00:00:01");
0033: 	date StageVar0_svDischargeDate;
0034: 	StageVar0_svDischargeDate = date_from_string("2001-01-01");
0035: 	time StageVar0_svDischargeTime;
0036: 	StageVar0_svDischargeTime = time_from_string("00:00:01");
0037: 	int32 StageVar0_svDaysBetween;
0038: 	StageVar0_svDaysBetween = 0;
0039: 	int32 StageVar0_svFirstDaySeconds;
0040: 	StageVar0_svFirstDaySeconds = 0;
0041: 	int32 StageVar0_svExtraDaysSeconds;
0042: 	StageVar0_svExtraDaysSeconds = 0;
0043: 	int32 StageVar0_svSameDaySec;
0044: 	StageVar0_svSameDaySec = 0;
0045: 	int32 StageVar0_svSameDaySec2;
0046: 	StageVar0_svSameDaySec2 = 0;
0047: 	int32 StageVar0_svCalcMinutes;
0048: 	StageVar0_svCalcMinutes = 0;
0049: }
0050: 
0051: mainloop {
0052: 
0053: 	// declare our intermediate variables for this section
0054: 	int32 InterVar0_0;
0055: 	dfloat InterVar0_1;
0056: 	int32 InterVar0_2;
0057: 
0058: 	// evaluate the stage variables first
0059: 	StageVar0_svEffectiveStartTimestamp = current_timestamp();
0060: 	StageVar0_svEffectiveEndTimestamp = timestamp_offset_by_seconds(StageVar0_svEffectiveStartTimestamp , -1);
0061: 	NullSetVar0 = 0;
0062: 	if (notnull(Add_TimeStamps.DISCHARGE_DTTM)) {
0063: 		InterVar0_0 = days_since_from_date(date_from_timestamp(Add_TimeStamps.ADMISSION_DTTM) , string_from_date(date_from_timestamp(Add_TimeStamps.DISCHARGE_DTTM))) * -1;
0064: 		StageVar0_svDaysLOS = InterVar0_0;
0065: 	} else {
0066: 		NullSetVar0 = 1;
0067: 	}
0068: 	StageVar0_svDaysLOS = ((NullSetVar0 == 1) ? set_null() : StageVar0_svDaysLOS);
0069: 	StageVar0_svAdmissionDate = date_from_timestamp(Add_TimeStamps.ADMISSION_DTTM);
0070: 	StageVar0_svAdmissionTime = time_from_timestamp(Add_TimeStamps.ADMISSION_DTTM);
0071: 	StageVar0_svDischargeDate = date_from_timestamp(Add_TimeStamps.DISCHARGE_DTTM);
0072: 	StageVar0_svDischargeTime = time_from_timestamp(Add_TimeStamps.DISCHARGE_DTTM);
0073: 	StageVar0_svDaysBetween = days_since_from_date(StageVar0_svDischargeDate , string_from_date(StageVar0_svAdmissionDate));
0074: 	StageVar0_svFirstDaySeconds = (86400 - midnight_seconds_from_time(StageVar0_svAdmissionTime));
0075: 	if ((StageVar0_svDaysBetween > 1)) {
0076: 		InterVar0_1 = (StageVar0_svDaysBetween - 1) * 86400;
0077: 		StageVar0_svExtraDaysSeconds = floor(InterVar0_1);
0078: 	} else {
0079: 		StageVar0_svExtraDaysSeconds = 0;
0080: 	}
0081: 	//;
0082: 	StageVar0_svSameDaySec = midnight_seconds_from_time(StageVar0_svAdmissionTime);
0083: 	StageVar0_svSameDaySec2 = midnight_seconds_from_time(StageVar0_svDischargeTime);
0084: 	if ((StageVar0_svDaysBetween > 0)) {
0085: 		InterVar0_0 = ((StageVar0_svFirstDaySeconds + StageVar0_svSameDaySec2) + StageVar0_svExtraDaysSeconds) / 60;
0086: 		StageVar0_svCalcMinutes = InterVar0_0;
0087: 	} else {
0088: 		InterVar0_2 = (StageVar0_svSameDaySec2 - StageVar0_svSameDaySec) / 60;
0089: 		StageVar0_svCalcMinutes = InterVar0_2;
0090: 	}
0091: 	//;
0092: 
0093: 	// initialise the rejected row variable
0094: 	RowRejected0 = 1;
0095: 
0096: 	// evaluate columns (no constraints) for link: FromSource
0097: 	FromSource.EFFECTIVE_START_TIMESTAMP = StageVar0_svEffectiveStartTimestamp;
0098: 	FromSource.EFFECTIVE_END_TIMESTAMP = StageVar0_svEffectiveEndTimestamp;
0099: 	FromSource.ADMISSION_DT = date_from_timestamp(Add_TimeStamps.ADMISSION_DTTM);
0100: 	FromSource.ADMISSION_TM = time_from_timestamp(Add_TimeStamps.ADMISSION_DTTM);
0101: 	FromSource.DISCHARGE_DT = date_from_timestamp(Add_TimeStamps.DISCHARGE_DTTM);
0102: 	FromSource.DISCHARGE_TM = time_from_timestamp(Add_TimeStamps.DISCHARGE_DTTM);
0103: 	FromSource.AGE_AT_ADMISSION = calculateAgeYears(string_from_timestamp(Add_TimeStamps.BIRTH_DTTM) , string_from_timestamp(Add_TimeStamps.ADMISSION_DTTM));
0104: 	FromSource.AGE_AT_DISCHARGE = calculateAgeYears(string_from_timestamp(Add_TimeStamps.BIRTH_DTTM) , string_from_timestamp(Add_TimeStamps.DISCHARGE_DTTM));
0105: 	FromSource.LOS_DAYS = 1;
0106: 	FromSource.LOS_MINUTES = 99;
0107: 	FromSource.INSERT_FLAG = (Add_TimeStamps.BATCHACTION != InterVar0_3);
0108: 	writerecord 0;
0109: 	RowRejected0 = 0;
0110: }
0111: 
0112: finish {
0113: }
0114: 
*** End of Internal Generated Transformer Code
Farhan Syed
imfarhan
Participant
Posts: 53
Joined: Tue Jul 24, 2012 9:34 am

Post by imfarhan »

How Stupid it is

I've add one more Transformer into the Stream specifically to calculate this (Minutes) Length-of-Admission and its work.

As before there were other calculation already happend it may confilicting with the other variables.... don't know why....

Regards
Farhan
Farhan Syed
Post Reply