next up previous contents
След.: Управляющие дескрипторы Выше: Форматирование ввода/вывода Пред.: Общие сведения   Содержание


Дескрипторы данных

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

Дескрипторы Iw и Iw.m указывают, что поле имеет ширину $ w$ символов, если $ w\neq 0$ . Если $ w=0$ , ширина определяется системой (допустимо только при выводе). Соответствующие объекты данных должны быть целочисленными. Дескрипторы B, O и Z совершенно аналогичны, но выводят или вводят число в двоичной, восьмеричной или шестнадцатеричной системе. Число $ m$ определяет минимальное количество знаков (с ведущими нулями при необходимости). Если $ w>0$ , то $ m\leq w$ . Если $ m=0$ и выводится число нуль, поле заполняется пробелами. При $ w=m=0$ выводится один пробел. Пример: число $ -74$ под управлением дескриптора I6 будет выведено в виде ___-74 (символ _ здесь заменяет пробел), а дескриптор I6.3 даст __-074.

Дескриптор Fw.d указывает, что поле имеет ширину $ w$ символов, причем дробная часть занимает $ d$ символов, если $ w\neq 0$ . Если $ w=0$ , ширина определяется системой (допустимо только при выводе). Соответствующие объекты данных должны быть вещественными (или комплексными, тогда необходимо два дескриптора -- на вещественную и мнимую части). В поле стоят пробелы (при необходимости), знак (плюс не обязателен), цифры, десятичная точка, цифры дробной части. Пример: число $ \pi$ под управлением F8.3 будет выведено как ___3.142

Дескрипторы Ew.d, Ew,dEe и Dw.d описывают число с экспонентой, например 7.40E-6. Числа $ w$ и $ d$ имеют тот же смысл, число $ e$ указывает число цифр в экспоненте. Дескриптор D аналогичен E, но экспонента отделяется символом D вместо E. Пример: число 1.5678*10**11 под управлением E11.5 будет выведено как 0.15678E+12

Дескриптор EN описывает число в инженерной нотации: десятичный порядок кратен трем, а значащая часть по модулю не меньше единицы и меньше тысячи (либо нуль). Примеры вывода в инженерной нотации: 6.421E+00, -500.000E-03, 2.170E-03, 4.721E+03.

Дескриптор ES описывает число в научной нотации: значащая часть по модулю не меньше единицы и меньше десяти (либо нуль). Примеры вывода в научной нотации: 6.421E+00, -5.000E-01, 2.170E-03, 4.721E+03.

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

Дескрипторы B, O и Z могут работать с вещественными и комплексными значениями: при вводе будет получено значение INT(X), если вводится целое и REAL(X) если вводится вещественное или комплексное число, где X -- битовая константа с теми же битами, что и вводимая двоичная, восьмеричная или шестнадцатеричная строка. При выводе выводится строка битов, представляющая собой выводимое значение.

Дескриптор Lw описывает логическое значение с шириной поля w символов. Поле ввода может содержать пробелы, точку, затем (обязательно) символ T или F (истина и ложь соответственно) и любые другие символы после, которые игнорируются (в частности, значения .TRUE. и .FALSE. являются допустимыми для ввода). Регистр символов не важен. Поле вывода содержит $ w-1$ пробел и затем символ T или F.

Дескриптор A[w] описывает символьные данные. Разновидность типа (кодировка) символов определяется разновидностью типа вводимых или выводимых данных. Ширина поля w символов, если w указано. Если нет, ширина поля определяется длиной данных. Если ширина поля не меньше длины данных, то символы, начиная с правого, читаются из поля ввода. Если же меньше, то все символы будут прочитаны и размещены слева с пробелами после. Если ширина поля вывода превосходит длину данных, выводятся пробелы и затем символы. Если же ширина меньше или равна, выводятся символы, начиная слева. Если разновидность типа не по умолчанию, символ пробела зависит от системы. Если файл открыт для потокового доступа, вывод может быть разделен на несколько записей, если содержит символ новой строки. Этот символ не пробельный и может быть получен с помощью функции NEW_LINE.

Обобщенный дескриптор Gw, Gw.d, Gw.dEe описывает данные любого встроенного типа. Число w, если не ноль, указывает ширину поля. Числа d и e указывают максимальное число символов дробной части и число символов в экспоненте -- применительно к вещественным и комплексным данным. Для целых, логических и символьных данных d и e игнорируются. Если $ w=0$ , ширина поля определяется системой. При выводе $ w>0$ . Дескриптор следует правилам соответствующих дескрипторов для конкретного типа.

Дескриптор DT указывает, что форматирование ввода/вывода (данных производного типа) осуществляется процедурой, предоставляемой пользователем, вместо процедур по умолчанию. Может содержать строку и список целых чисел (в скобках через запятую). Эти данные передаются в процедуру форматного ввода или вывода и могут использоваться по усмотрению ее разработчика. Одно из возможных применений списка чисел -- ширина полей ввода или вывода.



Ilya A. Chernov 2012-12-19
X