это быстро и бесплатно
Оформите заказ сейчас и получите скидку 100 руб.!
Ознакомительный фрагмент работы:
Евгений Каратаев
Эта заметка описывает программный перехват ввода-вывода текущего устройства в 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
Кроме программного назначения перехвата для обработки вывода наследованного кода можно использовать также и другие возможности: спулер, запись-чтение внешних файлов, межпроцессное взаимодействие.
Сделайте индивидуальный заказ на нашем сервисе. Там эксперты помогают с учебой без посредников
Разместите задание – сайт бесплатно отправит его исполнителя, и они предложат цены.
Цены ниже, чем в агентствах и у конкурентов
Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит
Бесплатные доработки и консультации
Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки
Гарантируем возврат
Если работа вас не устроит – мы вернем 100% суммы заказа
Техподдержка 7 дней в неделю
Наши менеджеры всегда на связи и оперативно решат любую проблему
Строгий отбор экспертов
К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»
Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован
Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн
Выполнить 2 контрольные работы по Информационные технологии и сети в нефтегазовой отрасли. М-07765
Контрольная, Информационные технологии
Срок сдачи к 12 дек.
Архитектура и организация конфигурации памяти вычислительной системы
Лабораторная, Архитектура средств вычислительной техники
Срок сдачи к 12 дек.
Организации профилактики травматизма в спортивных секциях в общеобразовательной школе
Курсовая, профилактики травматизма, медицина
Срок сдачи к 5 дек.
краткая характеристика сбербанка анализ тарифов РКО
Отчет по практике, дистанционное банковское обслуживание
Срок сдачи к 5 дек.
Исследование методов получения случайных чисел с заданным законом распределения
Лабораторная, Моделирование, математика
Срок сдачи к 10 дек.
Проектирование заготовок, получаемых литьем в песчано-глинистые формы
Лабораторная, основы технологии машиностроения
Срок сдачи к 14 дек.
Вам необходимо выбрать модель медиастратегии
Другое, Медиапланирование, реклама, маркетинг
Срок сдачи к 7 дек.
Ответить на задания
Решение задач, Цифровизация процессов управления, информатика, программирование
Срок сдачи к 20 дек.
Написать реферат по Информационные технологии и сети в нефтегазовой отрасли. М-07764
Реферат, Информационные технологии
Срок сдачи к 11 дек.
Написать реферат по Информационные технологии и сети в нефтегазовой отрасли. М-07764
Реферат, Геология
Срок сдачи к 11 дек.
Разработка веб-информационной системы для автоматизации складских операций компании Hoff
Диплом, Логистические системы, логистика, информатика, программирование, теория автоматического управления
Срок сдачи к 1 мар.
Нужно решить задание по информатике и математическому анализу (скрин...
Решение задач, Информатика
Срок сдачи к 5 дек.
Заполните форму и узнайте цену на индивидуальную работу!