COBOL: как выключить SCREEN и вернуться к терминалу

Я показываю пользователю форму, определенную в РАЗДЕЛЕ ЭКРАНА. После ввода данных пользователем я хочу очистить экран и вернуться к терминалу. Но я понятия не имею, как это сделать. Каждое следующее DISPLAY «что-то» возвращает данные в первую строку экрана. Я больше не хочу использовать SCREEN, никаких операторов LINE.

[...]

SCREEN SECTION.
01 USER-FORM.
[...]
01  CLEAR-SCREEN.
    05 BLANK SCREEN.

[...]

DISPLAY USER-FORM.
ACCEPT USER-FORM.
DISPLAY CLEAR-SCREEN.

PERFORM DATA-CALCULATIONS.

DISPLAY "CALCULATION RESULTS 1: " WS-DATA(1).
DISPLAY "CALCULATION RESULTS 2: " WS-DATA(2).
DISPLAY "CALCULATION RESULTS 3: " WS-DATA(3).


person aceJacek    schedule 01.05.2020    source источник


Ответы (1)


Вы не можете. После того, как вы использовали SCREEN в GnuCOBOL, все последующие DISPLAY/ACCEPT будут на экране.

Если вы не хотите явно указывать LINE и COL для последующих DISPLAY, вы можете использовать расширение LINE 0, которое дает что-то похожее на обычное поведение DISPLAY (а именно, LINE 0 позиционирует DISPLAY в начале строки, следующей за последним ACCEPT/ ОТОБРАЖАТЬ).

DISPLAY "CALCULATION RESULTS 1: " LINE 0, WS-DATA(1).
DISPLAY "CALCULATION RESULTS 2: " LINE 0, WS-DATA(2).
DISPLAY "CALCULATION RESULTS 3: " LINE 0, WS-DATA(3).
person Edward H    schedule 01.05.2020
comment
Вы не можете звучать так резко. Может быть, измениться на вы не можете, не настроив сначала GnuCOBOL? Похоже на актуальный и простой в реализации запрос функции ;-) - person Simon Sobisch; 02.05.2020
comment
@SimonSobisch - я не уверен, что хочу, чтобы GnuCOBOL высадился из канонического поезда COBOL. Но, может быть, в конце концов, это хорошее предложение, если я только смогу четко объяснить разработчикам, что мне на самом деле нужно. - person aceJacek; 04.05.2020
comment
@aceJacek Похоже, вам нужна возможность входа/выхода из внутреннего терминала, используемого для расширенного отображения (если я правильно помню, GnuCOBOL, ACUCOBOL и MF используют что-то подобное, и пока что только у MicroFocus есть возможность войти/выйти через CALL "someroutine-possibly-hey-something" USING somethingstrange-found-in-the-docs. Дело в том, что это не обязательно поведение COBOL в первую очередь, скорее деталь реализации. - person Simon Sobisch; 05.05.2020