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