В псевдоконкурсивной транзакции 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.