• Новости
  • Темы
    • Экономика
    • Здоровье
    • Авто
    • Наука и техника
    • Недвижимость
    • Туризм
    • Спорт
    • Кино
    • Музыка
    • Стиль
  • Спецпроекты
  • Телевидение
  • Знания
    • Энциклопедия
    • Библия
    • Коран
    • История
    • Книги
    • Наука
    • Детям
    • КМ школа
    • Школьный клуб
    • Рефераты
    • Праздники
    • Гороскопы
    • Рецепты
  • Сервисы
    • Погода
    • Курсы валют
    • ТВ-программа
    • Перевод единиц
    • Таблица Менделеева
    • Разница во времени
Ограничение по возрасту 12
KM.RU
Рефераты
Главная → Рефераты → Информатика, программирование
  • Новости
  • В России
  • В мире
  • Экономика
  • Наука и техника
  • Недвижимость
  • Авто
  • Туризм
  • Здоровье
  • Спорт
  • Музыка
  • Кино
  • Стиль
  • Телевидение
  • Спецпроекты
  • Книги
  • Telegram-канал

Поиск по рефератам и авторским статьям

Cache': перехват текущего устройства

Евгений Каратаев

Эта заметка описывает программный перехват ввода-вывода текущего устройства в Cache'. Неудобство стандартных устройств mumps, а точнее определенного их поведения состоит в том, что если выполняется программный код, осуществляющий ввод-вывод через него, то этот процесс сторонним кодом неуправляем иначе как установкой возможных опций устройству. В то время как в некоторых случаях очень нужно иметь возможность выполнить так называемый унаследованный (legacy) код, который оперирует текущим устройством, но при этом в самих операциях ввода-вывода произвести дополнительные действия.

Ситуация примерно аналогична вводу-выводу в сишном стиле и в стиле C++, когда в первом случае мы можем открыть файл и передать его коду, а во втором случае мы можем создать объект ввода-вывода и переопределить для него операции чтения - записи.

Для перехвата операций ввода-вывода текущего устройства нужно

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

Указать текущему устройству эту рутину как мнемоническую в команде use

Включить перенаправление для текущего устройства

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

Рутина-перехватчик должна реализовать на свое усмотрение метки

rstr(len,to)

Чтение с опциональным указанием заданной длины и таймаута

rchr(to)

Чтение номера символа

wstr(expr)

Запись строки W expr

wchr(expr)

Запись символа W *expr

wtab(expr)

Запись пропуска W ?expr

wnl

Перевод строки W !

wff

Очистка экрана W #

Шаблон рутины примерно такой:

rstr(len,to)

D $ZU(82,12,0)

if $D(len)&&$D(to) d

. ; перехват

. R data#len:to

e i $D(len) d

. ; перехват

. R data#len

e i $D(to) d

. ; перехват

. R data:to

e d

. ; перехват

. R data  

D $ZU(82,12,1)

; перехват

Q $G(data)

rchr(to)

D $ZU(82,12,0)

i $d(to)

. ; перехват

. R *data:to

. ; перехват

e d

. ; перехват

. R *data

. ; перехват

D $ZU(82,12,1)

; перехват

Q data

// W expr

wstr(expr) 

D $ZU(82,12,0)

; перехват

W expr

D $ZU(82,12,1)

Q

// W *expr

wchr(expr) 

D $ZU(82,12,0)

; перехват

W *expr

D $ZU(82,12,1)

Q

// W ?expr

wtab(expr)

D $ZU(82,12,0)

; перехват

W ?expr

D $ZU(82,12,1)

Q

// W !

wnl

D $ZU(82,12,0)

; перехват

W ! 

D $ZU(82,12,1)

Q

// W #

wff

D $ZU(82,12,0)

; перехват

W #  

D $ZU(82,12,1)

Q

После чего можно пользоваться, указывая прехватчик:  

u dev::"^ИМЯРУТИНЫ" ; указываем какую мнемонику использовать

D $ZU(82,12,1) ; реально включаем флаг использования

d normal()  ; что будет писать в текущий девайс

D $ZU(82,12,0) ; перед закрытием девайса возвращаем флажок

c dev

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

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://karataev.nm.ru/

Дата добавления: 30.03.2005

База рефератов на портале KM.RU существует с 1999 года. Она пополнялась не только готовыми рефератами, докладами, курсовыми, но и авторскими публикациями, чтобы учащиеся могли использовать их и цитировать при самостоятельном написании работ.


Это популяризирует авторские исследования и научные изыскания, что и является целью работы истинного ученого или публициста. Таким образом, наша база - электронная библиотека, созданная в помощь студентам и школьникам.


Уважаемые авторы! Если Вы все же возражаете против размещения Вашей публикации или хотите внести коррективы, напишите нам на почту info@corp.km.ru, мы незамедлительно выполним Вашу просьбу или требование.


официальный сайт © ООО «КМ онлайн», 1999-2025 О проекте ·Все проекты ·Выходные данные ·Контакты ·Реклама
]]>
]]>
Сетевое издание KM.RU. Свидетельство о регистрации Эл № ФС 77 – 41842.
Мнения авторов опубликованных материалов могут не совпадать с позицией редакции.

Мультипортал KM.RU: актуальные новости, авторские материалы, блоги и комментарии, фото- и видеорепортажи, почта, энциклопедии, погода, доллар, евро, рефераты, телепрограмма, развлечения.

Карта сайта


Подписывайтесь на наш Telegram-канал и будьте в курсе последних событий.


Организации, запрещенные на территории Российской Федерации
Telegram Logo

Используя наш cайт, Вы даете согласие на обработку файлов cookie. Если Вы не хотите, чтобы Ваши данные обрабатывались, необходимо установить специальные настройки в браузере или покинуть сайт.