Если я сканирую «NDIA» в «INDIAN» с помощью функции% scan(), возвращается значение больше 0. Если я делаю то же самое с помощью% lookup() в массиве, то возвращается 0. Зачем?Разница между% scan и% lookup в RPGLE?
Программа 1
D VAR1 s 10a inz('INDIAN')
D S1 S 10S 0
C 'NDIA' SCAN VAR1 S1
C S1 DSPLY
/free
*inlr = *on;
/end-free
Программа 2
D ARR1 s 10a DIM(5)
D S1 S 10S 0
C EVAL ARR1(1) = 'AMERICA'
C EVAL ARR1(2) = 'INDIA'
C EVAL ARR1(3) = 'CHINA'
/free
S1 = %LOOKUP('NDIA':ARR1);
DSPLY S1;
*inlr = *on;
/end-free
Какова разница в обеих программах?
Вы каждый раз перезагружаете arr (1), поэтому массив имеет только 1 элемент со значением «CHINA». Это опечатка в вашем коде или вашем посте? – Charles
О, извините ... это была моя ошибка. Теперь код был отредактирован, так что теперь PLZ ответить ... –
Разница в том, что вы используете% SCAN() в одном примере и% LOOKUP() в другом примере. Это две разные функции, которые выполняют две разные вещи. Почему вы ожидаете, что они будут работать одинаково? Вы используете 'NDIA' в вашем% LOOKUP(), но вы не загрузили это значение ни в одном элементе массива. ('NDIA' <> 'INDIA') Поскольку такой элемент не существует, функция возвращает ноль. – user2338816