Cтраница 3
По аналогии с входными данными выходные данные выполняемой на ВМ программы или команды, предназначенные для вывода на ПУ, помещаются в выводной стек пульта. Все они выводятся на ПУ до выполнения системой очередной операции считывания данных из вводного стека пульта. [31]
Подкоманда REUSE позволяет выполнить указанную в ней подкоманду и автоматически повторить выполнение предыдущей подкоманды или ввод предыдущей строки данных. Другими словами, подкоманда обеспечивает занесение предыдущей введенной строки и затем указанной в операнде подкоманды в начало стека пульта. [32]
На время выполнения программы обработки внешних прерываний запрещаются все прерывания от ВМ, кроме прерываний от мультиплексного канала. Если же поступило прерывание от таймера, используемое для реализации функции мерцания BLIP, то запрос на выполнение этой функции помещается в выводной стек пульта. [33]
Когда пульт находится в состоянии ВЫПОЛНЕНИЕ, команды вводятся так же, как и в случае, когда пульт находится в состоянии СРЕДА ВМ, если только работа ВМ не приостановлена из-за обработки команды МВМ, до завершения которой никакую команду ввести невозможно. Если на ВМ обрабатывается команда ПДО, то в отличие от случая, когда пульт находится в состоянии СРЕДА ВМ, команды МВМ с префиксом СР и без префикса, а также команды ПДО не выполняются сразу же после их ввода, а помещаются в стек пульта ПДО. Команды МВМ с префиксом ФСР выполняются сразу после их ввода. [34]
Программа связи с пользователем обеспечивает ввод с пульта ВМ команд ПДО и МВМ, вывод сообщений управляющей программы ПДО и при необходимости ввода ответов на них. Строки команд и любой другой введенной информации обычно помещаются во вводной стек пульта - специально выделенный из свободной области участок памяти ВМ. В стек пульта информация может помещаться и программно - из процедур ПДО с помощью специально предназначенных операторов языка процедур. После завершения выполнения очередной команды или при запросе ответа на сообщение программа связи извлекает очередную строку из стека пульта и передает ее на обработку. [35]
Если в процедуре в стек пульта заносится несколько строк, то порядок считывания их из стека может быть разный в зависимости от указания в операторах & STACK и & BEGSTACK операнда FIFO ( принимается по умолчанию) либо LIFO. Операнд FIFO обеспечивает занесение строк в конец стека пульта; занесенные строки будут считываться в том же порядке, в котором они были занесены. Операнд LIFO обеспечивает занесение строк в начало стека пульта, причем эти строки будут считываться в порядке, обратном их занесению. [36]
Информация, помещаемая в стек пульта, состоит из двух строк. Первая строка содержит символы из позиций 1 - 5 первой из обрабатываемых записей управляющего файла, в которой эти символы отличны от пробелов, а вторая - список имен макробиблиотек из первой записи управляющего файла. Режим STK действителен только тогда, когда определен режим CTL, и используется только в случае, если команда UPDATE вызывается из процедуры. Информация, помещенная командой UPDATE в стек пульта, может быть считана процедурой для последующего использования. [37]
С помощью оператора ( 4) организуется цикл. С помощью операторов ( 6) и ( 7) формируется новое имя файла, по команде ( 8) выполняется переименование файла, а по команде ( 9) - вывод его на МЛ. Если команда ТАРЕ DUMP завершается неуспешно, например, из-за ошибки ввода-вывода, то на пульт ВМ выводится соответствующее сообщение; если успешно, то цикл повторяется. Выход из цикла осуществляется тогда, когда стек пульта станет пустым. [38]
![]() |
Упрощенная схема основной памяти ВМ. [39] |
Вводной стек пульта - это область памяти ВМ, куда помещается информация либо непосредственно с экрана, либо из программ и процедур. Часть вводного стека пульта, в которую поступают строки с экрана, называется буфером ПУ, а часть, используемая программами и процедурами, - программным стеком. Вопросы использования программного стека рассматриваются в гл. Максимальное число строк, которое можно поместить во вводной стек пульта, зависит от емкости основной памяти ВМ. [40]
Общая схема создания в процедуре дисковых файлов выглядит следующим образом: сначала с помощью оператора & PUNCH создается файл на перфокарточном устройстве вывода, затем этот файл с помощью команды SPOOL направляется на перфокарточное устройство ввода, откуда с помощью команды READCARD записывается на диск. Сначала к файлу, который должен считываться в процедуре, добавляются ( например, с помощью текстового редактора) две записи: одна в начало файла, другая в конец файла. В эти записи соответственно помещаются операторы & BEGSTACK и & END. В качестве имени файла указывается любое имя, а в качестве типа - EXEC. Таким образом, из файла данных будет подготовлена процедура, которая содержит оператор & BEGSTACK, сам файл данных и оператор & END. При выполнении такой процедуры файл данных будет помещен в стек пульта. [41]