Я определил и протестировал пользовательскую процедуру, которая обрабатывает данные так, как я хочу, но я также хочу иметь возможность обрабатывать нулевые значения, переданные в поле. Независимо от того, что я пытаюсь сделать, я получаю следующую ошибку, когда в подпрограмму передается нуль.
Поле «Данные» из входного набора данных «0» имеет значение NULL. Запись удалена.
У меня есть уловка в подпрограмме для обработки переданного в нее NULL, но я понимаю, что Datastage не хранит NULL в стандарте c-типа. Что мне нужно сделать, чтобы обработать эти нули в подпрограмме, и как я могу предотвратить удаление записи в datastage? Я понимаю, что мог бы просто добавить NullToEmpty для этого поля, но у нас есть сотни заданий и столбцов, поэтому я бы предпочел сильно консолидировать это.
Например, вот код подпрограммы на С++. trimSpace определен и работает нормально, поэтому он опущен.
char * BlankToValue(char *InStr, char *RepStr)
{
if ((InStr == NULL) || (InStr[0] == '\0')) // Check for null pointer at first character of input string.
{
return RepStr; // Return replacement string if true. This is to prevent unnecessary processing.
} else
{
trimSpace(InStr); // Call previously established function.
if (InStr[0] == '\0') // Checks first character of cleaned input string for null pointer.
{
return RepStr; // Return replacement string if true.
} else
{
return InStr; // Return new input string if false.
}
}
}