Возвращение из Списка

Эффекты событий exit, check и stop

report ztx1705 no standard page heading line-count 6(2).

*in events before start-of-selection:

* - exit and check have the same behavior. They both leave the event

* and processing continues with the next event or action.

* - stop goes directly to the end-of-selection event

* (don't use stop in initialization or at selection-screen output)

 

*in start-of-selection and subsequent events:

* - exit terminates the report and shows the output list

* exception: top-of-page: exit leaves the event

* - check leaves the event and processing continues with the next one.

* - stop goes directly to the end-of-selection event

 

"execute an:

parameters: exit_sos radiobutton group g1, "exit in start-of-selection

exit_eos radiobutton group g1, "exit in end-of-selection

chck_sos radiobutton group g1, "check in start-of-selection

chck_eos radiobutton group g1, "check in end of selection

stop_sos radiobutton group g1, "stop in start-of-selection

stop_eos radiobutton group g1, "stop in end-of-selection

none radiobutton group g1. "no stop, exit or check

 

initialization.

* exit. "exits event

* check 1 = 2. "exits event

* stop. "don't do this

chck_sos = 'X'.

 

at selection-screen output.

* exit. "exits event

* check 1 = 2. "exits event

* stop. "don't do this

message s789(zk) with 'at selection-screen output'.

 

at selection-screen on radiobutton group g1.

* exit. "exits event

* check 1 = 2. "exits event

* stop. "goes to end-of-selection

message i789(zk) with 'at selection-screen on rbg'.

 

at selection-screen.

* exit. "exits event

* check 1 = 2. "exits event

* stop. "goes to end-of-selection

message i789(zk) with 'at selection-screen'.

 

start-of-selection.

write: / 'Top of SOS'.

if exit_sos = 'X'.

exit. "exits report

elseif chck_sos = 'X'.

check 1 = 2. "exits event

elseif stop_sos = 'X'.

stop. "goes to end-of-selection

endif.

write: / 'Bottom of SOS'.

 

end-of-selection.

write: / 'Top of EOS'.

if exit_eos = 'X'.

exit. "exits report

elseif chck_eos = 'X'.

check 1 = 2. "exits report

elseif stop_eos = 'X'.

stop. "exits report

endif.

write: / 'Bottom of EOS'.

write: / '1', / '2', / '3'.

 

top-of-page.

write: / 'Title'.

* exit. "exits event and returns to write statement

* check 'X' = 'Y'. "exits event and returns to write statement

* stop. "goto end-of-selection - don't write after it

uline.

 

end-of-page.

uline.

* exit. "exits report

* check 'X' = 'Y'. "exits event and returns to write statement

* stop. "goto end-of-selection - don't write after it

write: / 'Footer'.

Когда пользователь формирует отчет, драйвер вызывает initialization и затем показывает экран выбора. После нажатия кнопки Execute драйвер вызывает остальные события, конец программы и пользователь видит список. Пользователь нажимает кнопку «Назад», и программа драйвера перезапускает обработку, тем самым вызывая событие initialization, и затем все последующие события следуют снова в их нормальной последовательности. Результат состоит в том, что пользователь видит экран выбора после нажатия кнопки «Назад».

У экрана выбора есть своя собственная копия всех переменных, которые отображены на нем. В первый раз отчет выполняется, и программа драйвера восстанавливает управление после того, как событие initialization завершилось, при этом значения переменных программы взяты из соответствующих переменных экрана выбора. Пользователь может изменить входные поля. Когда пользователь нажимает кнопку Execute, драйвер сохраняет значения переменных из экрана выбора в две области данных: одна принадлежит экрану выбора и затем в переменные Вашей программы.

Однако, это двойное действие происходит только в первый раз, когда Вы выполняете программу. Когда пользователь нажимает кнопку «Назад», событие initialization вызвано вновь. Когда управление возвращается к драйверу, оно не копирует Ваши переменные программы в область данных экрана. Вместо этого показывает существующие значения из области данных экрана; который все еще содержит значения, которые ввел пользователь. Результат состоит в том, что пользователь видит значения, которые он ввел независимо от того, что изменилось в Вашей программе. После того, как пользователь нажимает кнопку Execute, экранные значения скопированы в область данных экрана и затем в программу. Например, если Вы установите значения во время initialization, то эти значения будут выведены на экране выбора, когда Вы запустите программу. Когда Вы нажмете кнопку «Назад» на экране выбора, initialization выполнится, но пользователь будет видеть значения, которые он ввел.