Перейти к основному содержимому

Условный оператор

Формат:

IF <Логическая переменная> THEN; BEGIN;

<Выражение1>;

.

.

<ВыражениеN>;

END;

ELSE; BEGIN;

<Выражение1>;

.

.

<ВыражениеN>;

END;

<Логическая переменная> - см. «ЛОГИЧЕСКАЯ ПЕРЕМЕННАЯ»;

<Выражение> - оператор или конструкция.

Пример:

IF ПРОВ THEN; BEGIN;

ЗАРПЛАТА=ОКАЗАНО_УСЛУГ*0.1;

END;

ELSE; BEGIN;

ПРОВ=ОКАЗАНО_УСЛУГ<ГРАНИЦА2;

IF ПРОВ THEN; BEGIN;

ЗАРПЛАТА=ОКАЗАНО_УСЛУГ*0.12;

END;

ELSE; BEGIN;

ПРОВ=ОКАЗАНО_УСЛУГ<ГРАНИЦА3;

IF ПРОВ THEN; BEGIN;

ЗАРПЛАТА=ОКАЗАНО_УСЛУГ*0.14;

END;

ELSE; BEGIN;

ПРОВ=ОКАЗАНО_УСЛУГ<=ГРАНИЦА4;

IF ПРОВ THEN; BEGIN;

ЗАРПЛАТА=НОРМА*0.18;

РАЗНИЦА=(ОКАЗАНО_УСЛУГ-НОРМА)*0.22;

ЗАРПЛАТА=ЗАРПЛАТА+РАЗНИЦА;

END;

ELSE; BEGIN;

ПРОВ=ОКАЗАНО_УСЛУГ<=ГРАНИЦА5;

IF ПРОВ THEN; BEGIN;

ЗАРПЛАТА=НОРМА*0.18;

РАЗНИЦА=(ОКАЗАНО_УСЛУГ-НОРМА)*0.23;

ЗАРПЛАТА=ЗАРПЛАТА+РАЗНИЦА;

END;

ELSE; BEGIN;

ЗАРПЛАТА=НОРМА*0.18;

РАЗНИЦА=(ОКАЗАНО_УСЛУГ-НОРМА)*0.24;

ЗАРПЛАТА=ЗАРПЛАТА+РАЗНИЦА;

END;

END;

END;

END;

END;

{ ОБХОД МЕСЯЦА ПО ДНЯМ }

;;ЗАРПЛАТА = 0;

;;Ставка1= Переменная(Докт,Дата_нач,Ставка1);

;;Ставка2= Переменная(Докт,Дата_нач,Ставка2);

;;Ставка3= Переменная(Докт,Дата_нач,Ставка3);

;;Ставка4= Переменная(Докт,Дата_нач,Ставка4);

{ Подготовка цикла: }

;;ТЕКУЩИЙ_ДЕНЬ = ИЗМЕНЕНИЕДАТЫ(ДАТА_НАЧ,1,0); // С версии 12.2: ТЕКУЩИЙ_ДЕНЬ = ДАТА(ДАТА_НАЧ);

;;ПЕРИОД_ОКОНЧЕН = СРАВНИТЬДАТЫ(ТЕКУЩИЙ_ДЕНЬ,ДАТА_ОКОНЧ);

;;ЦИКЛ_РАБОТАЕТ = ПЕРИОД_ОКОНЧЕН <= 0;

while ЦИКЛ_РАБОТАЕТ do;

begin;

{ Бизнес-логика цикла: }

;;СУММА = 0;

;;ЧАСОВ = РАБЧАС(ДОКТ,ТЕКУЩИЙ_ДЕНЬ,ТЕКУЩИЙ_ДЕНЬ,"","","",-1,0);

СМЕНА_больше9_ЧАСОВ = ЧАСОВ > 9;

if СМЕНА_больше9_ЧАСОВ then;

begin;

СУММА = Ставка4;

end;

else;

begin;

СМЕНА_больше8_ЧАСОВ = ЧАСОВ > 8;

if СМЕНА_больше8_ЧАСОВ then;

begin;

СУММА = Ставка3;

end;

else;

begin;

;;СМЕНА_больше7_ЧАСОВ = ЧАСОВ > 7;

if СМЕНА_больше7_ЧАСОВ then;

begin;

СУММА = Ставка2;

end;

else;

begin;

СМЕНА_больше0_ЧАСОВ = ЧАСОВ > 0;

if СМЕНА_больше0_ЧАСОВ then;

begin;

СУММА = Ставка1;

end;

end;

end;

end;

;;ЗАРПЛАТА = ЗАРПЛАТА + СУММА;

{ Коррекция цикла: }

;;ТЕКУЩИЙ_ДЕНЬ = ИЗМЕНЕНИЕДАТЫ(ТЕКУЩИЙ_ДЕНЬ,1,1);

;;ПЕРИОД_ОКОНЧЕН = СРАВНИТЬДАТЫ(ТЕКУЩИЙ_ДЕНЬ,ДАТА_ОКОНЧ);

;;ЦИКЛ_РАБОТАЕТ = ПЕРИОД_ОКОНЧЕН <= 0;

end;

ЗАРПЛАТА=ОКРУГЛ(ЗАРПЛАТА,0);

Была ли статья полезна?