Разница между передачей управления другой программе с помощью return() и вызовом программы с использованием xctl

Если у меня есть, скажем, 2 экрана. Первый - это экран подсказки, который запрашивает, скажем, какой-нибудь ключ записи, а на следующем экране отображается информация о записи. Теперь, когда я хочу перенести элемент управления на второй экран (после выполнения работы с первым экраном), я могу сделать это следующим образом:

 exec cics
    return(trans-id)
    commarea(ws-commarea)
 end exec.    

где trans-id - это то, что на втором экране.

Тогда что нужно для использования вызывающей функции, такой как xctl, когда у нас уже есть функция return(), доступная в cics?

2 ответа

Использование XCTL или LINK или динамических CALLs ограничивает вашу обработку одной транзакцией CICS.

При желании вы можете спроектировать свое приложение для распределения различных бизнес-функций по нескольким транзакциям, передавая данные через запятую.

Исторически это не было сделано по ряду причин. Тридцать лет назад некоторые программисты CICS Systems считали идентификаторы транзакций ограниченным ресурсом и рекомендовали разработчикам приложений поддерживать обработку до минимально возможного количества транзакций.

Безопасность в CICS обрабатывается на уровне транзакций, поэтому у вашего пользователя должны быть полномочия для выполнения всех транзакций, которые составляют бизнес-функцию, которую он должен выполнять.

Ресурсы, такие как очереди временного хранения, часто именуются частично с использованием идентификатора транзакции, чтобы различать и хранить их отдельно.

До версии CICS TS 2 (я думаю) данные, которые должны были быть разделены между этими транзакциями, были ограничены размером запятой (32 КБ). Все поддерживаемые версии CICS теперь имеют каналы и контейнеры, что позволяет передавать значительно большие объемы данных.

Мой опыт показывает, что проще кодировать и легче поддерживать псевдоговорящие транзакции с экранными взаимодействиями, если код находится в одной транзакции. Вы действительно хотите, чтобы ваши транзакции были псевдоговорящими или не диалоговыми. Я считаю, что это основная причина, по которой вы видите транзакции, предназначенные для использования XCTL, LINK или динамических вызовов.

XCTL также не разрешает динамическую маршрутизацию (вы всегда остаетесь в одном и том же регионе CICS) и является только односторонним. Псевдо-разговорный возврат, как указано выше, позволит пользователю обновить экран, и только при нажатии на Идентификатор внимания (например, Enter) будет запущена следующая программа. XCTL запустится немедленно.

Другие вопросы по тегам