Выполняет группу команд, входящих в условный цикл.

DO WHILE lExpression 
      Commands 
   [LOOP]
   [EXIT]
ENDDO

Параметры

lExpression

Задает логическое выражение, значение которого определяет, будут ли выполняться команды, размещенные между DO WHILE и ENDDO. Пока значение lExpression "истина" (.T.), команды этой группы будут выполняться.

Commands

Задает группу команд Visual FoxPro, которые следует выполнять, пока значением выражения lExpression остается "истина" (.T.).

LOOP

Возвращает управление непосредственно оператору DO WHILE. LOOP можно размещать в любом месте между DO WHILE и ENDDO.

EXIT

Передает управление из цикла DO WHILE первой команде, стоящей после ENDDO. EXIT можно размещать в любом месте между DO WHILE и ENDDO.

Expand imageЗамечание

Группа команд, расположенных между DO WHILE и ENDDO, выполняется, пока значением логического выражения lExpression остается "истина" (.T.). Каждый оператор DO WHILE должен иметь соответствующий ему оператор ENDDO.

После операторов DO WHILE и ENDDO в той же строке можно вставлять комментарии. Во время компиляции и выполнения программы комментарии игнорируются.

Expand imageПример

В следующем примере подсчитывается общий наличный запас продуктов, которые стоят больше 20$; при этом используется цикл DO WHILE, работающий до наступления конца файла (EOF). Затем происходит выход из цикла DO WHILE и итоговая сумма появляется на экране.

  CopyCode imageCopy Code
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata')
USE products  && Opens Products table
SET TALK OFF
gnStockTot = 0

DO WHILE .T.  && Begins loop
   IF EOF( )
      EXIT
   ENDIF
   IF unit_price < 20
      SKIP
      LOOP
   ENDIF
   gnStockTot = gnStockTot + in_stock
   SKIP
ENDDO     && Ends loop

CLEAR
? 'Total items in stock valued over 20 dollars:'
?? gnStockTot

Expand imageСмотрите также