Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[3]

AppPath :: path : Text - - path to the new application

OSOutput

channel osIn : OSInput, osOut : OSOutput

value os :

Application* - in osIn, appIn out osOut, appOut Unit

-- the fg fuction run new application

-- according to the specified user command.

-- see AppPath

OSInput x Application* - OSOutput x AppOutput x Application*

axiom [ os ]

V aps : Application* •

--если есть ввод в osIn его читаем, результат

-- выводим, меняем список задач

--при изменении фокуса происходит вывод

-- в канал приложения

os(aps) = let (o, a, aps1) = fg(osIn?, aps) in osOut!o ; appOut!a ; if len aps1 > 0

then appOut!mkAppOutput(hd aps1) end ; os(aps1) end

операция внешнего выбора - - external

пользователь пишет в один из каналов: если есть ответ пользователя в osIn

A hspace*2mm его читаем (см выше),

иначе должен быть ответ пользователя

в appIn,


- -тогда app выполнит чтение из appIn

(hd aps) - - если есть ввод, то есть приложение ; os(aps)

-- End Of Scheme

2.1.2 Abstract application

Приложение вводится как абстрактный тип. О нем известно только то, что он есть. Обьявляется функция для описания работы приложения - pan. В схеме также задаются типы AppInput и AppOutput и каналы ввода-вывода приложения appIn, appOut. Так как не была расписана функция fg в схеме l0 os.rsl, не рассматривался вопрос о создании величины типа Application. Если бы расписывали, то появилась бы нужда в функция mkApplication, которая из пути к приложению создает собственно приложение. Поэтому функция mkApplication обьявлена в следующей схеме.

-- Start of Scheme

scheme L0 APP = with T0 in class

type AppInput, AppOutput, Application

channel appIn : AppInput, appOut : AppOutput

value app :

Application - in appIn, any out appOut, any Unit, mkAppOutput : Application - AppOutput, mkApplication : Text - Application

-- End Of Scheme


2.1.3 User

Пользователь читает данные из канала osOut или appOut. Выполняет преобразование входных данных в выходные и выводит их в один из каналов.

-- Start of Scheme rsl/T0, rsl/L0 OS

scheme L0 USR = with T0 in extend L0 OS with class value

usr : Unit - in any out any Unit, usrWork : OSOutput - OSInput, usrWork : OSOutput - AppInput, usrWork : AppOutput - OSInput, usrWork : AppOutput - AppInput

axiom [ usr ] usr() =

(osIn!usrWork(osOut?) ] appIn!usrWork(osOut?)) (osIn!usrWork(appOut?) ] appIn!usrWork(appOut?)) skip ; usr()

-- End Of Scheme

2.1.4 Cowork of user ang operational system

Совместная работа пользователя и операционной системы описывается такой схемой:

-- Start of Scheme

rsl/T0, rsl/L0 USR

scheme l0 test =

extend L0 USR with



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15]