2009-06-19 2 views
4

Когда я хочу целое число в программе RPGLE, какой тип данных я должен выбрать? Я говорю о целых числах, которые не соответствуют ни одному полю в базе данных, а просто нормальному целочисленному целочисленному целю - виду эквивалента int в Java.Каким должен быть мой стандартный выбор целочисленного типа в RPGLE?

ответ

-2

Вы можете использовать двоичные (целое число со знаком) (B) или целое (беззнаковое целое число) (I). Вы можете указать размер с цифровыми значениями 3 (1 байт), 5 (2 байта), 10 (4 байта) или 20 (8 байтов). Эквивалентом Java int будет 10B.

+1

Обратите внимание, что 10B и 10I не совсем эквивалентны. 10B будет вмещать 10 десятичных цифр, т. Е. До 999999999, а 10I - до 2147483647. (Технически вы не можете иметь «10B». Максимум - 9B.) Единственное реальное использование «B» - тип данных, когда требуются дробные цифры. В противном случае они, вероятно, никогда не должны использоваться. Кроме того, integer является типом данных «I» и подписан; unsigned - «U». – user2338816

+1

BTW, 'B' не указывает «целое число больше, чем« P »или« S ».« B »просто указывает формат памяти. Для« B », как и для« S »или« P », указание «целое» будет указывать (0) десятичные позиции. Типы данных «I» и «U» не могут допускать ничего, кроме (0) десятичных позиций, и непосредственно предназначены для использования в качестве «целочисленных» значений. – user2338816

+1

@ user2338816 верен , (B) inary ссылается на то, как хранятся данные. Это ближайшая RPG III имела целочисленный тип, который не должен использоваться сегодня. Вместо этого используйте true (I) nteger и (U) nsigned Integer. Интересный лакомый кусочек , (B) исходные значения преобразуются в (P) значные десятичные значения для математических операций, затем обратно в (B) inary. В то время как истинные целые типы используются напрямую. ** Примечание: сбивчиво, двоичный тип, используемый в спецификациях файлов DDS, является истинное целое число, когда заданы 0 десятичных знаков и соответствует типам ngger IV (I) nteger ** – Charles

8

Вот график из справочного руководства в Ile RPG программиста:

byte - 3I 0 (1-byte integer) 
short- 5I 0 (2-byte integer) 
int - 10I 0 (4-byte integer) 
long - 20I 0 (8-byte integer) 

Я использую 10I 0 форму целого чаще. Вы обнаружите, что он используется в большинстве ваших вызовов API.

Смежные вопросы