Простейшие операторы ввода-вывода в PL/I

Результаты, получаемые в процессе решения задачи, практически всегда передаются из оперативной памяти ЭВМ на какие-либо внешние устройства. Семейство данных, расположенное на внешнем устройстве (в том числе и терминале), называется набором данных. Процесс передачи данных из оперативной памяти ЭВМ на внешние носители называется выводом данных. Исходные данные для решения задачи передаются в оперативную память ЭВМ с каких-либо внешних носителей. Этот процесс называется вводом данных. Процесс ввода-вывода данных осуществляется с помощью операторов ввода и вывода данных. Операторы ввода-вывода используют только логическую структуру набора данных, без её физических характеристик. В языке PL/1 предусмотрены разнообразные операторы для выполнения ввода и вывода данных. Подробно они будут рассмотрены ниже. Однако, учитывая необходимость ввода и вывода данных даже в программах с простейшей структурой, рассмотрим наиболее часто используемые формы операторов ввода-вывода.

Простейшие операторы ввода (GET) и вывода (PUT) данных имеют вид

GET LIST (s); PUT LIST (s);

Здесь s — список данных вида (a1, а2, …,an) (n≥1), где ai— элемент списка данных. В случае оператора ввода элементами списка данных могут быть, в частности, имена переменных.

Допустима ещё более простая форма операторов GET и PUT, а именно, ключевое слово LIST может быть опущено.

Например, операторы

GET LIST (XI, Y, А, В);

GET (X1,Y, A, B);

задают ввод значений переменных XI, Y, А, В.

На внешних носителях вводимые значения должны следовать в порядке, строго соответствующем порядку элементов списка данных. Вводимые числовые значения представляются в форме любых числовых констант, допустимых в языке PL/1. Для комплексных значений дополнительно могут быть использованы выражения вида х+у и х-у, где х — любая вещественная константа; у — мнимая константа без знака. При этом между х и последующим знаком (+ или -) недопустимы пробелы. На внешних носителях для определения вводимых значений друг от друга достаточно поместить между ними один или несколько пробелов. Последовательность символов, изображающих вводимые значения, называемая входным потоком, всегда рассматривается как непрерывная.

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

В случае оператора вывода (PUT) элементами списка данных могут быть любые выражения. Например, оператор

PUT L 1ST (X, 5, Y**2-3);

задает вывод значения переменной X, числа 5 и значения выражения у2-3. Порядок, в котором выводятся значения, всегда соответствует порядку элементов списка данных. Выводимые вещественные числа представляются в виде десятичных констант, комплексные — в виде пары таких же констант, автоматически разделяемых одним или несколькими пробелами. При печати данных каждое очередное значение обычно размещается в одной из пяти фиксированных позиций строки; тем самым автоматически обеспечивается наглядность выводимого текста. Кроме того, наглядность выводимого текста можно повысить, используя операторы вида:

PUT LIST (s) SKIP;

PUT SKIP LIST (s);

PUT (s) SKIP;

Эти операторы отличаются от рассмотренных ранее тем, что при их выполнении вывод значений всегда начинается с новой строки (s в данном случае, как и выше, список данных).

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

DCL A FLOAT (2), В FLOAT (3), С FLOAT;

то после выполнения последовательности операторов

А, В= -999999; С=А; PUT LIST (А, В, С);

будут напечатаны числовые константы:

-9.9Е+05 -9.99Е+05 -9.99999Е+05

Следует заметить, что фактическая точность представления значений всех трех переменных идентична; именно поэтому в результате указанного выше присвоения значение переменной С стало равно —999999, а не —990000.

При выводе десятичных чисел в форме с фиксированной точкой и точностью (р, q), где p≥q≥0, константа, изображающая выводимое число, всегда содержит ровно q первых дробных цифр (от точки слева направо) и m последних (слева направо) цифр целой части, где 1≤m≤max(1, p-q).

Например, если переменная А описана оператором

DCL A FIXED (5, 2);

то после выполнения фрагмента программы

А=6.258; PUT LIST (А);

будет напечатано число 6.25.

Если q<0 или p

Отправить комментарий

  • Доступны HTML теги: <b> <i> <u> <br> <hr> <div> <span> <code> <pre>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <pli>.

Подробнее о форматировании

  ____    ____  
| ___| |___ \
|___ \ __) |
___) | / __/
|____/ |_____|
Enter the code depicted in ASCII art style.