Начну сразу с рассмотрения TestCase.
Допустим у Вас есть процесс который обращается к SAS таблице, которая периодически обновляется (допустим неким ETL процессом).
Если в момент обновления таблицы вы попробуете к ней обратиться, то схватите ошибку «невозможности блокировки таблицы»:
Как можно обойти эту пролему?
Один из возможных вариантов — можно в цикле проверять залочена ли таблица и если да, через какой-то промежуток времени опять делать проверку и так до дех пор пока не истечет ожидаемое время либо до тех пор пока таблицу не отпустит сторонний процесс и вы тогда ее спокойно заблокируете.
Привожу макрос, проверяющий в цикле осободили ли таблицу и если да, то блокирует ее.
При этом рабочий лог может выглядеть следующим образом:
Из лога видно, что макрос висел почти 20 секунд и после этого таблица была отпущена и тутже заблокирована нашим процессом. После мы уже делаем то что хотим ( в данном случае просто переливаем данные).
Да, и не забывайте разблокировать талицу когда закончите с ней работать.
P.S. оригинал макроса можно посмотреть здесь.