каждое tj — описатель поля или группа описателей полей;

каждое zk — разделитель полей;

п может быть равно нулю;

. . . zn_, tn q2) — спецификация формата).

Каждое объявление формата должно быть помечено.

(Измененная редакция, Изм. № 1).

  1. Описатели полей. Описатели полей формата могут иметь вид

rFwd

rEwd
ri w
nHh|h2...hn
nX

(буквы F, E, I, H и X указывают способ преобразования и ре­дактирования при переходе от внутреннего представления запи­сей к внешнему и обратно и называются кодами преобразований;

w и п — отличные от нуля целые без знака, указывающие шири­ну поля для внешней последовательности символов;

d — целое без знака, указывающее количество цифр в дробной части числа, изображаемого внешней последовательности символов;

г — либо пусто, либо отличное от нуля целое без знака, назы­ваемое счетчиком повторений, который указывает, сколько раз должен быть повторен следующий за ним описатель поля;

каждое hi — один из символов, представимых в процессоре).Ширина поля должна быть обязательно указана в каждом описателе поля. Для описателей вида w.d обязательно должно быть указано d, даже в том случае, когда оно есть нуль; w дол­жно быть больше либо равно d.

Термин «основной описатель поля» используется для обозна­чения такого описателя поля, в котором отсутствует г.

Внутреннее представление внешних полей соответствует внут­реннему представлению констант соответствующих типов (пп. 4.2. и 5.1.1).

  1. Разделители полей. Разделители полей предназначены для разделения описателей полей и (или) групп описателей по­лей. Разделителями полей являются дробная черта и запятая. Се­рия дробных черт также является разделителем полей.

Дробная черта используется не только для разделения описате­лей полей, но и для разграничения форматных записей. Формат­ная запись — это последовательность символов. Длины таких после­довательностей для данного внешнего носителя зависят как от процессора, так и от внешнего носителя.

Завершение обработки тех символов, которые могут содержать­ся в записи на внешнем носителе, само по себе не вызывает вво­да или начала обработки следующей записи.

(Измененная редакция, Изм. № 1).

  1. Спецификации повторений. Повторение какого-либо описателя поля (за исключением пН и пХ) достигается при по­мощи счетчика повторений: если позволяет список ввода/вывода, то заданное преобразование выполняется повторно указанное чи­сло раз.

Повторение группы описателей полей или разделителей полей достигается заключением их в скобки и, возможно, помещением перед левой скобкой целого числа без знака, называемого счет­чиком повторений группы и задающего число повторений взятой в скобки группы. Если счетчик повторений группы не задан, то число повторений принимается равным единице. Рассмотренная форма называется основной группой.

  1. Взаимодействие форматного управления со списком ввода/вывода. Начало выполнения оператора форматного ввода или форматного вывода инициирует форматное управление. Каж­дое действие форматного управления определяется как очеред­ным элементом списка ввода/вывода, если таковой имеется, так и очередным описателем поля в спецификации формата. Если име­ется список ввода/вывода, то в спецификации формата должен существовать, по крайней мере, один описатель поля, отличный от пН и пХ.

Если под форматным управлением . выполняется оператор вво­да, то при инициировании форматного управления читается одна запись; после этого следующие записи читаются только в том случае, если этого требует спецификация формата. Каждое та­кое действие не может требовать большего числа символов, чем со­держится в очередной записи.

Если под форматным управлением выполняется оператор вы­вода, то передача записи происходит каждый раз, когда специ­фикация формата требует перехода к новой записи. Завершение форматного управления влечет за собой вывод очередной записи.

Спецификация формата (если не считать эффекта примене­ния счетчиков повторений) интерпретируется слева направо.

Каждому основному описателю I, F или Е, интерпретируемому в спецификации формата, соответствует один элемент, задавае­мый списком ввода/вывода. Каждому основному описателю Н или X не соответствует никакой элемент, задаваемый списком вво­да/вывода; в этом случае форматное управление связывает ин­формацию, содержащуюся в таком описателе, непосредственно с записью. Если встречается дробная черта, то спецификация форма­та требует начала новой и/или окончания очередной записи. Ес­ли при выполнении оператора ввода форматное управление за­вершается или встречается дробная черта, то все необработанные символы очередной записи пропускаются.

Как только форматное управление встречает в спецификации формата основной описатель I, F или Е, оно проверяет, имеется ли соответствующий элемент, задаваемый списком ввода/вывода. Если такой элемент существует, то форматное управление пере­дает преобразованную соответствующим образом информацию от элемента к записи или наоборот и продолжает работу. Если соответ­ствующего элемента нет, то форматное управление завершается.

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

(Измененная редакция, Изм. № 1).

  1. Масштабный множитель — отсутствует; определение — по ГОСТ 23056—78.

  2. Е Действие масштабного множителя — отсутствует; определение — по ГОСТ 23056—78.

  3. Преобразования чисел. Описатели числовых полей I, F и Е используются для задания ввода/вывода данных типа це­лый и вещественный.

Для всех таких преобразований при вводе ведущие пробелы являются незначащими, а остальные пробелы трактуются как ну­ли. Знак плюс может быть опущен. Поле, состоящее из одних пробелов, трактуется как нуль.

Для преобразований F и Е при вводе точка, присутствую­щая в поле ввода, отменяет задание точки в описателе поля.

Для всех таких преобразований при выводе поле вывода вы­равнивается вправо. Если число символов, порождаемых преобразо­ванием, меньше ширины поля, то в поле вывода вставляются ведущие пробелы.

Для всех таких преобразований при выводе внешнее пред­ставление отрицательного значения должно иметь знак ми­нус, представление положительного значения может иметь знак плюс.

Число символов, порождаемых преобразованием при выводе, не должно превышать ширины поля.

  1. Преобразование данных типа целый. Описатель чис­лового поля Iw указывает, что внешнее поле — это целое число, занимающее w позиций. Значение элемента списка является или (после ввода) должно являться во внутреннем представлении данным типа целый.

Во внешнем поле ввода последовательность символов должна представлять целое число без знака или со знаком (п. 5.1.1.1), с учетом трактовки пробелов (п. 7.2.3.6).

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

(Измененная редакция, Изм. № 1).

  1. Преобразование данных типа вещественный. Имеют­ся два преобразования, применимые к данным типа веществен­ный: F и Е.

    1. Описатель числового поля Fw.d указывает, что внешнее поле занимает w позиций, а дробная часть состоит из d цифр. Значение элемента списка является или (после ввода) дол­жно являться во внутреннем представлении данным типа вещест­венный.

Внешнее поле ввода состоит из последовательности цифр, воз­можно, содержащей точку, а этой последовательности может предшествовать знак.

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

  1. Описатель числового поля Ew.d указывает, что внешнее поле занимает w позиций, а дробная часть состоит из d цифр. Значение элемента списка является или (после ввода) дол­жно являться во внутреннем представлении данным типа вещест­венный.

Основная форма внешнего поля ввода такая же, что и для преобразования F.

За основной формой может следовать экспонента в одной из следующих форм:

целое число со знаком;

Е, за которым следует целое число со знаком или без знака. Стандартная форма внешнего поля вывода имеет вид

ВО.хщ.хД

(£ — отсутствие символа, либо знак минус в этой позиции;

Хр . . xd — старшие d десятичных цифр округленного выводи­мого значения данного;

Y —десятичная экспонента).

Y имеет вид

Е±У1У2 или

±УіУ2Уз

(каждое у; — цифра).

Вместо знака плюс в первом из этих видов может стоять про­бел.

      1. Описатель числового поля Gw.d — отсутствует; оп­ределение — по ГОСТ 23056—78.

      2. 7.2.3.6.2.3. (Измененная редакция. Изм. № 1).

    1. Преобразование данных типа двойной точности — отсутствует; определение — по ГОСТ 23056—78.

    2. Преобразование данных типа комплексный — отсут­ствует; определение — по ГОСТ 23056—78.

  1. Преобразование данных типа логический — отсутст­вует; определение — по ГОСТ 23056—78.

  2. Описатель текстового поля. Текстовая информация может передаваться посредством описателя поля пН.

Описатель пН указывает, что в качестве текстовой информа­ции, подлежащей передаче при вводе или выводе, берутся п сим­волов (включая пробелы), следующие непосредственно за описа­телем поля пН в самой спецификации формата.

  1. Описатель поля пробелов. Описатель поля пробелов есть пХ. При вводе пропускаются п символов из внешней вводимой записи, а при выводе во внешнюю выводимую запись вставляет­ся п пробелов.

(Измененная редакция, Изм. № 1).

  1. Спецификация формата в массивах — отсутствует; определение — по ГОСТ 23056—78.

  1. ПРОЦЕДУРЫ И МОДУЛИ

Имеются четыре категории процедур: внутренние функции, встроенные функции, внешние функции и внешние подпрограммы. Первые три категории процедур относятся к функциям (или про­цедурам-функциям), а последняя категория — к подпрограммам (или процедурам-подпрограммам). Имеется одна категория моду­лей: модули-процедуры — к ней относятся модули-функции и мо­дули-подпрограммы. Правила типа для процедур-функций указа­ны в п. 5.3.

  1. Внутренние функции. Внутренняя функция определяется в том же самом программном модуле, в котором имеются ссылки на эту функцию. Такая функция определяется при помощи объ­явления внутренней функции.

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

  1. Структура объявлений внутренних функций. Внутренняя функция определяется при помощи объявления внутренней функ­ции, которое имеет вид

f (а|2,...,ап) = е

(f — символическое имя определяемой функции;

е — выражение;

каждое 3j — символическое имя, называемое формальным па­раметром).

Соответствие между f и е должно удовлетворять правилам присваивания из п. 7.1.1.1.

Символические имена, являющиеся формальными параметра­ми, используются в объявлении внутренней функции лишь для указания типа, числа и порядка параметров функции и могут совпадать с именами переменных того же типа, встречающимися где-либо еще в рассматриваемом программном модуле (но вне объявления данной функции). Все формальные параметры в од­ном объявлении функции должны быть различными.

Выражение е, кроме формальных параметров, может содер­жать только:

константы;

указатели переменных;

указатели встроенных функций;

указатели внутренних функций, определенных ранее в данном программном модуле;

указатели внешних функций.

  1. Ссылки на внутренние функции. Для ссылки на внут­реннюю функцию используется ее указатель (п. 5.2) в качестве первичного выражения в арифметическом выражении. Фактические параметры, образующие список фактических параметров в ука­зателе функции, должны согласовываться по порядку, числу и типу с соответствующими формальными параметрами. Фактичес­ким параметром в указателе внутренней функции может быть любое выражение того же типа, что и соответствующий формаль­ный параметр.

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