Как обрабатывать нули в параллельной программе в Datastage - PullRequest
0 голосов
/ 16 июня 2020

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

Поле «Данные» из входного набора данных «0» имеет значение NULL. Запись сброшена.

У меня есть ловушка в программе для обработки переданного в нее NULL, но я понимаю, что Datastage не хранит NULL в стандарте типа c. Что мне нужно сделать, чтобы обработать эти нули в подпрограмме, и как я могу остановить удаление записи из данных? Я понимаю, что я мог бы просто добавить NullToEmpty для этого поля, но у нас есть сотни заданий и столбцов, поэтому я бы предпочел сильно консолидировать это.

Например, вот код C ++ для подпрограммы. 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.
        }
    }
}

1 Ответ

0 голосов
/ 17 июня 2020

Стоит ли тестировать с IsNull ()?

...