Извлечение информации из файловой переменной в d3 pick basic

#pick

#выберите

Вопрос:

У меня есть файловая переменная в d3 pick basic, и я пытаюсь выяснить, какому файлу она соответствует.

Я попробовал очевидную вещь, которая должна была сказать:

 print f *suppose the file variable's name is f in this case
  

но это не сработало, потому что:

 SELECTION: 58[B34] in program "FILEPRINTER", Line 7:  File variable used 
where string expression expected.
  

Я также пробовал такие вещи, как:

 list f *didn't compile
execute list dict f *same error
execute list f *same error
  

но это также не сработало.

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

Ответ №1:

Эта переменная указателя файла называется «файловым дескриптором». Вы не можете получить из нее никакой информации.

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

Если это не действующая система конечного пользователя, вы также можете изменить запись элемента с помощью очень уникального текста, например «ЧТО!ФАЙЛ! ЭТО?». Затем вы можете выполнить команду поисковой системы для поиска по всей учетной записи (или системе), чтобы найти этот текст. Смотрите Документы для правильного использования этой команды.

Это, вероятно, лучший вариант… Введите следующее:

 IF @USER = "CRISZ" THEN ; * substitute your user ID
  READU FOO FROM F,"BLAH" ELSE
    DEBUG
    RELEASE F,"BLAH"
  END
END
  

Этот код остановится только для одного пользователя — для всех остальных он будет работать в обычном режиме. Когда это остановится, используйте команду LIST-LOCKS, чтобы увидеть, какой файл имеет блокировку чтения для элемента «BLAH». Это ваш файл! Не забудьте удалить и перекомпилировать код. Обратите внимание, что перекомпиляция кода, когда пользователи активно его используют, приводит к прерываниям. Лучше всего делать такие вещи в нерабочее время или в тестовой системе.

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

Если предложение здесь действительно поможет, пожалуйста, отметьте это как ответ. 🙂

Комментарии:

1. К сожалению, единственная полностью функциональная версия программы, которая у нас есть, находится в рабочей среде, поэтому блокировка таблицы не сработает.

2. Это не блокирует всю таблицу. Он просто блокирует единственную запись (которая не существует) для этого файла. Никто не пострадает (как если бы я предложил вам заблокировать всех ваших пользователей. :)). Просто list-locks , посмотрите имя файла, затем нажмите G, чтобы перейти из строки отладки. Это будет продолжаться и заканчиваться. Тогда у вас есть имя файла, и вы можете удалить тестовый код.

3. Если на ваш вопрос получен ответ, пожалуйста, отметьте этот ответ. Спасибо.

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

5. Понятно. Спасибо, что отметили это как ответ. Я могу гарантировать, что это сработает, поскольку это распространенный метод поиска проблем, поэтому, если вам нужно выполнить некоторую отладку в живой системе или если вам нужно проверить таблицу блокировок, проверьте здесь . С нетерпением жду новых вопросов.