SAS - разрыв макроса% DO

Я знаю, что существует оператор LEAVE для петель DO шага данных для завершения текущего цикла.Однако я не могу найти документацию для соответствующей макрокоманды.Я пробовал ---- +: = 0 =: + ----, но это не определено.Разве в SAS нет оператора break для циклов макросов?Если нет, есть ли другие варианты помимо использования ---- +: = 1 =: + ---- или a ---- +: = 2 =: + ---- ?
4 голоса | спросил Lorem Ipsum 20 +03002017-10-20T18:48:58+03:00312017bEurope/MoscowFri, 20 Oct 2017 18:48:58 +0300 2017, 18:48:58

3 ответа


0
Нет, к сожалению, в языке макросов нет эквивалента ---- +: = 0 =: + ---- (по состоянию на v9.4).Вы можете увидеть полный список операторов макросов в документации в словаре языка макросов .В качестве обходного пути вам придется вручную запускать условие выхода для вашего цикла.
ответил Robert Penridge 20 +03002017-10-20T19:43:40+03:00312017bEurope/MoscowFri, 20 Oct 2017 19:43:40 +0300 2017, 19:43:40
0
Если вы хотите полностью выйти из макроса, вы можете использовать ---- +: = 0 =: + ---- (если вы хотите вызвать ошибку) или ---- +: = 1 =: +---- (если нет).Это не поможет, если вы просто хотите выйти из цикла и продолжить работу с остальным макросом, но вы можете написать цикл как отдельный макрос и вызвать его внутри более крупного макроса.Другой вариант - использовать ---- +: = 2 =: + ---- или ---- +: = 3 =: + ---- и проверить условие выхода в начале каждого цикла с дополнительными---- +: = 4 =: + ---- блоки на основе одного и того же условия в цикле, если вы хотите пропустить оставшуюся часть итерации после того, как условие перерыва выполнено на полпути.
ответил user667489 20 +03002017-10-20T20:08:30+03:00312017bEurope/MoscowFri, 20 Oct 2017 20:08:30 +0300 2017, 20:08:30
0
Я обычно использую% GOTO для выхода из макро цикла, если оператор% RETURN не вариант.И иногда я также использую GOTO для выхода из цикла шага данных, потому что: наиболее эффективный для программирования способ программирования зависит от возможности оставить не только текущий цикл, но и цикл, окружающий его.До тех пор, пока вы не сможете указать уровень цикла, из которого вы хотите выйти, нет случайного обхода GOTO, если вы хотите программировать с максимальной эффективностью и ясностью.И это верно для SAS, C, C ++ и любого другого языка, который использует конструкции цикла.Без GOTO вам придется делать глупости, например, повторять код и проверять одно и то же условие более одного раза.
ответил Søren Lassen 23 +03002017-10-23T13:21:51+03:00312017bEurope/MoscowMon, 23 Oct 2017 13:21:51 +0300 2017, 13:21:51

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132