SKIP (пропустить записи в последовательности)
SKIP(файл,count)
файл | Метка файла. |
count | Числовая константа или переменная. COUNT задает число пропускаемых записей. Если значение положительное, то записи пропускаются ВПЕРЕД (аналогично NEXT). Если же COUNT отрицательно, то записи пропускаются НАЗАД (аналогично PREVIOUS). |
Оператор SKIP используется для пропуска записей во время последовательной обработки файла. Он пропускает записи в порядке, задаваемом оператором SET, перемещая указатель записи в файле на COUNT записей вперед или назад. SKIP более эффективен, чем NEXT или PREVIOUS при пропуске нескольких записей, поскольку он НЕ считывает записи в буфер, отведенный под структуру RECORD.
Если SKIP пытается выйти за конец или начало файла, то функции EOF() и BOF() возвращают истину. Если ранее не был выполнен SET, то SKIP игнорируется.
Пример:
SET(Itm:InvoiceKey) !Начинаем от начала файла товаров
LOOP UNTIL EOF(Items) !Обрабатываем все записи
NEXT(Items) !Читаем запись
IF ERRORCODE() THEN STOP(ERROR()).
IF Itm:InvoiceNo <> SavinvNo !Если это первый товар в зака-
! зе, то
Hea:InvoiceNo = Itm:InvoiceNo !инициализируем ключевое
! поле и
GET(Header,Hea:InvoiceKey)
!получаем соответствующий ему за-
! головок столбца
IF ERRORCODE() THEN STOP(ERROR()).
IF Hea:InvoiceStatus = 'Cancel' !Если заказ отменен,
SKIP(Items,Hea:ltemCount-1) ! то пропускаем осталь-
! ные товары
CYCLE ! и обрабатываем следую-
! щий заказ
. . ! конец операторов IF
DO ItemProcess ! обрабатываем товар
SavInvNo = Itm:lnvoiceNo ! сохраняем номер счета
. !Конец цикла