Как записать скорость глаголов UniVerse, таких как SELECT и SORT?
Я помню, как где-то увидел статью, в которой описан умный способ обернуть глагол UniVerse, например SELECT
в пользовательской базовой программе, чтобы записать некоторые показатели, например, прошедшее время. Простой ответ - поделиться этой ссылкой, если вы знакомы с этой статьей.
В противном случае, я ценю любой пример кода, которым вы могли бы поделиться, который иллюстрирует правильный способ создания такой оболочки.
Я хотел бы записать некоторые данные в файл и записать такие вещи, как пользователь, файл, количество времени, использованное для выбора, и любую фразу, которая была включена в SELECT
заявление. Я планирую отправить эти данные в другую систему для анализа и составления отчетов, чтобы мы могли лучше представить, насколько хорошо работают различные варианты выбора.
Спасибо за ваше время, и я с нетерпением жду обсуждения решения с вами!
ОБНОВИТЬ!
Увидев ответ Вана, я должен уточнить, что меня больше всего интересует запись времени обработки заявления и сбор некоторой другой информации исключительно для целей регистрации. Моя цель - сделать его прозрачным, чтобы я не сломал все или что-либо.
Моя логика выглядит примерно так:
- Оператор запускается, и программа-оболочка записывает текущее время.
- Простое ванильное предложение исполняется фантиком.
- По завершении выбора оболочка снова записывает текущее время и записывает разницу с начальным временем.
- Пока мы здесь, используйте различные
SYSTEM(x)
и / или@
значения для ввода имени пользователя и, возможно, количества записей.- Используйте некоторую логику, чтобы разобрать утверждение и записать другие интересные моменты.
- Запишите интересные значения в один лог-файл с инкрементным ID.
- Пользователь или процесс не замечают и, как обычно, получают список выбора (как-то... вставьте сюда магию)
- Какой-то другой разъединенный процесс направляет каждую запись в систему отчетов регулярными партиями.
Это имеет больше смысла?
2 ответа
Я предупреждаю об этом, говоря, что буду бояться попробовать что-либо подобное в производственной системе по 3 причинам.
- SELECT используется во многих местах, и это может быстро стать проблемой ввода-вывода, если у вас много фантомов и пользователей, одновременно запускающих что-то, что приводит к...
- В зависимости от количества файлов, которые ваша система найдет способ осмысленной организации данных таким образом, чтобы не возникало проблем с блокировкой или перезаписью, было бы большой проблемой.
- В SELECT используется стиль выбора и стиль SQL, и они не ведут себя одинаково.
- Это хакерство, как и все.
- Подсчет для слабаков.
Тем не менее, вы можете в значительной степени заменить любое слово в VOC. Вы можете скопировать запись VOC для SELECT в SELECT.BASE, а затем заменить ее собственным каталогизированным SELECT, где вы перехватываете параметры командной строки как таковые.
SENTENCE = @COMMAND
FILE.NAME = FIELD(SENTENCE,' ',2)
CONDITIONS = FIELD(SENTENCE,' ',3,999)
NEW.STMT = "SELECT.BASE ":FILE.NAME:" ":CONDITIONS
Затем вы будете выполнять любую обработку до или после EXECUTE NEW.STMT.
Я понятия не имею, что это сломает, поэтому попробуйте на свой страх и риск.
Пример программы, с которой я столкнулся некоторое время назад, был в одном из репозиториев Rocket Software GitHub, многозначной лаборатории. Программа там называется VERBTIMER
,
Однако в этой программе также обнаружена ошибка, обнаруженная мною в ходе собственных экспериментов, когда любой предыдущий активный список выбора игнорируется.
Я открыл проблему на GitHub и обновлю этот пост, если решение будет найдено.