ГОСТ 23057-78 сторінка 4 з 8
Записи могут быть форматными и бесформатными. Форматная запись состоит из последовательности символов, допускающих представление в процессоре. Передача такой записи требует ссылки на спецификацию формата, которая определяет необходимые преобразования и размещение записи (п. 7.2.3). Число записей, передаваемых при выполнении операторов форматного чтения или записи, зависит от списка ввода/вывода и указанной спецификации формата (п. 7.2.3.4). Бесформатная запись состоит из последовательности значений в виде, определяемом процессором. Когда выполняется оператор форматного или бесформатного ввода, требуемые записи на указанном устройстве должны быть соответственно форматными или бесформатными.
(Измененная редакция, Изм. № 1).
-
Списки ввода/вывода. Список ввода определяет имена переменных и элементов массивов, которым присваиваются значения при вводе. Список вывода определяет те переменные и элементы массивов, значения которых передаются при выводе вовне. Списки ввода и списки вывода устроены одинаково.
Списком называется либо простой список, либо простой список, заключенный в круглые скобки, либо список с циклом, либо два списка, разделенных запятой.
Простой список есть либо имя переменной, либо имя элемента массива, либо имя массива, либо два простых списка, разделенных запятой.
Список с циклом — это взятая в круглые скобки последовательность, состоящая из списка и спецификации цикла, разделенных запятой.
Спецификация цикла имеет вид
І —- ГП і, ГП 2, ГП 2
ИЛИ
1 = гпнт2
(i, trip т2 и т3 определяются так же, как и для оператора цикла (п. 7.1.2.8)).
Область действия спецификации цикла — это список, входящий в состав списка с циклом; для списков ввода i, mb m2 и m3 могут встречаться внутри этой области только в индексах.
Имя переменной или имя элемента массива в списке задают самих себя. Имя массива задает имена всех элементов массива, определенных описанием массива, и эти элементы задаются в порядке, определяемом функцией линеаризации (п. 7.2.1.1.1).
Элементы списка считаются упорядоченными в соответствии с их вхождением в список при его просмотре слева направо. Это упорядочение элементов в списке с циклом имеет место для каждого очередного повторения цикла.
-
Оператор форматного ввода. Оператор форматного ввода имеет вид
READ (u, f) к или
READ (u, f)
(к — список ввода).
В результате выполнения этого оператора вводятся очередные записи с устройства, заданного и. Вводимые данные просматриваются и преобразуются в соответствии с форматом, заданным f. Полученные в результате значения присваиваются элементам, определенным списком к (см. п. 7.2.3.4).
-
Оператор форматного вывода. Оператор форматного вывода имеет вид
WRITE (u, f) к или
WRITE (u, f)
(к — список вывода).
В результате выполнения этого оператора создаются очередные записи на устройстве, заданном и. Список вывода к определяет последовательность передаваемых значений. Эти значения преобразуются и разносятся по позициям в соответствии с форматом, заданным f (см. п. 7.2.3.4).
-
Оператор бесформатного ввода. Оператор бесформатного ввода имеет вид
READ (и) к или
READ (и)
(к — список ввода).
В результате выполнения этого оператора с устройства, заданного и, вводится очередная запись и — если имеется список ввода — значения, содержащиеся в этой записи, последовательно присваиваются элементам, определенным списком к. Последовательность значений, требуемая списком, не может быть длиннее последовательности значений в бесформатной записи.
-
Оператор бесформатного вывода. Оператор бесформатного вывода имеет вид
WRITE (u) к
(к — список вывода).
В результате выполнения этого оператора на устройстве, заданном и, создается очередная запись, состоящая из последовательности значений, определяемой списком к.
-
Вспомогательные операторы ввода/вывода. Существует три типа вспомогательных операторов ввода/вывода:
оператор перемотки;
оператор сдвига назад;
оператор разметки.
-
Оператор перемотки. Оператор перемотки имеет вид REWIND и
В результате выполнения этого оператора устройство, заданное и, устанавливается в начальную позицию.
-
Оператор сдвига назад. Оператор сдвига назад имеет вид
BACKSPACE и
Если устройство, заданное и, находится в начальной позиции, то в результате выполнения этого оператора продолжается нормальный порядок выполнения операторов; в противном случае, кроме этого, позиция устройства изменяется таким образом, что запись, которая до выполнения этого оператора была предыдущей, становится очередной.
-
Оператор разметки. Оператор разметки имеет вид
ENDFILE и
В результате выполнения этого оператора на устройство, заданное и, выводится специальная запись «конец файла». «Конец файла» — это единственная запись, обозначающая границу последовательного файла. Если запись «конец файла» встретится при выполнении какого-либо оператора ввода, то действие такого оператора не определено.
-
Вывод форматных записей на печать. При передаче форматной записи на печать ее первый символ не печатается.
7.2. Объявления. Имеется четыре типа объявлений:
объявления спецификаций;
объявление формата;
объявление внутренней функции;
заголовки (функций и подпрограмм).
Ограничения на использование символических имен в объявлениях изложены в п. 10.2.
Объявления внутренних функций и заголовки (функций и подпрограмм) рассматриваются в разд. 8.
7.1.3.4, 7.2 (Измененная редакция, Изм. № 1).
-
Объявления спецификаций. Имеется три типа объявлений спецификаций:
объявление массивов;
объявление общих объектов;
объявление эквивалентности.
-
Описание массива. Описание массива задает характеристики массива, используемого в рассматриваемом модуле.
Описание массива указывает символическое имя массива, число измерений (одно или два) и размеры по каждому измерению. Описание массива может встречаться в объявлениях массивов.
Описание массива имеет вид
v(i)
(v ■— символическое имя, называемое именем описания;
і — список границ).
Список границ состоит из одного целого числа без знака или двух целых чисел без знака, разделенных запятой.
Наличие списка границ в каком-либо описании служит для информирования процессора о том, что это имя описания является именем массива. Количество целых чисел без знака, образующих список границ, указывает размерность массива. Значения выражений в описании массива определяют максимальное значение, которое может принимать индекс в любом имени элемента этого массива (п. 7.2.1.1.1).
Значение индекса в имени элемента массива не должно быть меньше единицы или больше максимального значения, определенного описанием этого массива.
-
Функция линеаризации массива и значение индекса. В табл. 2 для заданных размерности, списка границ и индекса в имени элемента массива приведено значение индекса этого элемента массива, а также максимальное значение, которое могут принимать индексы в именах элементов этого массива. Значения всех индексных выражений должны быть больше нуля.
Функция линеаризации упорядочивает все элементы любого массива. Значение этой функции для некоторого данного элемента получается прибавлением единицы к соответствующему значению, указанному в графе «Значение индекса». Элемент массива, индекс которого имеет это значение, следует непосредственно за данным элементом. Последний элемент массива — это элемент, значение индекса которого равно максимально допустимому значению; для этого элемента не существует непосредственно следующего за ним элемента.
Таблица 2
|
Размерность |
Список границ |
Индекс |
Значение индекса |
Максимальное значение индекса |
|
1 |
(А) |
(а) |
а |
А |
|
2 |
(А, В) |
(а, Ь) |
а + А • (b— 1) |
А • В |
Примечание, а и b — индексные выражения; А и В — верхние границы по измерениям.
-
-
Регулируемые размеры — отсутствует; определение — по ГОСТ 23056—78.
-
-
Объявление массивов. Объявление массивов имеет вид
DIMENSION V, (і,), v2(i2),..„ vn(in)
(каждое Vj (ij) —описание массива).
-
Объявление общих объектов. Объявление общих объектов имеет вид
COMMON а,, а2,...,ап
(каждое — имя переменной или имя массива).
Все объекты, перечисленные в конкретном объявлении общих объектов, считаются входящими в общий блок.
В программном модуле может быть несколько объявлений общих объектов. Все такие объекты располагаются в общем блоке в порядке их появления (п. 10.1.2). При этом первый элемент массива будет непосредственно следовать за предыдущим объектом (если таковой существует), а последний элемент массива будет непосредственно предшествовать следующему объекту (если таковой существует).
Размер общего блока в программном модуле равен сумме объемов памяти, требуемых для размещения объектов, включенных в общий блок при помощи объявлений общих объектов и эквивалентности (п. 7.2.1.4). Размер общего блока не обязан быть одним и тем же в разных совместно выполняемых программных модулях. Размер блока измеряется в единицах памяти (п. 7.2.1.3.1).
-
Соответствие общих блоков. Пусть все объявления общего блока в программных модулях выполнимой программы определяют одну и ту же длину общего блока и, кроме того, типы объектов, расположенных в одинаковых позициях различных объявлений этого блока, совпадают. Тогда значения в соответствующих позициях общего блока (определенных по числу предшествующих единиц памяти) будут во всей выполнимой программе одними и теми же.
Считается, что объект типа целый или вещественный занимает одну единицу памяти.
Для общего блока:
во всех тех программных модулях, где в данной позиции (определяемой числом предшествующих единиц памяти) задан один и тот же тип, ссылки на эту позицию дают одно и то же значение;
правильная ссылка, сделанная на конкретную позицию, подразумевает тип, заданный в объявлениях, если последнее по времени присваивание в эту позицию было того же типа.
-
Объявление эквивалентности. Объявление эквивалентности имеет вид
EQUIVALENCE (к,), (к2),...,(к„)
(каждое к; — список вида а,, а2,..., ат;
каждое — имя переменной или 'имя элемента массива, индекс которого содержит только константы;
ГП|>2).
В списки к не могут входить формальные параметры. Число индексных выражений в имени элемента массива должно либо совпадать с числом измерений в описании массива, либо должно быть равно единице (функция лианеризации определяет правило, по которому любой массив можно свести к одномерному массиву той же самой длины).
Все элементы, образующие какой-либо список в объявлении эквивалентности, размещаются в памяти, начиная с одной и той же единицы памяти. Объявление эквивалентности не должно использоваться для того, чтобы сделать две или более величины математически эквивалентными.
Отведение памяти для переменных или массивов, объявленных непосредственно в объявлении общих объектов, производится только с учетом их типов, объявлений общих объектов и описаний массивов. Объявленным таким образом объектам всегда отводится память в том порядке, в котором они следуют в объявлении общих объектов.
Результатом объявления эквивалентности по отношении к общим объектам может быть лишь удлинение общего блока; при этом разрешается только такое удлинение, которое расширяет общий блок за последний, но не за первый объект этого блока, определенный непосредственно в объявлении общих объектов.
Если две переменные или элементы двух массивов совмещаются в памяти в результате эффекта объявления эквивалентности, то имена этих переменных или массивов в данном программном модуле не могут одновременно встречаться в объявлении общих объектов.
Информация, содержащаяся в пп. 7.2.1.1.1, 7.2.1.3.1 и в настоящем пункте, достаточна для того, чтобы описать возможности дополнительных случаев совмещения в памяти элементов массивов и объектов из общих блоков. Не допускается явное или неявное отведение одной и той же единицы памяти для хранения более чем одного элемента одного и того же массива.
(Измененная редакция, Изм. № 1).
-
-
Объявление внешних имен — отсутствует; определение — по ГОСТ 23056—78.
-
Объявление типа — отсутствует; определение — по ГОСТ 23056—78.
-
-
Объявление начальных данных — отсутствует; определение — по ГОСТ 23056—78.
-
Объявление формата. Объявления формата используются в связи с форматным вводом/выводом для указания необходимого преобразования и редактирования информации при переходе от ее внутреннего представления к внешней последовательности символов и обратно.
Объявление формата имеет вид
FORMAT (q1t1zlt2z2...zn ]tnq2)
(каждое qj — серия дробных черт или пусто;
Побачили розбіжність з офіційним текстом?
Дивіться також
Сборник ГОСТ ЕСКД
Збірник із 154 стандартів