какой тип данных может поддерживать возвращаемое значение из db2 / mainframe при выполнении кода с использованием программы C - PullRequest
0 голосов
/ 16 июня 2020

Случайное значение, сгенерированное в DB2 / мэйнфрейме: 1111111111111111

Тип данных в сценарии COBOL для возвращаемых значений - Decimal (15)

Тип данных объявлен как SQL_C_LONG в c программе

Код

c завершается ошибкой при попытке выполнить db2 SP в linux из-за ошибки ниже:

SQLSTATE: 22003 Собственный код ошибки: 4294867297 [IBM] [Драйвер CLI] CLI0111E Numeri c value out диапазона. SQLSTATE = 22003

Ответы [ 2 ]

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

Не существует эквивалентного C типа данных для десятичных чисел, согласно документации IBM вы должны использовать двойные.

Поддерживаемые типы данных в C и C ++

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

Кажется, это зависит от ресурсов, которые я просмотрел, но по крайней мере два из них определяют «длинный» как 2 ^ 31-1, что составляет 2 147 483 647 ... явно меньше, чем 1,111,111,111,111,111. Похоже, что тип C "long long int" - это 2 ^ 63-1, который должен содержать эту большую группу единиц с небольшим пространством для передышки ... (https://www.geeksforgeeks.org/data-types-in-c/)

...