Какова конкретная функция PROMPT и ECHO вместе с оператором ACCEPT в COBOL?

Я просматривал исходный код программы RM/COBOL и постоянно сталкивался с утверждениями ACCEPT, подобными этому:

   ACCEPT field-name LINE 23, POSITION 75 PROMPT ECHO

Существуют похожие операторы ACCEPT, подобные этому, которые функционируют как поля ввода, но рядом с ними нет PROMPT ECHO.

Итак, мой вопрос: какова функциональность PROMPT ECHO?

Спасибо, Чубонга93


person Chubonga93    schedule 26.06.2014    source источник


Ответы (2)


Я могу помочь, я использую ECHO каждый день, это просто: всякий раз, когда запускается оператор ACCEPT, он показывает текущее значение идентификатора.

Скажем, у вас есть эта картина:

01 WS_NAME PIC X(20) VALUE "Chubonga".

А это ACCEPT:

DISPLAY "Enter name:".
ACCEPT WS_NAME ECHO.

Программа подскажет:

Enter name:
Chubonga

Если вы измените значение WS_NAME во время выполнения и повторно запустите ACCEPT, оно покажет новое значение указанного идентификатора.


Редактировать: в зависимости от компилятора он может или не может возвращать значение, если оно было установлено VALUE вместо MOVE или предыдущего ACCCEPT.

person Molusco    schedule 27.06.2014
comment
Тогда, если я наберу BILL, я получу BILLONGA? Можете ли вы расширить это? - person Bill Woodger; 27.06.2014
comment
Нет, все, что вы вводите, становится новым значением. Если вы наберете BILL, будет отображаться BILLONGA, пока вы не нажмете Enter/Return. Когда вы нажимаете Enter/Return, новое значение, однако, будет BILL, а также BILL будет отображаться в позиции ACCEPT. ECHO действительно очень странное утверждение. - person Molusco; 27.06.2014
comment
Ах круто. Тогда это похоже на заполнитель в HTML. Спасибо за полезный совет, Molusco. Я бы проголосовал, но мало повторений - person Chubonga93; 27.06.2014

Из документации Micro Focus (об их поддержке RM/COBOL) пункт PROMPT :

Предложение PROMPT приводит к тому, что пустые позиции символов в элементе экрана отмечаются на экране во время операции ACCEPT, когда система готова принять данные, введенные оператором, в этот элемент.

Общий формат

ПОДСКАЗКА [СИМВОЛ ЕСТЬ {идентификатор-1, литерал-1}]

который не учитывает ваше ключевое слово ECHO. Но этот запись руководства по совместимостиy ссылается на ключевое слово ECHO:

5.2.14 Отображение входных данных в скрытых полях ACCEPT

Если вы указали предложения OFF и ECHO для одного и того же оператора ACCEPT в вашей программе, система RM/COBOL скроет любые данные, введенные во время ввода этого оператора, но по завершении ввода отобразит данные. Однако эта система COBOL не будет отображать данные для этого оператора ACCEPT после завершения ввода. Решение:

Если вы хотите отобразить ввод данных для оператора ACCEPT с указанными предложениями OFF и ECHO, вы должны добавить оператор DISPLAY после оператора ACCEPT.

Я вижу в Интернете несколько ссылок на этот документ NO ECHO (что приводит к тому, что ввод пользователя не отображается на экране), но ничего надежного для ECHO. Я подозреваю, что в вашем случае это не имеет никакого эффекта, то есть ввод пользователя повторяется как обычно.

person David Gorsline    schedule 27.06.2014
comment
Ах я вижу. Просто чтобы убедиться, что я правильно прочитал. PROMPT в основном преобразует пустые символы в пробелы? - person Chubonga93; 27.06.2014
comment
В вашем случае, поскольку ключевое слово CHARACTER отсутствует, я думаю, что оно заполняет область ответа копиями символа по умолчанию, который может быть настроен в вашей системе в целом или с опцией времени компиляции. И по умолчанию по умолчанию, вероятно, пробел. - person David Gorsline; 27.06.2014