"Анри Бертьен. Стандартный набор операторов языка REXX (для OS/2) " - читать интересную книгу автора Else exit;
Если Вы решитесь записать предложение ELSE на той же строке, что и последнее предложение <оператора 1> (после THEN), то после <оператора 1> не забудьте поставить точку с запятой. Например: If answer='ДА' then say "O'k!"; Else say 'Ну и не надо...'; В качестве <оператора> в IF-конструкции может быть любая более сложная конструкция, например - DO-группа, SELECT-группа; или - какой-нибудь из более простых операторов, включая сам оператор IF. При этом ELSE всегда относится к ближайшему предшествующему IF, что очевидно для интерпретатора REXX, но не всегда - для читающего программу человека. Поэтому, чтобы лишний раз себя не путать, в случаях, когда Вы пишите нечто вроде If <условие 1> then if <условие 2> then ... else ... следует либо абсолютно всем IF записать парные ELSE, либо использовать операторные скобки в виде простых DO-групп. Например: If answer='ДА' then if name='Надя' then say "O'k, Надюша..."; Else say 'Ну и не надо...'; Или, ещё однозначнее: If answer='ДА' then do; If name='Надя' then say "O'k, Надюша..."; End Else say 'Ну и не надо...'; Эти нехитрые приёмы неплохо спасают, когда Вы пытаетесь понять логику нескольких вложенных IF, перемешанных с другими конструкциями языка. Поскольку в REXX 'точка с запятой' перед и после THEN необязательны (что наверняка оценят люди, привыкшие к иным языкам - IF-конструкции в разных языках имеют противоречивые требования к оформлению), обратите внимание на нижеследующее: 'Точка с запятой' после THEN или ELSE не эквивалентна пустому оператору (как это было бы в 'PL/1' или 'C') - в REXX она может предшествовать <оператору>. Для обозначения 'пустого оператора' следует использовать оператор NOP. Внутри выражения, определяющего <условие>, нельзя использовать переменную с именем THEN, так как ключевое слово THEN воспринимается интерпретатором, как 'конец <условия>'. INTERPRET |
|
|