Доклад

Доклад на тему Cache перехват текущего устройства

Работа добавлена на сайт bukvasha.net: 2015-06-29

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 2.6.2025


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

Эта заметка описывает программный перехват ввода-вывода текущего устройства в 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

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


1. Реферат Природно-ресурсный потенциал Беларуси, его экономическая оценка
2. Реферат Банковская система РФ 8
3. Реферат на тему Overview Of Political Parties In Northern Ireland
4. Доклад на тему Отравление углеводородами
5. Реферат на тему The American Presidency Essay Research Paper The
6. Реферат на тему Beethoven Essay Research Paper BeethovenLudwig van Beethoven
7. Реферат Освобождение от уголовной ответственности и наказания
8. Реферат на тему The American Dream As It Is Portrayed
9. Учебное пособие Применение права по аналогии
10. Реферат Образование планеты Земля