Макросы Datamine. Ресурсный геолог - страница 23

Шрифт
Интервал


Переменные

Итак, мы с вами написали первый простой макрос (пока «не вы, а мы», но лиха беда начало), автоматизирующий процесс создания рудной выборки. При этом мы условились, что:

– имя файла рудных каркасов – ore_tr/pt;

– имя файла скважин – holes;

– имя поля номера рудного тела – BODY;

– имя поля урезаемых содержаний – AU;

– средняя длина проб, к которой требуется привести рудную выборку – 1 м;

– оптимальная сеть декластеризации – данные расположены по регулярной сети;

– уровень ураганных содержаний одинаков для всех рудных тел – 100 г/т;

– имя файла обработанной рудной выборки holes_ore_cut.

Несложно догадаться, что это не всегда так. Каркасы могут называться по-другому, файл скважин – тоже. Поле содержания – не обязательно AU, а зонального контроля – не обязательно BODY. Ну и далее по списку. Что же делать? Вариантов минимум три:

– Каждый раз перед использованием макроса подгонять имена файлов и полей под то, что написано в макросе.

– Каждый раз перед использованием макроса править весь текст макроса в соответствии с вашими входными условиями.

– Модифицировать макрос так, чтобы правки были понятными, минимальными и простыми.

Первые два варианта – путь сложный и тупиковый. Мы хотели написать «как несложно догадаться…», но поняли, что пока догадаться сложно. Поэтому просто поверьте: первые два варианта – очень плохая идея. И мы, как говорится, пойдем другим путем – то есть третьим из перечисленных.

Для этого третьего пути нам понадобится некая сущность, которой мы можем оперировать либо как числом, либо как строкой – то есть либо выполнять арифметические действия, либо складывать ее с другими строками. Но при этом в то время, когда мы пишем макрос, мы не знаем, какое именно значение принимает эта сущность. То есть нам нужна некая виртуальная «коробка», в которой можно хранить все, что угодно, и при этом заставлять наш макрос производить с этой коробкой любые операции, как будто он имеет дело с тем содержимым, которое в этой коробке находится в момент выполнения макроса. И вот эту коробку в программировании принято называть «переменная». В принципе, переменная в программировании очень похожа на переменную в школьном курсе математики – то есть это некий «икс», который можно складывать, вычитать, умножать и так далее, как будто вы работаете с числом (но при этих операциях мы понятия не имеем, какое там число). Только в программировании в эту коробку можно складывать не только числа: например, применительно к языку макросов – имена файлов или полей (понятно, что в этом случае перечень операций, доступных для переменной, несколько другой).