Главная Промышленная автоматика.

Сообщение о процедурах ввода-вывода 71

----.---.-.-5--.-

Соответствующие описания процедур имеют вид:

procedure insymbot (канал, строка, назначение);, value канал;

integer (канал, назначение, string строка; {тело процедуры)

procedure outsymbol (канал, строка, источник); value канал, источник;

integer канал, источник; string - строка; (тело . процедуры)

integer procedure length (строка); string строка; (тело процедуры)

procedure inreal (канал, назначение); value канал;

integer канал; real назначение; (тело процедуры) procedure outreal (канал, источник); value канал,

источник;

integer канал; real источник; (тело процедуры) procedure inarray (канал, назначение); value канал; integer канал; array назначение; (тело процедуры)

procedure outarray (канал, источник); value канал; integer канал; array источник; (тело процедуры)

Операторы процедур и указатель функции, обращающиеся к этим процедурам, должны иметь еле-* дующую форму:

insymbol ((арифметическое выражение) (ограничитель

параметра) (строка) (ограничитель параметра)

(переменная)) outsymbol ((арифметическое выражение) (ограничитель

параметра) (строка) (ограничитель параметра)

(арифметическое выражение)) length ((строка))

inreal ((арифметическое выражение) (ограничитель

параметра) (переменная)) outreal ((арифметическое выражение) (ограничитель

параметра) (арифметическое выражение)) inarray ((арифметическое выражение) (ограничитель

параметра) (идентификатор массива))



ои/аггау ((арифметическое выражение) (ограничитель параметра) (идентификатор массива)).

Во всех этих случаях, кроме обращения к length, значение первого фактического параметра должно быть положительным целым, обозначающим входной или выходной канал, доступный программе.

3. Действие тел процедур

Пара процедур insymbol и outsymbol обеспечивает средства сообщения между внешним носителем и переменными программы в терминах отдельных основных символов ИЛИ любых дополнительных символов. В каждой процедуре устанавливается соответствие между ос-«овными символами и значениями переменных программы в результате отображения последовательности основных символов, заданных в строке, которая служит вторым параметром, и взятых слева направо по порядку, на последовательность положительных целых 1, 2, 3, ... . Используя это соответствие, процедура insymbol присваивает переменной типа integer, заданной в качестве третьего параметра, значение, соответствующее очередному основному символу, поступающему с внешнего носителя. Если этот очередной символ не присутствует в строке, заданной вторым параметром, то присваивается число 0. Если очередной символ, поступающий на вход, не является основным символом языка АЛГОЛ-60, то присваивается отрицательное целое, соответствующее этому символу.

Аналогично процедура outsymbol передает основной символ, соответствующий значению третьего параметра, иа внешний носитель. Если значение третьего параметра отрицательно, передается символ, соответствующий этому значению. Подразумевается, что когда данный внешний носитель может быть использован как для процедуры insymbol, так и для outsymbol, отрицательные целые значения, связанные с каждым дополнительным символом, будут одни и те же для обеих процедур. В более общем случае, если используются дополнительные символы, соответствующие значения должны быть заданы в



качестве информации, сопровождающей программу (см. примечание к разд. 1 пересмотренного сообщения о языке АЛГОЛ-60).

Процедура-функция length введена, чтобы сделать возможным вычисление длины данной (фактической или формальной) строки (см. пример outstring). Значение length равно числу основных символов открытой строки, заключенной в самые внещние кавычки для строк.

Две процедуры inreal и outreal образуют пару. Процедура inreal присваивает очередное значение, поступающее с внешнего носителя, переменной типа real, заданной как второй параметр. Аналогично процедура outreal передает значение второго фактического параметра на внешний носитель.

Представление значений на внешнем носителе далее не описывается, однако имеется в виду, что если некоторый носитель может использоваться как на входе, так и на выходе, то значение, которое было передано на данный носитель в результате обращения к outreal, представляется в таком виде, что то же самое в смысле численного анализа (см. разд. 3.3.6) значение может быть вновь передано некоторой переменной с помощью процедуры inreal в предположении, что выполнены также соответствующие манипуляции с данным внешним носителем.

Процедуры inarray я outarray также составляют пару; они передают упорядоченное множество чисел, образующее значение массива, заданного в качестве второго параметра; границы массива определяются при этом соответствующим описанием массива, а не какими-либо дополнительными параметрами (механизм для этого уже предусмотрен в языке АЛГОЛ-60 для вызова массивов значением). Порядок, в котором передаются элементы массива, соответствует лексикографическому порядку значений индексов, т. е.

а [kl, k2, kJ предшествует а [ji, уг, .... и],

ki=h (/=1, 2, /7-1)1 ..... если ... [ (1 </<") (2)





0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 [20] 21 22

0.0054