Как обрабатывать нули в параллельной процедуре в Datastage

Я определил и протестировал пользовательскую процедуру, которая обрабатывает данные так, как я хочу, но я также хочу иметь возможность обрабатывать нулевые значения, переданные в поле. Независимо от того, что я пытаюсь сделать, я получаю следующую ошибку, когда в подпрограмму передается нуль.

Поле «Данные» из входного набора данных «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.
        }
    }
}

person William Pearsall    schedule 16.06.2020    source источник


Ответы (1)


Должны ли вы тестировать с помощью IsNull()?

person Ray Wurlod    schedule 16.06.2020
comment
Вы имеете в виду в самом задании datastage или есть библиотека С++, специфичная для Datastage, о которой я не знаю? - person William Pearsall; 17.06.2020