Cтраница 3
Обновление производится только по запросу. Существует много случаев применений, в которых не предусматривается автоматического обновления отображаемой информации. Внутренние файлы могут обновляться в соответствии с любым из перечисленных выше критериев, однако текущая информация на индикаторах отображается только по запросу. [31]
Если внутренним файлом является переменная, элемент массива или подстрока, он состоит из одной записи. Длина записи равна длине объекта. Если внутренним файлом является массив, он состоит из нескольких записей: каждый элемент массива является записью, длина ее равна длине элемента массива. В операторах ввода-вывода к внутреннему файлу ссылаются по его имени с помощью параметра UNIT. При вводе числовых данных внутренние пробелы воспринимаются как нули. [32]
Переменные в памяти могут вести себя как файлы на диске. Когда переменные используются таким образом, они называются внутренними файлами. Есть два типа внутренних файлов. [33]
Основными операторами ввода-вывода являются READ и WRITE. Оператор READ передает данные из внешнего или внутреннего файла в программу. Оператор WRITE передает данные во внешний или внутренний файл. Форма вызова этих операторов зависит от вида форматирования и типа файла, из которого производится считывание данных. Различается также набор допустимых спецификаторов. Рассмотрим возможные варианты вызова этих операторов. Поскольку в приведенных ниже примерах часто используется символ &, напомним, что он не является частью оператора ввода или вывода, а обозначает продолжение строки программы. [34]
Для внутренних файлов допускается только форматный ввод-вывод, включая ввод-вывод со спецификатором формата, и ввод-вывод, управляемый списком. Использование именованных списков NAMELIST не допускается. Перед выполнением оператора ввода-вывода указатель устанавливается в начало внутреннего файла, перед его первой записью. Если во внутренний файл записано меньше одной полной записи, она дополняется пробелами. [35]
Элементами N являются: UNITN1 - канал, FMTN2 - формат, REC R - номер записи, IOSTATIS - код ответа, END N3 - возврат по концу файла, ERR N4 - возврат по ошибке. Первые два элемента называются позиционными параметрами, их место в списке строго определено, остальные параметры являются ключевыми и могут быть расположены в произвольном порядке, их присутствие в списке N необязательно. Не обязательно также указывать конструкции UNIT и FMT; N1 может быть целым неотрицательным выражением ( номер внешнего ка-яала), ( внешний системный канал, предварительно подсоединенный для ввода-вывода), текстовой величиной ( идентификатор внутреннего файла); N2 - это либо метка оператора FORMAT, либо целая переменная, которой присвоено значение метки оператора FORMAT, либо имя текстового массива, либо текстовое выражение определенного вида, либо символ, означающая свободный формат ( свободный формат подразумевается и в том случае, если отсутствует элемент FMT N2); R - целое положительное выражение, указывающее номер записи при вводе-выводе с прямым доступом ( отсутствие элемента REC R подразумевает последовательный доступ); IS - целая переменная или элемент целого массива, получает значение в конце операции ввода-вывода: 0 - в случае отсутствия ошибки, положительное значение, если произошла ошибка, отрицательное значение, если встретилась запись конца - файла; N3, N4 - метки операторов, куда передается управление в случаях встречи конца файла или ошибки соответственно. [36]
В профамме CONVERSION ( листинг 9.7) считывается запись. Затем проверяется ее первый символ. В зависимости от символа следующее значение интерпретируется как десятичное ( i), восьмеричное ( о) или шестнадцатеричное ( z) Для того чтобы выполнить преобразование из символьного представления в двоичное, используется оператор READ для ввода из внутреннего файла. [37]
Для внутренних файлов допускается только форматный ввод-вывод, включая ввод-вывод со спецификатором формата, и ввод-вывод, управляемый списком. Использование именованных списков NAMELIST не допускается. Перед выполнением оператора ввода-вывода указатель устанавливается в начало внутреннего файла, перед его первой записью. Если во внутренний файл записано меньше одной полной записи, она дополняется пробелами. [38]
Если внутренним файлом является переменная, элемент массива или подстрока, он состоит из одной записи. Длина записи равна длине объекта. Если внутренним файлом является массив, он состоит из нескольких записей: каждый элемент массива является записью, длина ее равна длине элемента массива. В операторах ввода-вывода к внутреннему файлу ссылаются по его имени с помощью параметра UNIT. При вводе числовых данных внутренние пробелы воспринимаются как нули. [39]
К системному математическому обеспечению также предъявляются определенные требования. При этом вызов вычислительных модулей на выполнение должен производиться с использованием стандартного оформления вызова. Одним из условий построения системного математического обеспечения является его модульность с обеспечением автоматического или полуавтоматического синтеза вычислительных схем решения различных задач, а также возможности выполнения расчета по частям в режиме диалога, автоматического прерывания и возобновления расчета. В то же время должна обеспечиваться стандартная организация работы с внешними и внутренними файлами в оперативной и внешней памяти ЭВМ. В зависимости от характера решаемой задачи системное математическое обеспечение должно предоставить возможность для реализации различных оптимизационных стратегий, а также автоматической или полуавтоматической адаптации схем решения задачи. Одновременно должно быть обеспечено удобство общения с программистом и оператором ЭВМ и должны быть средства диагностики о ходе работы. [40]
Файл последовательного доступа состоит из записей, расположенных в той же последовательности, в которой они были записаны в файл. Доступ к данным в файлах с последовательным доступом возможен по порядку, запись за записью, если только положение файлового указателя не меняется операторами REWIND или BACKSPACE. Новая запись может быть добавлена только в конец файла. При попытке добавить новую запись в другое место, файл будет обрезан в том месте, куда добавляется новая запись. Последовательные файлы могут храниться как на диске, так и на магнитной ленте. Файлы, связанные с периферийными устройствами, такими как терминалы, принтеры и другие, являются последовательными. Некоторые методы ввода-вывода возможны только для файлов последовательного доступа. Среди них непродвигающий ввод-вывод, ввод-вывод, управляемый списком, а также NAMEL is т-ввод-вывод. Внутренние файлы ( см. ниже) также являются последовательными файлами. [41]