PUT (записать запись обратно в файл)
PUT(файл[,указатель_в_файле][,длина])
файл | Метка файла. |
указатель_в_файле | Числовая константа, переменная или выражение, содержащая значение, возвращаемое функцией POINTER(файл). Конкретное значение зависит от файлового драйвера. |
длина | Целочисленная константа, переменная или выражение, содержащее число байт, записываемых в файл. ДЛИНА должная быть больше нуля но не больше длины структуры RECORD. Если ДЛИНА пропущена или выходит за разрешенный диапазон, то она сбрасывается до длины структуры RECORD. |
Оператор PUT записывает содержимое буфера RECORD в последнюю запись, к которой производилось обращение.
PUT(файл) | Записывает запись в то место, к которому последний раз обращались NEXT, PREVIOUS, GET, или ADD. Если изменились значения ключевых полей, то ключи (НЕ индексы!) обновляются. |
PUT(файл,указатель_в_файле) | Записывает запись в то место, на которое указывает указатель_в_файле и обновляет ключи. |
PUT(файл,указатель_в_файле,длина) | Записывает ДЛИНА байтов в то место, на которое указывает указатель_в_файле и обновляет ключи. |
Если к записи не было обращения операторами NEXT, PREVIOUS, GET и ADD или она была удалена, то возвращается ошибка "Запись недоступна". PUT также может вернуть ошибку "Такой ключ уже есть". При возникновении какой-либо ошибки файл не изменяется.
Возвращаемые ошибки:
05 Доступ запрещен
33 Запись недоступна
40 Такой ключ уже есть
Пример:
SET(Trn:DateKey) !End/Beginning of file in keyed sequence
LOOP UNTIL BOF(Trans) !Читаем все записи в обратном порядке
PREVIOUS(Trans) ! одну за другой
IF ERRORCODE() THEN STOP(ERROR()).
DO LastInFirstOut !Вызываем процедуру LIFO
PUT(Trans) !Записываем транзакцию обратно в файл
IF ERRORCODE() THEN STOP(ERROR()).
. !Конец цикла
См. также: , , ,