В качестве альтернативы, если вы хотите получить п-ю запись в строке или вообще ничего, если что запись не существует (без ошибок), то вы можете добавить " n "ограничивает строку перед тем, как вы ее проверите. Это обеспечит правильное выполнение инструкции - вам нужно будет решить, что делать, когда вы возвращаете пустую запись.
DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
DEFINE VARIABLE iEntry AS INTEGER NO-UNDO.
cString = 'jim bob tom ed frank william'.
iEntry = 23.
DISPLAY ENTRY(iEntry,cString + FILL(' ',iEntry),' ').
Конечно, вместо того, чтобы возвращать пустую запись, вы также можете возвратить известное значение ошибки, как показано в альтернативном коде ниже (который будет возвращать «INVALID» для всех записей, которые выходят за пределы первоначального списка) , Обратите внимание на главный разделитель (в данном случае пробел) на мое известное значение ошибки - это важно для обеспечения того, чтобы каждое известное значение ошибки добавлялось к строке как отдельный элемент списка.
DISPLAY ENTRY(iEntry,cString + FILL(' INVALID',iEntry),' ').
Я хотел бы использовать этот подход при работе с введенным пользователем данными, а также данными, поступающих из внешних источников, которые должны быть отформатированы правильно ... но иногда могу не быть.