Операторы и функции для описания алгоритмов
Операторы и функции для описания алгоритмов по группам:
- Операторы условия
- Операторы цикла
- Арифметические функции
- Функции над строками
- Функции над датой и временем
- Побитовые Функции
- Функции для работы с текстовыми файлами
- Функции для работы с файлами формата DBF
- Системные функции
- Функции для работы с таблицами
- Зарплатные функции
В качестве параметров функций могут быть
- Поля баз данных, которые записываются как ИмяАлиаса.ИмяПоля, например, для обращения к справочнику работников можно записать SR.TN (табельный номер) или SPRRAB.TN. Обращение к полю БД без имени алиаса не допускается.
- значение числового типа
- значение символьного типа
- значение типа Дата
- логическое значение
Комментарии в программе
* [комментарии]
Символ * в начале программной строки означает, что это строка комментариев
Оператор RETURN
Используется для возврата управления вызывающей программе и позволяет определить возвращаемое значение Выр в свойствах отчета для алгоритмов, описанных в разделах Реквизиты и Суммирование
Например, в расчитываемом поле в зависимости от категории сотрудника (SR.KAT) выведем сумму по виду оплат 102-повременная оплата (для 1-й категории) или сумму по виду оплат 101-сдельная оплата (если не 1-я категория)
if SR.KAT=1
else
endif
Операторы условия
- DO CASE...CASE...ENDCASE
- IF...ELSE...ENDIF
- IIF(вырL,выр1,выр2)
DO CASE
ENDCASE
Это команда структурного программирования, обеспечивающая выбор одной последовательности команд из набора возможных альтернатив.
Фраза CASE вырL устанавливает условное выражение для последующей оценки его "истинности". Это логическое выражение, такое, например, как: A = B или числовая переменная < 11.
Если выражение оценено как "ложное", все последующие команды до следующей команды CASE будут пропущены и не выполняются.
Когда условие "истинно" (.Т.), выполняются все последующие команды до появления одной из команд CASE, OTHERWISE или ENDCASE.
После выполнения всех команд первой фразы CASE, для которой условие "истинно", остальные фразы CASE пропускаются и система переходит на первую команду, следующую за ENDCASE.
Если все фразы CASE "ложны" и не указана фраза OTHERWISE, не выполняется никаких команд и система переходит на первую команду, следующую за фразой ENDCASE.
Фраза OTHERWISE определяет выполнение альтернативной последовательности команд, когда все фразы CASE "ложны".
IF вырL
[[ELSE]
ENDIF
Команда структурного программирования, обеспечивающая выполнение команд по условию.
Команда устанавливает условие (логическое выражение) для последующей оценки его "истинности".
Если условие оценивается как "истинное", выполняются все команды, следующие за IF до ELSE или до ENDIF, если команда ELSE не указана. Если условие "ложно" и не указана команда ELSE, все команды между IF и ENDIF игнорируются. Выполнение программы продолжается с первой после ENDIF команды.
Если условие "ложно" и указана команда ELSE, то выполняются все команды между ELSE и ENDIF.
Допускается вложение команд IF, при условии наличия для каждой из них своей команды ENDIF.
Функция IIF() возвращает значение выр1 или выр2 в зависимости от значения вырL.
Возвращаемое значение - числовое, символьное, логическое или дата.
Если значение вырL - "истина" (.T.), функция возвращает значение выр1.
Если значение вырL - "ложь" (.F.) - функция возвращает значение выр2.
Функция IIF() может использоваться взамен структуры IF...ENDIF для создания условных выражений.
Операторы цикла
- DO WHILE...ENDDO
- FOR...ENDFOR
DO WHILE вырL
ENDDO
Это команда структурного программирования, обеспечивающая повторение последовательности команд, заключенной в конструкции DO WHILE...ENDDO до тех пор, пока заданное условие "истинно".
Команда DO WHILE открывает структурную процедуру, которая выполняет последующие команды только пока логическое выражение оценивается как "истинное".
Если условие "истинно", выполняются все последующие команды до ENDDO, LOOP или EXIT. Команды ENDDO и LOOP возвращают управление команде DO WHILE для следующей оценки "истинности" условия. Команда EXIT передает управление следующей за ENDDO команде. Если условие оценивается как "ложное" (.F.), система FoxPro пропускает все команды, заключенные между DO WHILE и ENDDO и переходит на выполнение следующей за ENDDO команды.
Команда ENDDO завершает структуру DO WHILE.
Фраза EXIT передает управление из цикла DO WHILE...ENDDO первой команде, следующей за ENDDO.
Фраза LOOP возвращает управление в начало структуры DO WHILE...ENDDO. Фраза LOOP предотвращает выполнение оставшихся в конструкции DO WHILE после нее команд.
Hеобходимо следить за правильностью вложения всех структурных команд в конструкции DO WHILE.
FOR пер = вырN1 TO вырN2 [STEP вырN3]
ENDFOR
Выполняет команды в цикле указанное число раз.
Выполняет включенные в конструкцию команды указанное число раз.Временная переменная пер используется как счетчик, определяющий число выполнений.
Hет необходимости определять эту переменную до команды FOR...ENDFOR. Числовое выражение вырN1 задает начальное значение счетчика, а числовое выражение вырN2 - окончательное значение.
Включенные в конструкцию команды выполняются последовательно, пока не встретится команда ENDFOR. При этом значение <пер> увеличивается на значение, задаваемое фразой STEP вырN3. Если эта фраза опущена, счетчик увеличивается на единицу.
Затем значение счетчика сравнивается с вырN2. Если счетчик МЕHЬШЕ ИЛИ РАВЕH значению вырN3, цикл выполняется еще раз. В противном случае управление передается команде, следующей за ENDFOR.
Используемые в команде числовые выражения вырN1, вырN2, вырN3 могут быть как допустимыми числовыми выражениями, так и числовыми временными переменными. Их значения считываются при инициализации команды. Их можно менять и внутри цикла, но это не приведет к изменению числа выполнений цикла. о следует очень осторожно менять внутри цикла значение счетчика пер.
Если значение STEP вырN3 отрицательное, то значение счетчика всякий раз УМЕHЬШАЕТСЯ на эту величину, и исходное значение вырN1 должно быть больше значения TO вырN2.
Команда EXIT прерывает выполнение цикла с передачей управления команде, следующей за ENDFOR. Она может располагаться в любом месте между FOR и ENDFOR. Команда LOOP также может быть помещена в любом месте между FOR и ENDFOR. Она передает управление команде FOR не дожидаясь команды ENDFOR.
Конструкция FOR...ENDFOR может быть вложенной.