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)
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