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

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

0 голосов
/ 24 января 2019

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

Я хочу нажать F12 и транзакция закрывается.

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

Спасибо

Ответы [ 5 ]

0 голосов
/ 25 января 2019

IMO, используйте тетрадь DFHAID, чтобы захватить «Key-Press» или внимание. После получения карты проверьте 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.
0 голосов
/ 24 января 2019

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

0 голосов
/ 24 января 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, вносит соответствующие изменения в поля или поля commarea в вашем контейнере (контейнерах) и 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.

0 голосов
/ 24 января 2019

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

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

Надеюсь, что помогает

0 голосов
/ 24 января 2019

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

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

...