NUMIN выдает неправильный результат, как получить правильный ответ?

Я создаю программу для подсчета количества цифр в числе

Когда я помещаю значение в 5 цифр, он дает правильный ответ, но когда я помещаю значение в 6 цифр, он дает неправильное значение.

Чтобы увидеть, что происходит в коде, я отладил код и обнаружил, что когда я помещаю 5-значное число, оно правильно преобразуется из строки в int, но когда я помещаю 6-значное значение, оно преобразует значение неправильно и дает некоторое отрицательное значение.

Я использую

CALL NUMIN(AB,NUM,10,STAT);

AB — это строка ab[0:40]

ЧИСЛО — целое число

STAT представляет собой строку STAT[0:50]

1 ответ

В TAL целое число без знака находится в диапазоне от 0 до 65535 , а целое число со знаком — в диапазоне от -32768 до 32767 , поэтому невозможно ввести 6-значный ввод в строку и преобразовать его с помощью NUMIN GPC(вызов процедуры Guardian).

Вместо этого вы можете использовать целое двойное слово со знаком INT(32) .EXT, которое представляет собой 32-разрядное целое число в диапазоне от -2147483648 до 2147483647 , в котором вы можете легко использовать 6-значный или более 6-значный ввод. Чтобы преобразовать 6-символьную или более 6-символьную строку в целое число, используйте DNUMIN GPC.

      DNUMIN ( ascii-num 
        ,signed-result
        ,base
        ,status ); 
Другие вопросы по тегам