B) Ошибкой
C) Вылетом Datamine
D) Процессы выполнятся, но выходной файл после команды EXTRA не создастся
E) Зависанием Datamine до принудительного завершения пользователем работы макроса
Переменные
Итак, мы с вами написали первый простой макрос (пока «не вы, а мы», но лиха беда начало), автоматизирующий процесс создания рудной выборки. При этом мы условились, что:
– имя файла рудных каркасов – ore_tr/pt;
– имя файла скважин – holes;
– имя поля номера рудного тела – BODY;
– имя поля урезаемых содержаний – AU;
– средняя длина проб, к которой требуется привести рудную выборку – 1 м;
– оптимальная сеть декластеризации – данные расположены по регулярной сети;
– уровень ураганных содержаний одинаков для всех рудных тел – 100 г/т;
– имя файла обработанной рудной выборки holes_ore_cut.
Несложно догадаться, что это не всегда так. Каркасы могут называться по-другому, файл скважин – тоже. Поле содержания – не обязательно AU, а зонального контроля – не обязательно BODY. Ну и далее по списку. Что же делать? Вариантов минимум три:
– Каждый раз перед использованием макроса подгонять имена файлов и полей под то, что написано в макросе.
– Каждый раз перед использованием макроса править весь текст макроса в соответствии с вашими входными условиями.
– Модифицировать макрос так, чтобы правки были понятными, минимальными и простыми.
Первые два варианта – путь сложный и тупиковый. Мы хотели написать «как несложно догадаться…», но поняли, что пока догадаться сложно. Поэтому просто поверьте: первые два варианта – очень плохая идея. И мы, как говорится, пойдем другим путем – то есть третьим из перечисленных.
Для этого третьего пути нам понадобится некая сущность, которой мы можем оперировать либо как числом, либо как строкой – то есть либо выполнять арифметические действия, либо складывать ее с другими строками. Но при этом в то время, когда мы пишем макрос, мы не знаем, какое именно значение принимает эта сущность. То есть нам нужна некая виртуальная «коробка», в которой можно хранить все, что угодно, и при этом заставлять наш макрос производить с этой коробкой любые операции, как будто он имеет дело с тем содержимым, которое в этой коробке находится в момент выполнения макроса. И вот эту коробку в программировании принято называть «переменная». В принципе, переменная в программировании очень похожа на переменную в школьном курсе математики – то есть это некий «икс», который можно складывать, вычитать, умножать и так далее, как будто вы работаете с числом (но при этих операциях мы понятия не имеем, какое там число). Только в программировании в эту коробку можно складывать не только числа: например, применительно к языку макросов – имена файлов или полей (понятно, что в этом случае перечень операций, доступных для переменной, несколько другой).
Итого: переменную в макросе можно определить как контейнер («коробку»), содержимое которого неизвестно в момент написания макроса и определяется по ходу выполнения макроса. Переменная должна иметь имя, которое может состоять из одного или нескольких символов. Над переменными