RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> > > Пытаюсь разобраться с региной под OS/2 сама она запускается, а вот rexxutil от нее загрузить не могу. Постоянно грузиться штатный. Как сделать так что бы грузилась её dll'ка > > > > Наверное, убрать штатную с путей (LIBPATH) или прописать путь к диреЮ в которой лежит региновская в set BEGINLIBPATH=... Если надо, чтобы обе юзались одновременно, есть опция set LIBPATHSTRICT=T. Кроме того, не уверен что сам REXX умееет две DLL с одним и тем же именем. > > Эксперименты показали следующее: > * Regina ставится простым копированием всех exe и dll файлов из архива в папку, прописанную в LIBPATH. > * При этом она не заменяет стандартный обработчик REXXSAA. > * Вызвать Regin’у можно двумя способами: > ** Напрямую указав её при запуске скрипта. «regina “имя скрипта”». При это regina сама автоматчики загружает свой вариант RexxUtil. > ** Программно. Как не знаю, но RexxDW это как-то делает. > > В OS/2 для работы с RexxDW почему-то не достаточно загрузить его dll’шки – программа просто не запускается без объяснения причины. Необходимо запускать путем прямого указание его имени при запуске крипта. Для чего я ввел у себя в OS/2 новое расширение “*.rexx”, при котором имя RexxDW подставляется автоматически. При этом не создается текстовое окно, и выводы оператора “say” не видны. Весь необходимый вывод необходимо сразу организовывать в графические формы. Что не очень удобно, особенно при учете того, что сообщения об ошибках так же не видны. В Windows’е при прямом вызове открывается дополнительное текстовое окно, в которые происходит вывод оператора “say” и сообщений об ошибках, а при вызове скрипта через RexxDW, происходит все так же как в OS/2. > Может, кто подскажет, почему RexxDW в OS/2 требует обязательного своего вызова? > > Теперь про RexxDB. > > Как я писал в статье, при запуске гипервизора «Сервер данных», возникает ошибка, в результате программа запускается, но не находит таблицы. Что неприятно… > Решил создать облегченную версию гипервизора без графики, что бы была возможность его запуска в OS/2. Задача не вызвала особых проблем. Теперь в архив входит версия гипервизора «СерверДанныхDOS», которая похудела в два раза и при этом без проблем работает как OS/2 так и Windows. Правда редактировать данные, конечно же, нельзя, но это далеко не всегда и нужно. > Работа над упрощенной версией гипервизора высветила некоторые странности в работе Regin’ы в оси, за которые я зацепился и начал копать. Удалось определить точного виновника в ошибке из-за которой полная версия не находит таблицы с данными. > Оказалось что функция «SysFileTree» из RexxUtil от Regin’ы в OS/2 работает не корректно и совершенно не видит каталоги. Написал текстовый скрипт (https://yadi.sk/d/zSQAq0rUi8FaA), вот его текст: > > /**/ > call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs' > call SysLoadFuncs > > say 'RexxUtil version 'sysutilversion() > !global.!DirDB='C:BaseData' > call SysFileTree !global.!DirDB, DescFile, 'O' > say 'DescFile.0='DescFile.0 > do n=1 to DescFile.0 > say DescFile.n > end n > !global.!DirDB='C:BaseData' > call SysFileTree !global.!DirDB, DescFile, 'DO' > say 'DescFile.0='DescFile.0 > !global.!DirDB='C:BaseData/' > call SysFileTree !global.!DirDB, DescFile, 'DO' > say 'DescFile.0='DescFile.0 > Parse Source os . prog > say 'OS: 'os > parse Version ver > say ver > > return > > Вот что возвращает скрипт при запуске в разных интерпретаторах: > > Рис.1. Запуск тестового скрипта в OS/2 в REXXSAA и Regina 3.9 (https://yadi.sk/i/i7YB90Pgi8FWa) > Рис.2. Запуск тестового скрипта в Windows в Regina 3.9 (https://yadi.sk/i/f6kyF6e-i8FX7) > > Как видно функция «SysFileTree» в Regin’е 3.9 ведет себя по разному в OS/2 и Windows. Решил протестировать более ранние версии Regina в OS/2. вот результат. > > Рис.3. Запуск тестового скрипта в OS/2 в Regina 3.7 (https://yadi.sk/i/mmW43FkVi8FXP) > Рис.4. Запуск тестового скрипта в OS/2 в Regina 3.6 (https://yadi.sk/i/p_-jjfOQi8FXj) > Рис.5. Запуск тестового скрипта в OS/2 в Regina 3.5 (https://yadi.sk/i/6n8Vrikui8FYL) > > Видно, что смена версий Regin’ы не влияет на результат работы. При этом версия RexxUtil не меняется. Из чего можно сделать вывод: проблема на уровне RexxUtil от Regin’ы, и который давно не менялся… > > Теперь зная причину проблемы, обошел её с использование команды «DIR». > На текущий момент вся система без проблем работает в OS/2. Таким образом, удалось полностью решать поставленную задачу. И одновременно с этим написать по-настоящему межплатформенную систему. > Я программирую на ноутбуке Dell с двухъядерным процессором 2.16 Мгц, на котором стоит Windows 8.1 (лицензия), дробить диск я не решился и поставил OS/2 в Virtual Box. Тесты показали, что в Windows’е скорость возврата всех данных из таблицы «Pump» за 2014 год (401 102 строк) составляет, в среднем 18 сек (0,00004 на строчку). Тогда как в OS/2 время обработки того же запроса 13,5 сек (0,00003 на строчку). При этом в OS/2 разброс времени выполнения при многократных однотипных запросах минимальные, в пределах 1 сек. А в Windows’е подобный разброс составляет до 6 секунд. Отмечу общее ощущение того что все файловые операции в OS/2 проходят быстрее. Возможно, этим объясняется меньшее время выполнения запроса. На днях проведу тесты в OS/2 на реальной машине, но там у меня вообще нет Windows так, что полноценного сравнения снова не получиться. > На сайте «полузазеркалье.рф» выложил обновленный архив (https://yadi.sk/d/BuB1gYHni8FR5), и в свете обновленной ситуации подправил статью. > > Ложки дегтя. > > К сожалению, в OS/2 остаются проблемы с RexxDW. На текущий момент мне известно три слабых места: > 1. Новая версия RexxDW 2.1 использует и новую версию библиотеки «dwindows 3.0», которая умеет работать только с UTF8. Внутри программы я это обошел это, введя функции по конверсии текста туда и обратно, и в Windows проблем нет, а вот в OS/2 портится название окна в списке открытых окон в eCenter’е (рис.6, 7). Как видно из примеров, библиотека «dwindows 3.0» не корректно работает в OS/2 (eCS). Здесь я ни чего сделать не могу. > > Рис.6. Имя окна указано в кодировке UTF8. (https://yadi.sk/i/WkMZc7bUi8FYc) > Рис.7. Имя окна указано в кодировке Dos866. (https://yadi.sk/i/UKWC_Vv3i8FZ3) > > 2. Проблема со шрифтами. Заголовки в форме «NOTEBOOK» выводятся искаженными, как показано на рисунке 8. Неприятно, но не смертельно. > > Рис.8. Иллюстрация проблемы со шрифтами. (https://yadi.sk/i/D3aNIwd1i8FZZ) > > 3. В форме «Selector» отсутствуют некоторые иконки. Что так же не смертельно и неприятно. Рисунок 9. > > Рис.9. Отсутствие иконок в форме «Selector». (https://yadi.sk/i/q4F_agX9i8FZw) > > Данные текст переведу через «Google Переводчик» и отправлю письмом разработчику RexxDW. Надеюсь, он исправит найденные ошибки. Если у кого есть возможность так или иначе посодействовать в их скорейшем исправлении, прошу этими возможностями воспользоваться. >
__, _, __, _,_ _, _
|_ / \ |_) | | |\/|
| \ / | \ | | | |
~ ~ ~ ~ `~' ~ ~
Programmed by
Dmitri Maximovich
,
Dmitry I. Platonoff
,
Eugen Kuleshov
.
25.09.99 (c) 1999,
RU/2
. All rights reserved.
Rewritten by
Dmitry Ban
. All rights ignored.