Осуществляет условное включение исходного кода на этапе компиляции.
Синтаксис
#IF nExpression1 | lExpression1 Commands [#ELIF nExpression2 | #ELIF lExpression2 Commands ... #ELIF nExpressionN | #ELIF lExpressionN Commands] [#ELSE Commands] #ENDIF
Параметры
#IF nExpression1 | lExpression1Аргумент nExpression1 задает числовое выражение, которое должно вычисляться.
Commands
#ELIF nExpression2 | #ELIF lExpression2 Commands ... #ELIF nExpressionN | #ELIFlExpressionN CommandsЕсли значение выражения nExpression1 равно 0 или значение lExpression1ѕ "ложь" (.F.), вычисляются директивы #ELIF. Сначала вычисляется первое выражение #ELIF, nExpression2 или lExpression2. Если значение nExpression2 отлично от нуля или значение lExpression2 есть "истина" (.T.), команды, следующие за #ELIF, будут включены в компилируемый код. Осуществляется выход из структуры #IF ... #ENDIF, и компиляция продолжается с первой программной строки, следующей за директивой #ENDIF.
#ELSE CommandsЕсли директив #ELIF нет или они есть, но все дали значения 0 или "ложь" (.F.), то наличие директивы #ELSE определяет, будут ли включены в компилируемый код другие команды.
#ENDIFУказывает конец оператора #IF.
Комментарии
Благодаря применению структуры #IF ... #ENDIF повышается читаемость исходного кода, сокращается размер откомпилированной программы, а в некоторых случаях повышается производительность.
При компиляции структуры #IF ... #ENDIF производится вычисление содержащихся в ней последовательных логических или числовых выражений; результаты вычислений определяют, какую группу команд Visual FoxPro следует или не следует включать в компилируемый код.
Пример
* В следующем примере структура #IF ... #ENDIF определяет, какая версия * Visual FoxPro выполняет компиляцию, а затем выдает соответствующее * сообщение. #IF 'WINDOWS' $ UPPER(VERSION( )) ? 'This was compiled under Visual FoxPro' #ELIF 'MAC' $ UPPER(VERSION( )) ? 'This was compiled under FoxPro for Macintosh' #ELIF 'UNIX' $ UPPER(VERSION( )) ? 'This was compiled under FoxPro for UNIX' #ELSE ? 'This was compiled under FoxPro for MS-DOS' #ENDIF