Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
В.Д. Боев, Р.П. Сыпченко.docx
Скачиваний:
179
Добавлен:
19.09.2019
Размер:
7.07 Mб
Скачать

8.1.1. Блок open

Блок OPEN предназначен для инициализации потока данных. Формат блока:

OPEN A,[B],[C]

Операнд А - дескриптор потока данных. Операнд определяет тип потока данных. Он обрабатывается как строка. Если это нулевая строка, создается поток в памяти. Если это канальное имя, такое как "\pipe\mypipe", создается канальный поток. В противном случае создается поток ввода-вывода и предполагается, что операнд А является спецификацией файла.

Операнд В - номер потока данных, произвольное положительное число, задаваемое пользователем. Нумерация потоков введена с целью использования одновременно в одном процессе моделирования нескольких потоков данных. По умолчанию номер потока данных равен 1.

Операнд С - метка блока, в который направляется транзакт в случае ошибки инициализации потока данных. Коды ошибок:

  • 0 - нет ошибки;

  • 10 - длинное имя файла;

  • 11 - ошибка чтения внешнего файла;

  • 12 - во время попытки открыть файл был запрещен доступ к памяти.

OPEN ("Plan.txt"),3,Kon1

OPEN ("G\Model\NorPogr.txt")

OPEN ("")

В первом примере открывается поток ввода-вывода, потоку присваивается номер 3 и в случае ошибки открытия активный транзакт направляется к блоку с меткой Kon1. Операндом А указан неполный путь доступа к файлу, поэтому подразумевается, что используется папка объекта "Процесс моделирования". Если файл с указанным именем не найден, то предполагается, что файл создается, и ошибка не возникает.

Во втором примере операндом А указан полный путь доступа к файлу, открываемому потоку ввода-вывода по умолчанию присваивается номер один. В случае ошибки открытия активный транзакт направляется к следующему по порядку блоку.

В третьем примере открывается поток в памяти.

Замечание. Если указанный операндом А файл найден, во время обработки блока OPEN он полностью загружается в виртуальную память. Все находившиеся в файле данные хранятся как часть объекта "Процесс моделирования" до тех пор, пока поток данных не будет закрыт. Все изменения данных отражаются в файловой системе только после того, как поток данных закрывается блоком CLOSE или библиотечной Plus-процедурой Close().

8.1.2. Блок close

Блок CLOSE предназначен для закрытия потока данных. Формат блока:

CLOSE A,[B],[C]

Операнд А - номер или имя параметра транзакта, в который записывается код ошибки закрытия потока данных. Если такой параметр не существует, он создается.

Операнд В - номер закрываемого потока данных, по умолчанию равен 1, т. е. если операнд В не используется, закрывается поток номер один.

Операнд С - метка блока, в который направляется транзакт в случае ошибки закрытия потока данных. Коды ошибок:

  • 0 - нет ошибки;

  • 41 - запись файла на диск не произведена из-за ошибки ввода-вывода;

  • 42 - файл не был открыт.

Например:

CLOSE Parm_Error,(P1+1)

В примере блок CLOSE закрывает поток данных, номер которого задан выражением в скобках. Это выражение вычисляется, округляется и используется в качестве номера потока данных (должен быть положительным целым числом).

Блок CLOSE для потоков ввода-вывода записывает данные из виртуальной памяти в дисковый файл.