2012-04-28 3 views
-1

У меня есть два вопроса: первый - главный. 1. Мне удалось отобразить дату на карте, но мне нужно, я хочу, чтобы она тикала, то есть она должна отображаться everysecond. 2. У меня есть программа COBOL-DB2, которая автоматически вставляет данные из базы данных (DB2) в файл. Я хочу, чтобы эту программу вызывали на основе временной метки, то есть каждые 1 ч, 2 часа или каждый день.Как автоматически обновлять время в цикле

Спасибо

+0

Пожалуйста, разделите свой вопрос DB2 на отдельную тему. Это не имеет никакого отношения к вашей теме. – zarchasmpgmr

ответ

0

Это не возможно в стандартном CICS с использованием карт. Протокол 3270 не поддается постоянному обновлению экранов. Большинство экранов автоматического обновления, таких как консоли и мониторы, используют собственные методы VTAM, создавая собственные потоки данных.

Возможно, это возможно, используя неформатированные данные, но я бы не рекомендовал его в CICS. Pseudo-conversational CICS не имеет управляемой программы во время отображения экрана, и диалоговое программирование сильно обескуражено.

2

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

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

Элементы DB2 просто просты. Начните свой tran с помощью управления интервалом, того же START AFTER(), описанного выше, и вы можете запустить его ежечасно, или в два раза, или что-то еще.

1

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

Это обеспечивает очень эффективные программы ввода данных и запросов. Но поймите, когда программа закончит обработку экрана, он уйдет, он исчез, и это уже не в памяти, все ресурсы были исправлены. Это позволяет компании запускать мэйнфрейм с 300 терминалами и, возможно, 10 мегабайтами реальной памяти, потому что, когда программа ждет ответа, он не использует каких-либо ресурсов вообще, если 200 человек работают с программой ввода данных, они запускают программу повторного входа, в которой все 200 из них выполняют одну и ту же копию одной и той же программы, и единственное, что они используют, - это, возможно, 1K записываемого хранилища для пользователя для части, которая должна читать экран или файл записывать и выполнять некоторые вычисления. Подумайте об этом, у 200 человек работает одна и та же программа, и все они одновременно используют один модуль, который использует 20K памяти для приложения - и это один и тот же 20K для каждого из них - и 1K каждый из фактических данных чтения/записывать данные.

Подумайте об этом на мгновение, первый пользователь, который начнет эту программу ввода данных, использует 20K памяти для приложения, плюс 1K для записываемых данных. Каждый пользователь после того, кто обрабатывается в этой программе, использует еще 1 КБ памяти, вот и все. Когда они сидят там, глядя на терминал, все, что они могут использовать, составляет 4 байта в таблице, чтобы сообщить системе о подключении терминала. Никакие ресурсы не используются вообще.

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

2

Я не думаю, что вам нужно изменить свой псевдо-разговорный подход, чтобы достичь того, что вам нужно. Просто выпустите команду EXEC CICS START с задержкой в ​​одну секунду (просто сделайте это один раз) для небольшой программы, которая просто выдает команду «Отправить карту» (или TC Write) для терминала. Идеально зарезервировать общую область на экране, чтобы все транзакции могли использовать общую программу. В какой-то момент, когда обновления больше не требуются, отмените запрос START. Как я вижу, транзакция обновления таймера будет хорошо сочетаться с вами, инициированным пользователем потоком транзакций. Если пользовательская транзакция активна при включении таймера запуска, программа обновления таймера будет немного задержана.

Хотя это должно сработать, вы должны помнить, что вы можете управлять 3600 транзакций в час для каждого пользователя. Действительно ли эта функция стоит того?

0

EXEC CICS ASK TIME END-EXEC обновить временную метку. EXEC CICS ОТПРАВИТЬ ДАННЫЕ КАРТЫ ТОЛЬКО END-EXEC, чтобы обновить экран.

Однако, используя предложенный EXEC CICS START ТрансИД ('имя' | namefld) DELAY (время) END-EXEC. на самом деле лучший способ.