Как записать скорость глаголов UniVerse, таких как SELECT и SORT?

Я помню, как где-то увидел статью, в которой описан умный способ обернуть глагол UniVerse, например SELECTв пользовательской базовой программе, чтобы записать некоторые показатели, например, прошедшее время. Простой ответ - поделиться этой ссылкой, если вы знакомы с этой статьей.

В противном случае, я ценю любой пример кода, которым вы могли бы поделиться, который иллюстрирует правильный способ создания такой оболочки.

Я хотел бы записать некоторые данные в файл и записать такие вещи, как пользователь, файл, количество времени, использованное для выбора, и любую фразу, которая была включена в SELECT заявление. Я планирую отправить эти данные в другую систему для анализа и составления отчетов, чтобы мы могли лучше представить, насколько хорошо работают различные варианты выбора.

Спасибо за ваше время, и я с нетерпением жду обсуждения решения с вами!

ОБНОВИТЬ!

Увидев ответ Вана, я должен уточнить, что меня больше всего интересует запись времени обработки заявления и сбор некоторой другой информации исключительно для целей регистрации. Моя цель - сделать его прозрачным, чтобы я не сломал все или что-либо.

Моя логика выглядит примерно так:

  • Оператор запускается, и программа-оболочка записывает текущее время.
  • Простое ванильное предложение исполняется фантиком.
  • По завершении выбора оболочка снова записывает текущее время и записывает разницу с начальным временем.
  • Пока мы здесь, используйте различные SYSTEM(x) и / или @ значения для ввода имени пользователя и, возможно, количества записей.
  • Используйте некоторую логику, чтобы разобрать утверждение и записать другие интересные моменты.
  • Запишите интересные значения в один лог-файл с инкрементным ID.
  • Пользователь или процесс не замечают и, как обычно, получают список выбора (как-то... вставьте сюда магию)
  • Какой-то другой разъединенный процесс направляет каждую запись в систему отчетов регулярными партиями.

Это имеет больше смысла?

2 ответа

Решение

Я предупреждаю об этом, говоря, что буду бояться попробовать что-либо подобное в производственной системе по 3 причинам.

  1. SELECT используется во многих местах, и это может быстро стать проблемой ввода-вывода, если у вас много фантомов и пользователей, одновременно запускающих что-то, что приводит к...
  2. В зависимости от количества файлов, которые ваша система найдет способ осмысленной организации данных таким образом, чтобы не возникало проблем с блокировкой или перезаписью, было бы большой проблемой.
  3. В SELECT используется стиль выбора и стиль SQL, и они не ведут себя одинаково.
  4. Это хакерство, как и все.
  5. Подсчет для слабаков.

Тем не менее, вы можете в значительной степени заменить любое слово в 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 и обновлю этот пост, если решение будет найдено.

Другие вопросы по тегам