• Новости
  • Темы
    • Экономика
    • Здоровье
    • Авто
    • Наука и техника
    • Недвижимость
    • Туризм
    • Спорт
    • Кино
    • Музыка
    • Стиль
  • Спецпроекты
  • Телевидение
  • Знания
    • Энциклопедия
    • Библия
    • Коран
    • История
    • Книги
    • Наука
    • Детям
    • КМ школа
    • Школьный клуб
    • Рефераты
    • Праздники
    • Гороскопы
    • Рецепты
  • Сервисы
    • Погода
    • Курсы валют
    • ТВ-программа
    • Перевод единиц
    • Таблица Менделеева
    • Разница во времени
Ограничение по возрасту 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-2026 О проекте ·Все проекты ·Выходные данные ·Контакты ·Реклама
]]>
]]>
Сетевое издание KM.RU. Свидетельство о регистрации Эл № ФС 77 – 41842.
Мнения авторов опубликованных материалов могут не совпадать с позицией редакции.

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

Карта сайта


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



Организации, запрещенные на территории Российской Федерации
Политика конфиденциальности
Согласие на обработку файлов cookie

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