Закрыть транзакцию CICS

У меня есть короткая программа COBOL CICS, это базовый CRUD. В этой программе у меня есть варианты, когда я нажимаю F12, я хочу выйти, закрыть свою транзакцию.

Я хочу нажать F12 и закрыть транзакцию.

Могу ли я написать любую команду для этого в моей программе COBOL?

Спасибо


person IanPoli    schedule 24.01.2019    source источник


Ответы (5)


Предполагая, что у вас есть псевдодиалоговая программа, каждый раз, когда она вызывается, нажатая клавиша будет в EIBAID

описанный вами сценарий задокументирован в Центре знаний здесь https://www.ibm.com/support/knowledgecenter/SSGMCP_5.5.0/applications/designing/dfhp31i.html

надеюсь, это поможет

person Tony Fitzgerald    schedule 24.01.2019

EXEC CICS RETURN завершит вашу программу, но вы все еще будете иметь содержимое экрана.

Если вы сначала выполните команду EXEC CICS SEND CONTROL ERASE, а затем EXEC CICS RETURN, это завершит вашу программу и очистит экран.

person James    schedule 24.01.2019

ИМО, используйте тетрадь DFHAID, чтобы захватить «нажатие клавиши» или привлечь внимание. После получения карты проверьте EIBAID = DFHPF12, а затем вернитесь RETURN См. параграф ниже для лучшего понимания -

P9000-RETURN-TERM.
      IF EIBAID = DFHPF12 
         EXEC CICS
              RETURN
         END-EXEC
      END-IF.

Тем не менее, перед возвращением рекомендуется освободить клавиатуру и все остальное. Итак, код становится примерно таким -

P9000-RETURN-TERM.
      IF EIBAID = DFHPF12 
         EXEC CICS
              SEND CONTROL FREEKB ERASE
         END-EXEC
         EXEC CICS
              RETURN
         END-EXEC
      END-IF.
person Saptarshi    schedule 25.01.2019

В псевдодиалоговой транзакции 3270 CICS ваш код обычно начинается с проверки того, является ли это «первым входом», путем проверки наличия EIBCALEN = 0 или EIBRESP = DFHRESP( CHANNELERR ) после EXEC CICS GET CONTAINER, если вы используете контейнеры вместо запятой.

Если это «в первый раз», ваш код обычно выполняет некоторую уборку, а затем EXEC CICS SEND MAP для размещения карты BMS на устройстве 3270. Затем ваш код выполняет EXEC CICS RETURN TRANSID(EIBTRNID) и ссылается либо на вашу запятую, либо на ваш канал.

Если это не «в первый раз», ваш код обычно проверяет либо область запятых, либо один или несколько контейнеров в своем канале и EIBAID, чтобы определить, что делать дальше, часто это EXEC CICS RECEIVE MAP для извлечения содержимого поля полей на карте. Затем ваш код выполняет любую необходимую ему бизнес-функцию, возможно, изменяя поля на карте и выполняя EXEC CICS SEND MAP DATAONLY, вносит соответствующие изменения либо в поля запятых, либо в поля в ваших контейнерах и EXEC CICS PUT CONTAINER и снова выполняет EXEC CICS RETURN TRANSID(EIBTRNID) и ссылается либо на ваш commarea или ваш канал.

Если, как в вашем случае, проверка этих полей указывает на то, что пользователь хочет выйти из транзакции, ваш код может выполнить EXEC CICS SEND TEXT ERASE FREEKB, где FROM и LENGTH относятся к полям, содержащим соответствующее сообщение, указывающее на завершение транзакции. Это удалит вашу карту с экрана. Тогда ваш код выполнит EXEC CICS RETURN без опции TRANSID, завершив ваш псевдоразговор.

Обратите внимание, что каждый EXEC CICS RETURN подразумевает подразумеваемую EXEC CICS SYNCPOINT фиксацию ресурсов, таких как обновления DB2 и сообщения MQ.

person cschneid    schedule 24.01.2019

Вам нужно использовать тетрадь DFHAID, чтобы привлечь внимание. Что вы можете сделать, так это после получения карты проверить EIBAID=DFHPF12, а затем вернуться к терминалу с помощью EXEC CICS RETURN.

person Neeraj Kumar    schedule 24.01.2019