Для всех таких преобразований при выводе внешнее представление отрицательного значения должно иметь знак минус, представление положительного значения может иметь знак плюс.
Число символов, порождаемых преобразованием при выводе, не должно превышать ширины поля.
Преобразование данных типа целый. Описатель числового поля Iw указывает, что внешнее поле — это целое число, занимающее w позиций. Значение элемента списка является или (после ввода) должно являться во внутреннем представлении данным типа целый.
Во внешнем поле ввода последовательность символов должна представлять целое число без знака или со знаком (п. 5.1.1.1), с учетом трактовки пробелов (п. 7.2.3.6).
Внешнее поле вывода состоит, если это необходимо, из пробелов, за которыми следует знак минус, если данное во внутреннем представлении отрицательно, или, возможно, знак плюс в противном случае, за которым следует целое число без знака, представляющее величину внутреннего данного.
7.2.3.5.1, 7.2.3.6, 7.2.3.6.1. (Измененная редакция, Изм. № 1).
Преобразование данных типа вещественный. Имеются три преобразования, применимые к данным типа вещественный: F, Е, G.
Описатель числового поля Fw.d указывает, что внешнее поле занимает w позиций, а дробная часть состоит из d цифр. Значение элемента списка является или (после ввода) должно являться во внутреннем представлении данным типа вещественный.
Основная форма внешнего поля ввода состоит из последовательности цифр, возможно, содержащей точку, а этой последовательности может предшествовать знак. За основной формой может следовать экспонента в одной из следующих форм:
целое число со знаком;
Е, за которой следует целое число без знака или со знаком;
D, за которой следует целое число без знака или со знаком.
Экспонента, содержащая D, эквивалентна экспоненте, содержащей Е.
Внешнее поле вывода состоит, если это необходимо, из пробелов, за которыми следует знак минус, если внутреннее значение отрицательно, или, возможно, знак плюс в противном случае, за которым следует последовательность цифр, содержащая точку и представляющая величину внутреннего данного, измененную установленным масштабным множителем и округленную до d десятичных цифр после запятой.
Описатель числового поля Ew.d указывает, что внешнее поле занимает w позиций, а дробная часть состоит из d цифр. Значение элемента списка является или (после ввода) должно являться во внутреннем представлении данным типа вещественный.
Форма внешнего поля ввода такая же, что и для преобразования F.
Стандартная форма внешнего поля вывода для масштабного множителя, равного нулю, имеет вид
gO.X|...xdY
(£ — отсутствие символа, либо знак минус в этой позиции;
X]...xd — старшие d десятичных цифр округленного выводимого значения данного;
Y — десятичная экспонента;
цифра 0 в приведенной выше стандартной форме может быть опущена).
Y имеет вид
Е± у,у2 или
±У1У2Уз
(каждое у, — цифра).
Вместо знака плюс в первом из этих видов может стоять пробел.
Масштабный множитель п управляет десятичной нормализацией между смешанной дробью £0.xi...xd и экспонентой следующим образом (см. также п. 7.2.3.5.1).
Если п^О, то будет ровно —п ведущих нулей и d-|-n значащих цифр после точки.
Если п>0, то будет ровно п значащих цифр слева от точ- кии d—п + 1 цифр справа от точки.
7.2.3.6.2.3. Описатель числового поля G w.d указывает, что внешнее поле занимает w позиций с d значащими цифрами. Значение элемента списка является или (после ввода) должно являться во внутреннем представлении данным типа вещественный.
Метод представления внешней последовательности символов при выводе зависит от величины вещественного данного, подвергаемого преобразованию. Пусть N — величина внутреннего данного. Соответствие между N и эквивалентным применяемым методом преобразования задается следующим образом:
Величина данного Преобразование
0.1<N<l F(w—4).d,4X
l<N<10 F(w—4).(d— 1),4X
10d~2<
10d~'<N
10<b 1 10d
F(w—4).1,4X
F(w—4).0,4X
В остальных случаях sEw.d.
Заметим, что действие масштабного множителя временно приостанавливается, если величина данного, подвергаемого преобразованию, оказывается в области, допускающей использование преобразования F.
1—7.2.3.6.2.3 (Измененная редакция, Изм. № 1).
Преобразование данных типа двойной точности. Описатель числового поля Dw.d указывает, что внешнее поле занимает w позиций, а дробная часть состоит из d цифр. Значение элемента списка является или (после ввода) должно являться во внутреннем представлении данным типа двойной точности.
Основная форма внешнего поля ввода та же самая, что и для преобразования данных типа вещественный.
Внешнее поле вывода такое же, что и для преобразования Е, за исключением того, что символ Е в экспоненте может заменяться символом D.
Преобразование данных типа комплексный. Поскольку данное типа комплексный состоит из пары отдельных данных типа вещественный, то его преобразование определяется двумя последовательно интерпретируемыми описателями вещественных полей. Первый из них дает вещественную часть, второй — мнимую.
Преобразование данных типа логический. Описатель логического поля Lw указывает, что внешнее поле занимает w позиций как последовательность символов, вид которой определен ниже. Элемент списка является или (после ввода) должен являться во внутреннем представлении данным типа логический.
Внешнее поле ввода должно состоять из, возможно, пробелов, за которыми следует символ Т либо символ F, за которым, возможно, следуют остальные символы, изображающие значения «истина» (True) или «ложь» (False) соответственно.
Внешнее поле вывода состоит из w—1 пробела, за которым следует символ Т или символ F, если значение внутреннего данного есть соответственно «истина» или «ложь».
Описатель текстового поля. Текстовая информация может передаваться посредством двух описателей полей: пН или Aw.
Описатель пН указывает, что в качестве текстовой информации, подлежащей передаче при вводе или выводе, берутся п символов (включая пробелы), следующие непосредственно за описателем поля пН в самой спецификации формата.
Описатель Aw указывает, что при вводе прочитываются w символов и передаются в элемент, определяемый списком ввода/выво- да, а при выводе из этого элемента выбираются w символов.
Пусть g — число символов, которые могут быть размещены в одной единице памяти. Если ширина поля w больше либо равна g, то при вводе из внешнего поля будут взяты самые правые g символов. Если ширина поля w меньше g, то при вводе во внутреннем представлении будет w символов, сдвинутых влево, за которыми будет следовать g—w пробелов.
Если ширина поля w больше g, то при выводе внешнее поле будет состоять из w—g пробелов, за которыми следуют g символов из внутреннего представления. Если ширина поля w меньше либо равна g, то при выводе внешнее поле будет состоять из w самых левых символов из внутреннего представления.
Описатель поля пробелов. Описатель поля пробелов есть пХ. При вводе пропускаются п символов из внешней вводимой записи, а при выводе во внешнюю выводимую запись вставляется п пробелов.
7.2.3.7—7.2.3.9. (Измененная редакция, Изм. № 1).
Спецификация формата в массивах. Любой оператор форматного ввода/вывода может содержать имя массива в том месте, которое отведено для указания метки объявления формата. В тот момент, когда на этот массив производится ссылка из оператора ввода/вывода, начальная часть информации, содержащейся в этом массиве, взятая в естественном порядке, должна образовывать правильную спецификацию формата. На информацию, содержащуюся в массиве и следующую за правой скобкой, ограничивающей спецификацию формата, не накладывается никаких ограничений.
Спецификация формата, размещаемая в массиве, имеет тот же вид, который был определен для объявления формата, т. е. она начинается с левой скобки и заканчивается правой скобкой. В массиве описатель поля пН не может быть частью спецификации формата. Спецификация формата может быть помещена в массив с помощью объявления начальных данных, а также с помощью оператора ввода с форматом, содержащим описатель поля типа А.
ПРОЦЕДУРЫ И МОДУЛИ
Имеются четыре категории процедур: внутренние функции, встроенные функции, внешние функции и внешние подпрограммы. Первые три категории процедур относятся к функциям (или процедурам-функциям), а последняя категория — к подпрограммам (или процедурам-подпрограммам). Имеются две категории модулей: модули-процедуры и модули-спецификации; к первой из них относятся модули-функции и модули-подпрограммы, а ко второй — модули-блоки данных. Правила типа для процедур-функций указаны в п. 5.3.
Внутренние функции. Внутренняя функция определяется в том же самом программном модуле, в котором имеются ссылки на эту функцию. Такая функция определяется при помощи объявления внутренней функции.
В каждом программном модуле все определения внутренних функций должны предшествовать первому оператору этого модуля и следовать за объявлениями спецификаций, если таковые имеются. Имя внутренней функции не должно встречаться в том же самом программном модуле ни в объявлениях внешних имен, ни в качестве имени переменной или имени массива.
Структура объявлений внутренних функций. Внутренняя функция определяется при помощи объявления внутренней функции, которое имеет вид
f(а,, а2,...,ап) =е
(f — символическое имя определяемой функции;
е — выражение;
каждое а, — символическое имя, называемое формальным параметром).
Соответствие между f и е должно удовлетворять правилам присваивания из пп. 7.1.1.1—7.1.1.2.
Символические имена, являющиеся формальными параметрами, используются в объявлении внутренней функции лишь для указания типа, числа и порядка параметров функции и могут совпадать с именами переменных того же типа, встречающимися где-либо еще в рассматриваемом программном модуле (но вне объявления данной функции). Все формальные параметры в одном объявлении функции должны быть различными.
Выражение е, кроме формальных параметров, может содержать только:
нетекстовые константы;
указатели переменных
;
указатели встроенных функций;
указатели внутренних функций, определенных ранее в данном программном модуле;
указатели внешних функций.
Ссылки на внутренние функции. Для ссылки на внутреннюю функцию используется ее указатель (п. 5.2.) в качестве первичного выражения в арифметическом или логическом выражении. Фактические параметры, образующие список фактических параметров в указателе функции, должны согласовываться по порядку, числу и типу с соответствующими формальными парамет-
Таблица 3
Встроенная функция |
Определение |
Число параметров |
Сим воличе- кое имя |
Тип |
|
параметров |
функции |
||||
Абсолютное значение |
|а| |
1 |
ABS |
Вещ. |
Вещ. |
IABS |
Цел. |
Цел. |
|||
DABS |
Дв. |
Дв. |
|||
Усечение* |
sign (а) умножается на [1 а| ] |
1 |
AINT |
Вещ. |
Вещ. |
INT |
Вещ. |
Цел. |
|||
IDINT |
Дв. |
Цел. |
|||
Взятие остатка** |
a, (mod а2) |
2 |
AMOD |
Вещ. |
Вещ. |
MOD |
Цел. |
Цел. |
|||
Выбор наибольшего значения |
max (а,, а2...) |
>2 |
АМАХО |
Цел. |
Вещ. |
АМАХ1 |
Вещ. |
Вещ. |
|||
МАХО |
Цел. |
Цел. |
|||
МАХ1 |
Вещ. |
Цел. |
|||
DMAX1 |
Дв. |
Дв. |
|||
Выбор наименьшего значения |
min ( а,, а2...) |
>2 |
AMINO |
Цел. |
Вещ. |
AMINI |
Вещ. |
Вещ. |
|||
MINO |
Цел. |
Цел. |
|||
MINI |
Вещ. |
Цел. |
|||
DMIN1 |
Дв. |
Дв. |
|||
Преобразование в плавающую форму |
Преобразование от целого к вещественному |
1 |
FLOAT |
Цел. |
Вещ. |
Преобразование в фиксированную форму |
Преобразование от вещественного к целому |
1 |
[FIX |
Вещ. |
Цел. |
Продолжение табл. 3
Встроенная функция |
Определение |
Число параметров |
Символическое имя |
Тип |
|
параметров |
функции |
||||
Передача знака |
sign (а2) умножается на |at 1 |
2 |
SIGN |
Вещ. |
Вещ. |
ISIGN |
Цел. |
Цел. |
|||
DSIGN |
Дв. |
Дв. |
|||
Положительная разность |
а,—min (а,, а2) |
2 |
DIM IDIM |
Вещ. Цел. |
Вещ. Цел. |
Получение максимальной значащей части аргумента двойной точности |
|
1 |
SNGL |
Дв. |
Вещ. |
Получение вещественной части комплексного аргумента |
|
1 |
REAL |
Ком пл. |
Вещ. |
Получение мнимой части комплексного аргумента |
|
1 |
AIMAG |
Ком пл. |
Вещ. |
Преобразование вещественного аргумента в форму двойной точности |
|
1 |
DBLE |
Вещ. |
Дв. |
Преобразование двух вещественных аргументов в комплексную форму |
ai +a2V—1 |
2 |
CMPLX |
Вещ. |
Компл. |
Получение комплексной величины, сопряженной с аргументом |
|
1 |
CONJG |
Ком пл. |
Компл. |