Cтраница 2
Открытие файла, выполняемое операционной системой не по команде OPEN, указываемой в прикладной программе, a ai-si иматпческн перед первым выполнением оператора ввода-вывода для этого файла. [16]
Если в операторе ввода-вывода указаны параметры ERR и IOSTAT, то при возникновении ошибок с номерами 140, 152, 155, 170, 172 - 174, 180 - 185, 214, 216, 218 - 220, 231 - 232, 234 - 236 и 286 выполнение ошибочного оператора ввода-вывода прекращается, и управление передается оператору, метка которого указана в параметре ERR. При этом переменной, указанной в параметре IOSTAT, присваивается значение, равное номеру ошибки. [17]
При вводе-выводе V - и U-записей возникают трудности в том, что длины записей различны и все записи обычно располагаются в области одной и той же переменной. При выполнении операторов ввода-вывода, когда объявленная длина переменной и фактическая длина записи не совпадают, возникает ситуация RECORD. Для работы с V - и U-записями программист может использовать признак окончания записи. [18]
Список ввода-вывода может содержать имена переменных, массивов и элементов массивов. Если в индексах элементов массивов используются арифметические выражения, то к моменту выполнения оператора ввода-вывода все переменные, входящие в эти выражения, должны получить значения. Элементы списка ввода-вывода разделяются запятыми. [19]
Список ввода-вывода может содержать имена переменных, массивов и элементов массивов. Если в индексах элементов массивов используются арифметические выражения, то к моменту выполнения оператора ввода-вывода все переменные, входящие в эти выражения, должны получить значения, Элементы списка ввода - вывода разделяются запятыми. [20]
При передаче данных из программы, написанной на языке фортран, в программу на языке PL / I ( и обратно) через внешние носители можно использовать как бесформатные ( записеориентированные), так и форматные ( потокоориентированные) операторы ввода-вывода, описанные в гл. Преимущество следует отдать бесформатным операторам, поскольку данные в этом случае представляются на внешних носителях во внутренней форме, и никакого преобразования их во время выполнения операторов ввода-вывода не производится, что ускоряет передачу данных. [21]
Файлы, передаваемые потоком ( STREAM) или записями ( RECORD), могут быть распределены на экран АП. Однако, если несколько файлов распределено на АП и часть из них есть файлы RECORD, не гарантируется, что порядок передачи данных между программой и АП будет соответствовать порядку выполнения операторов ввода-вывода. [22]
Вывод записями не синхронизируется автоматически с другими возможными выводами. Вследствие этого, если несколько файлов будут распределены на АП и среди них будут файлы, передаваемые записями, нет гарантии, что порядок передачи данных между программой и АП будет соответствовать порядку выполнения операторов ввода-вывода. [23]
При выполнении операторов ввода-вывода списки данных и форматов просматриваются слева направо, при этом каждый очередной элемент списка данных связывается с очередным элементом списка форматов. Если один или несколько очередных форматов являются управляющими, то указанные ими действия выполняются, но элемент списка данных связывается с первым форматом данных, следующим за управляющими. Выполнение операторов ввода-вывода заканчивается по достижении конца списка данных. Если при этом в списке форматов остаются неиспользованные элементы, то они игнорируются. Если в процессе ввода-вывода исчерпан список форматов, то он используется повторно, начиная с первого элемента, до тех пор, пока не будет просмотрен весь список данных. [24]
Для внутренних файлов допускается только форматный ввод-вывод, включая ввод-вывод со спецификатором формата, и ввод-вывод, управляемый списком. Использование именованных списков NAMELIST не допускается. Перед выполнением оператора ввода-вывода указатель устанавливается в начало внутреннего файла, перед его первой записью. Если во внутренний файл записано меньше одной полной записи, она дополняется пробелами. [25]
Во время выполнения оператора ввода-вывода происходит параллельный просмотр спецификации формата, списка ввода-вывода и данных в полях ввода и вывода. При этом взаимодействии принимаются во внимание повторители форматов и группы форматов. Как было замечено ранее, только повторяемым форматам ( с кодами I, F, Е, D, Q, G, A, L и Z) соответствуют элементы в списке ввода-вывода. Когда в спецификации формата встречаются форматы, отличные от указанных, просмотр списка ввода-вывода временно прекращается, однако просмотр спецификации форматов и записей ввода-вывода продолжается. Может оказаться, что количество элементов в списке ввода-вывода совпадает с количеством повторяемых форматов в спецификации формата. В этом случае после передачи последнего элемента списка ввода-вывода параллельный просмотр завершается, и выполнение оператора ввода-вывода заканчивается. [26]
Спецификатор IOSTAT задает имя скалярной переменной целого типа, содержащей статус завершения операции ввода-вывода. При выполнении оператора передачи данных этой переменной присваивается целое значение. Положительное значение является кодом ошибки. Отрицательные значения возвращаются при достижении конца файла или конца записи. В остальных случаях возвращается нулевое значение. Спецификатор IOSTAT используется для того, чтобы продолжить выполнение программы после ошибки ввода-вывода, а также получить информацию об операции ввода-вывода. Он может использоваться совместно со спецификаторами ветвления END, EOR и ERR. При выполнении оператора ввода-вывода, содержащего спецификатор IOSTAT, подавляется вывод сообщений операционной системы об ошибках. [27]