Page 1 of 1

Internal Error: (nullFieldEntry) in Transformer

Posted: Wed Mar 01, 2006 2:13 pm
by yogi_yogesh
I get the following error while compiling my job with only noticable error message being -- ##F TUXX 000001 13:24:57(002) <main_program> Internal Error: (nullFieldEntry): transform/evalexp.C: 5568

Any ideas when/why this is caused!!!

---------------------------------------------------------------------------------

Output from transformer compilation follows:

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


##I TUTL 000031 13:24:56(001) <main_program> The open files limit is 2000; raising to 2147483647.
##I TOSH 000002 13:24:56(002) <main_program> orchgeneral: loaded
##I TOSH 000002 13:24:56(003) <main_program> orchsort: loaded
##I TOSH 000002 13:24:56(004) <main_program> orchstats: loaded
##I TFSC 000001 13:24:56(007) <main_program> APT configuration file: /app/dstg/Ascential/DataStage/Configurations/PM_Config_PX.apt
##W TCOS 000049 13:24:57(000) <main_program> Parameter specified but not used in flow: DSPXWorkingDir
##F TUXX 000001 13:24:57(002) <main_program> Internal Error: (nullFieldEntry): transform/evalexp.C: 5568
Traceback: Could not obtain stack trace; check that 'dbx' and 'sed' are installed and on your PATH (jbPM_WINSHoldTransIHProcDet.lc_PROC_REC_TYPE1.xfm_NUMVAL)

*** Internal Generated Transformer Code follows:
0001: //
0002: // Generated file to implement the C5V0S75_repos_lc_PROC_REC_TYPE1_xfm_NUMVAL transform operator.
0003: //
0004:
0005: // define our input/output link names
0006: inputname 0 lk_REC_TYPE1;
0007: outputname 0 lk_NUMVAL_PASS;
0008: outputname 1 lk_NUMVAL_FAIL;
0009:
0010: global {
0011: // Job parameter declaration
0012: string PM_SRC_FILE_PATH;
0013: string PM_SRC_FILE;
0014: string DSJobName;
0015: }
0016:
0017: initialize {
0018: // define our row rejected variable
0019: int8 RowRejected0;
0020:
0021: // define our null set variable
0022: int8 NullSetVar0;
0023:
0024: // declare our intermediate variables for this section
0025: string InterVar0_0;
0026: string InterVar0_1;
0027: string InterVar0_2;
0028: string InterVar0_3;
0029: string InterVar0_4;
0030: string InterVar0_5;
0031: string InterVar0_6;
0032: string InterVar0_7;
0033: string InterVar0_8;
0034: string InterVar0_9;
0035: string InterVar0_10;
0036: string InterVar0_11;
0037: string InterVar0_12;
0038: string InterVar0_13;
0039: string InterVar0_14;
0040: string InterVar0_18;
0041: string InterVar0_19;
0042: string InterVar0_35;
0043:
0044: // initialise constant values which require conversion
0045: InterVar0_0 = "Y";
0046: InterVar0_1 = "N";
0047: InterVar0_2 = "%2000yy%mm%dd";
0048: InterVar0_3 = "WINSHLD";
0049: InterVar0_4 = "ETL";
0050: InterVar0_5 = "PM-S1000";
0051: InterVar0_6 = "NUMERIC VALIDATION FAILED FOR";
0052: InterVar0_7 = " MARKET_VALUE";
0053: InterVar0_8 = " OR ACCRU_INCOME";
0054: InterVar0_9 = " OR CONTRACT_RECV";
0055: InterVar0_10 = " OR CONTRACT_PAYB";
0056: InterVar0_11 = " OR NET_CASH";
0057: InterVar0_12 = " OR ACCRUED_EXPENSE";
0058: InterVar0_13 = " OR OTHER_LIABILITIES";
0059: InterVar0_14 = " OR SHORT_SECURITIES_MKT";
0060: InterVar0_18 = "";
0061: InterVar0_19 = "|";
0062: InterVar0_35 = "SYSTEM";
0063: // Stage variable declaration and initialisation
0064: string[1] StageVar0_stgNumValidationPass;
0065: StageVar0_stgNumValidationPass = "";
0066: }
0067:
0068: mainloop {
0069: // initialise our row rejected variable
0070: RowRejected0 = 1;
0071:
0072: // declare our intermediate variables for this section
0073: dfloat InterVar0_15;
0074: dfloat InterVar0_16;
0075: string InterVar0_17;
0076: string InterVar0_20;
0077: string InterVar0_21;
0078: string InterVar0_22;
0079: string InterVar0_23;
0080: string InterVar0_24;
0081: string InterVar0_25;
0082: string InterVar0_26;
0083: string InterVar0_27;
0084: string InterVar0_28;
0085: string InterVar0_29;
0086: string InterVar0_30;
0087: string InterVar0_31;
0088: string InterVar0_32;
0089: string InterVar0_33;
0090: string InterVar0_34;
0091:
0092: // evaluate the stage variables first
0093: if ((((((((is_numeric(trimc_string(lk_REC_TYPE1.MARKET_VALUE)) && is_numeric(trimc_string(lk_REC_TYPE1.ACCRU_INCOME))) && is_numeric(trimc_string(lk_REC_TYPE1.CONTRACT_RECV))) && is_numeric(trimc_string(lk_REC_TYPE1.CONTRACT_PAYB))) && is_numeric(trimc_string(lk_REC_TYPE1.NET_CASH))) && is_numeric(trimc_string(lk_REC_TYPE1.ACCRUED_EXPENSE))) && is_numeric(trimc_string(lk_REC_TYPE1.OTHER_LIABILITIES))) && is_numeric(trimc_string(lk_REC_TYPE1.SHORT_SECURITIES_MKT)))) {
0094: StageVar0_stgNumValidationPass = InterVar0_0;
0095: } else {
0096: StageVar0_stgNumValidationPass = InterVar0_1;
0097: }
0098: //;
0099:
0100: // evaluate constraint and columns for link: lk_NUMVAL_PASS
0101: if ((StageVar0_stgNumValidationPass == InterVar0_0))
0102: {
0103: lk_NUMVAL_PASS.FILE_ID = trimc_string(lk_REC_TYPE1.FILE_ID);
0104: lk_NUMVAL_PASS.FILE_TYPE_IN = trimc_string(lk_REC_TYPE1.FILE_TYPE_IND);
0105: lk_NUMVAL_PASS.RECORD_CODE_ID = trimc_string(lk_REC_TYPE1.RECORD_CODE);
0106: lk_NUMVAL_PASS.RELATIONSHIP_NO = trimc_string(lk_REC_TYPE1.RELNO);
0107: lk_NUMVAL_PASS.ACCOUNT_NO = trimc_string(lk_REC_TYPE1.ACCTNO);
0108: lk_NUMVAL_PASS.ACCOUNT_ID = trimc_string(right_substring(lk_REC_TYPE1.ACCTNO , 8));
0109: NullSetVar0 = 0;
0110: if (null(trimc_string(lk_REC_TYPE1.REQUEST_DATE))) {
0111: NullSetVar0 = 1;
0112: } else {
0113: lk_NUMVAL_PASS.REQUEST_DT = date_from_string(lk_REC_TYPE1.REQUEST_DATE , InterVar0_2);
0114: }
0115: //;
0116: NullSetVar0 = 0;
0117: if (null(trimc_string(lk_REC_TYPE1.REQUEST_DATE2))) {
0118: NullSetVar0 = 1;
0119: } else {
0120: lk_NUMVAL_PASS.REQUEST_DT2 = date_from_string(lk_REC_TYPE1.REQUEST_DATE2 , InterVar0_2);
0121: }
0122: //;
0123: NullSetVar0 = 0;
0124: if (null(trimc_string(lk_REC_TYPE1.REQUEST_DATE3))) {
0125: NullSetVar0 = 1;
0126: } else {
0127: lk_NUMVAL_PASS.REQUEST_DT3 = date_from_string(lk_REC_TYPE1.REQUEST_DATE3 , InterVar0_2);
0128: }
0129: //;
0130: lk_NUMVAL_PASS.MARKET_VL = trimc_string(lk_REC_TYPE1.MARKET_VALUE);
0131: lk_NUMVAL_PASS.ACCRUED_INCOME_AM = trimc_string(lk_REC_TYPE1.ACCRU_INCOME);
0132: lk_NUMVAL_PASS.CONTRACT_RECEIVABLE_AM = trimc_string(lk_REC_TYPE1.CONTRACT_RECV);
0133: lk_NUMVAL_PASS.CONTRACT_PAYABLE_AM = trimc_string(lk_REC_TYPE1.CONTRACT_PAYB);
0134: lk_NUMVAL_PASS.NET_CASH_AM = trimc_string(lk_REC_TYPE1.NET_CASH);
0135: lk_NUMVAL_PASS.ACCRUED_EXPENSE_AM = trimc_string(lk_REC_TYPE1.ACCRUED_EXPENSE);
0136: lk_NUMVAL_PASS.OTHER_LIABILITIES_AM = trimc_string(lk_REC_TYPE1.OTHER_LIABILITIES);
0137: lk_NUMVAL_PASS.SHORT_SECURITIES_MARKET_VL = trimc_string(lk_REC_TYPE1.SHORT_SECURITIES_MKT);
0138: writerecord 0;
0139: RowRejected0 = 0;
0140: }
0141: // evaluate constraint and columns for link: lk_NUMVAL_FAIL
0142: if ((StageVar0_stgNumValidationPass == InterVar0_1))
0143: {
0144: lk_NUMVAL_FAIL.FEED_TYPE_ID = InterVar0_3;
0145: lk_NUMVAL_FAIL.BUSINESS_UNIT_ID = lk_REC_TYPE1.RELNO;
0146: lk_NUMVAL_FAIL.APPLICATION_TY = InterVar0_4;
0147: lk_NUMVAL_FAIL.JOB_NM = DSJobName;
0148: lk_NUMVAL_FAIL.ERROR_CD = InterVar0_5;
0149: lk_NUMVAL_FAIL.ERROR_DE = ((((((((InterVar0_6 + InterVar0_7) + InterVar0_8) + InterVar0_9) + InterVar0_10) + InterVar0_11) + InterVar0_12) + InterVar0_13) + InterVar0_14);
0150: InterVar0_15 = PM_SRC_FILE_PATH;
0151: InterVar0_16 = PM_SRC_FILE;
0152: lk_NUMVAL_FAIL.ERROR_SOURCE_TX = (InterVar0_15 / InterVar0_16);
0153: if (notnull(lk_REC_TYPE1.FILE_ID)) {
0154: InterVar0_17 = lk_REC_TYPE1.FILE_ID;
0155: } else {
0156: InterVar0_17 = InterVar0_18;
0157: }
0158: if (notnull(lk_REC_TYPE1.FILE_TYPE_IND)) {
0159: InterVar0_20 = lk_REC_TYPE1.FILE_TYPE_IND;
0160: } else {
0161: InterVar0_20 = InterVar0_18;
0162: }
0163: if (notnull(lk_REC_TYPE1.RECORD_CODE)) {
0164: InterVar0_21 = lk_REC_TYPE1.RECORD_CODE;
0165: } else {
0166: InterVar0_21 = InterVar0_18;
0167: }
0168: if (notnull(lk_REC_TYPE1.RELNO)) {
0169: InterVar0_22 = lk_REC_TYPE1.RELNO;
0170: } else {
0171: InterVar0_22 = InterVar0_18;
0172: }
0173: if (notnull(lk_REC_TYPE1.ACCTNO)) {
0174: InterVar0_23 = lk_REC_TYPE1.ACCTNO;
0175: } else {
0176: InterVar0_23 = InterVar0_18;
0177: }
0178: if (notnull(lk_REC_TYPE1.REQUEST_DATE)) {
0179: InterVar0_24 = lk_REC_TYPE1.REQUEST_DATE;
0180: } else {
0181: InterVar0_24 = InterVar0_18;
0182: }
0183: if (notnull(lk_REC_TYPE1.REQUEST_DATE2)) {
0184: InterVar0_25 = lk_REC_TYPE1.REQUEST_DATE2;
0185: } else {
0186: InterVar0_25 = InterVar0_18;
0187: }
0188: if (notnull(lk_REC_TYPE1.REQUEST_DATE3)) {
0189: InterVar0_26 = lk_REC_TYPE1.REQUEST_DATE3;
0190: } else {
0191: InterVar0_26 = InterVar0_18;
0192: }
0193: if (notnull(lk_REC_TYPE1.MARKET_VALUE)) {
0194: InterVar0_27 = lk_REC_TYPE1.MARKET_VALUE;
0195: } else {
0196: InterVar0_27 = InterVar0_18;
0197: }
0198: if (notnull(lk_REC_TYPE1.ACCRU_INCOME)) {
0199: InterVar0_28 = lk_REC_TYPE1.ACCRU_INCOME;
0200: } else {
0201: InterVar0_28 = InterVar0_18;
0202: }
0203: if (notnull(lk_REC_TYPE1.CONTRACT_RECV)) {
0204: InterVar0_29 = lk_REC_TYPE1.CONTRACT_RECV;
0205: } else {
0206: InterVar0_29 = InterVar0_18;
0207: }
0208: if (notnull(lk_REC_TYPE1.CONTRACT_PAYB)) {
0209: InterVar0_30 = lk_REC_TYPE1.CONTRACT_PAYB;
0210: } else {
0211: InterVar0_30 = InterVar0_18;
0212: }
0213: if (notnull(lk_REC_TYPE1.NET_CASH)) {
0214: InterVar0_31 = lk_REC_TYPE1.NET_CASH;
0215: } else {
0216: InterVar0_31 = InterVar0_18;
0217: }
0218: if (notnull(lk_REC_TYPE1.ACCRUED_EXPENSE)) {
0219: InterVar0_32 = lk_REC_TYPE1.ACCRUED_EXPENSE;
0220: } else {
0221: InterVar0_32 = InterVar0_18;
0222: }
0223: if (notnull(lk_REC_TYPE1.OTHER_LIABILITIES)) {
0224: InterVar0_33 = lk_REC_TYPE1.OTHER_LIABILITIES;
0225: } else {
0226: InterVar0_33 = InterVar0_18;
0227: }
0228: if (notnull(lk_REC_TYPE1.SHORT_SECURITIES_MKT)) {
0229: InterVar0_34 = lk_REC_TYPE1.SHORT_SECURITIES_MKT;
0230: } else {
0231: InterVar0_34 = InterVar0_18;
0232: }
0233: lk_NUMVAL_FAIL.ERROR_DATA_TX = ((((((((((((((((((((((((((((((InterVar0_17 + InterVar0_19) + InterVar0_20) + InterVar0_19) + InterVar0_21) + InterVar0_19) + InterVar0_22) + InterVar0_19) + InterVar0_23) + InterVar0_19) + InterVar0_24) + InterVar0_19) + InterVar0_25) + InterVar0_19) + InterVar0_26) + InterVar0_19) + InterVar0_27) + InterVar0_19) + InterVar0_28) + InterVar0_19) + InterVar0_29) + InterVar0_19) + InterVar0_30) + InterVar0_19) + InterVar0_31) + InterVar0_19) + InterVar0_32) + InterVar0_19) + InterVar0_33) + InterVar0_19) + InterVar0_34);
0234: lk_NUMVAL_FAIL.PROCESS_IN = InterVar0_1;
0235: lk_NUMVAL_FAIL.CREATE_UI = InterVar0_35;
0236: lk_NUMVAL_FAIL.CREATE_TS = current_timestamp();
0237: lk_NUMVAL_FAIL.UPDATE_UI = set_null();
0238: lk_NUMVAL_FAIL.UPDATE_TS = set_null();
0239: writerecord 1;
0240: RowRejected0 = 0;
0241: }
0242: }
0243:
0244: finish {
0245: }
0246:
*** End of Internal Generated Transformer Code

Posted: Sat Mar 04, 2006 4:07 am
by ArndW
The error message seems to indicate that the compiler has trouble evaluating one of your expressions. If none of them show up red in the designer I would suggest you remove the more complicated ones one-by-one from a copy of your program until the compile error goes away; then you've identified the offending derivation and can try to analyze what is happening.

Posted: Mon Mar 06, 2006 6:21 am
by richdhan
Hi Yogesh,

Most of the time this problem occurs because of invalid derivation for stage variables or because of improper use of Environmental variables.

HTH
--Rich

Posted: Wed Mar 08, 2006 1:14 am
by yogi_yogesh
Thanks a lot guys...

I followed the breaking down approach and found that it was being caused due to the use of Trim function with IsNull function on the same variable.

In fact, applying any Null handling function on a Trim result causes the error.... nothing shows in red in designer though.

Posted: Sat Dec 22, 2007 11:16 pm
by pratyusha
I got this error for giving the following expression
NullToEmpty(TimeStampToString(Column Name))
I removed the null handling function and the job is compiled fine
Any idea why this happens?

Posted: Sun Dec 23, 2007 12:13 am
by ray.wurlod
Because the input column might be null and the TimestampToString() function does not like null.
Try something like

Code: Select all

If IsNotNull(InLink.ColumnName) Then TimestampToString(InLink.ColumnName) Else ""