REXX
Практически каждый рабочий день я получаю файл c именем CUR_RATE.TXT, в котором содержатся курсы валют, установленные НацБанком на следующий рабочий день. Его необходимо переименовать в CUR_ddmm.txt, где ddmm - дата, на которую установлены курсы, и разложить по соответствующим каталогам. Мне не кажется занимательным осуществлять описанную процедуру вручную изо дня в день, поэтому лучше ее автоматизировать. Досовским батником такую задачу не решишь, хотя бы потому, что дату надо брать из файла. Ниже приведена строчка, ее содержащая:
"С 23.03.98 НАЦИОНАЛЬНЫМ БАНКОМ УСТАНОВЛЕНЫ"
Можно, конечно, взяться за C или Pascal, но не слишком ли круто ради переименования файла (а рутинных задач, подобных этой, много) писать экзешник?
В такой ситуации на помощь приходит REXX. Он представляет собой встроенный в операционную систему язык, то есть ОС выступает в качестве интерпретатора, впрочем, исходный файл можно и скомпилировать. Существует множество расширений в виде DLL, обеспечивающих, например, работу с COM-портами, сокетами TCP/IP, Visual REXX и т.д. Для того, чтобы Warp выполнял *.CMD как программу на REXX, достаточно начать пакетный файл с комментария: "/*Какой-нибудь текст*/".
Для примера (см. врезку) привожу два варианта программы, переименовывающей CUR_RATE.TXT:
/*Example REXX file to rename CUR_RATE.TXT*/ filename='cur_rate.txt' do while lines(filename) sourceline=linein(filename) parse value sourceline with 'С 'dd'.'mm'.'yy' НАЦИОНАЛЬНЫМ БАНКОМ УСТАНОВЛЕНЫ' if dd <> '' then do result_of_close=stream('cur_rate.txt',c,'close') '@rename ' filename 'cur_' || dd || mm ||'.txt' say 'All done, so Bye! Rexx is cool!' exit end end
/*Another example REXX file to rename CUR_RATE.TXT*/ do while lines(cur_rate.txt) <> 0 sourceline=LineIn('CUR_RATE.TXT') do yy=98 to 99 do dd=1 to 31 if dd<10 then dd=0||dd do mm=1 to 12 if mm<10 then mm=0||mm if pos(dd||'.'||mm||'.'||yy , sourceline) <> 0 then do result_of_close=stream('cur_rate.txt',c,'close') rename cur_rate.txt cur_ || dd || mm ||.txt exit end end end end end exit
Хочу заметить: в програмировании я - полный профан, я ничего не знаю об алгоритмах, "Пузырьковом методе сортировки", разнице работы со стеком C и Pascal и тому подобных вещах. Вероятно, серьезный программер напишет лаконичнее или найдет ошибки, но очевидно, что REXX прост и удобен.
Коммуникации
Пожалуй, работа с последовательными портами - одно из сильнейших мест Warp. Не случайно большинство BBS работают под OS/2. Несмотря на наличие множества "родных" коммуникационных и факсовых программ, в полуоси прекрасно работают программы DOS. Однако некоторые приходится заставлять. К ним относится проклятье банковских автоматизаторов PROCARRY. Эта бестолковая программка заработала только после установки знаменитого среди полуосевиков пакета SIO и разрешения прямого доступа к портам. Кстати, SIO является прекрасной заменой стандартным драйверам COM.SYS, VCOM.SYS и обладает множеством полезных функций. В частности, он обеспечивает интерфейс FOSSIL, благодаря которому использующие его досовские программы потребляют минимум системных ресурсов.
Полуось и Нетваря
Так же, как OS/2 - прекрасная настольная операционная система, верно и то, что Netware - непревзойденный файловый сервер. Нетребовательность, устойчивость, простота администрирования и дружелюбность к клиенту, при высоком уровне безопасности (сертифицирована на соответствие C2!) выгодно отличают ее от NT. Сосуществование этих операционных систем в качестве клиента и сервера - безоблачно в отличие от загрузки Win95 :-)
Впрочем, довольно лирики, обратимся к технике. Netware поддерживает пространство имен OS/2, что позволяет располагать на сервере файлы, не опасаясь за длинные имена и расширенные атрибуты. Также удобно управлять из Warp сетевыми очередями. Но самое главное для администратора - это работоспособность Netadmin и Nwadmin. Для этого необходима полноценная поддержка сетевого сервиса в DOS- и Win-OS/2-сессиях и, в частности, NDS. Клиентская часть V2.11, поставляемая с Warp, обеспечивает доступ к службе каталогов Netware только в сессии "DOS с диска A:" (так называемый VLMBOOT), но V2.12, входящая в Netware 4.11, решает все проблемы. В отличие от Win95, которая, при некоторых файловых операциях, умудряется привести "нетварю" в длительное состояние "Utilization:100%", OS/2 ведет себя по отношению к серверу исключительно корректно.
Win-OS/2
Принято говорить, что OS/2 обеспечивает выполнение программ Windows 3.x, но это высказывание не очень информативно. Нетрудно обнаружить, что XARA, VISIO 4 и некоторые другие программы, называющие себя приложениями 95, работают в сессии Win-OS/2. Для того, чтобы понять причину этого, надо иметь некоторое понятие о прикладном программном интерфейсе - Application Program Interface (API).
В DOS программы могут, например, непосредственно в видеопамять записать пару байт или по секторам считать файл. Для более соддержательных операций предназначается сервис, предоставляемый COMMAND.COM, воспользоваться которым можно через 21 прерывание (INT21H). Вызвав соответствующую функцию, можно, например, открыть файл или прочитать символ с клавиатуры. "Язык общения" прикладной программы с операционной системой и называется API. Обращение к конкретной функции (вывести окно, выполнить внешнюю программу...) называют системным вызовом.
Понятно, что API Windows 95/NT (его название - Win32) отличается от полуосевого. Win32 поддерживает более 3000 вызовов, часть из них недокументирована или меняется от версии к версии, и это явилось основной причина отказа IBM от интеграции Win32 в Warp. Однако существует подмножество функций Win32 - Win32s. Его функции строго документированы, и это дает возможность встроить поддержку приложений Win32s в OS/2. Программы, о которых шла речь выше, написаны с использованием Win32s, чем и объясняестся их работоспособность в Win-OS/2.
Чтобы выяснить, работает ли программа Win95 в полуоси, надо попробовать ее поставить. Если станет, то будет работать.
Несмотря на то, что 32-разрядные файловая и графическая подсистемы обеспечивают более быструю, чем в родной среде Win3.x, работу многим приложениям Windows, лучше всего производительность операционной системы проявляется в родных приложениях, тем более что такого софта не так мало, как может показаться после знакомства с пиратскими компактами в Ждановичах.
Хорошая новость для геймеров: под OS/2 можно баловаться в Quake 2. Это стало возможным благодаря проекту win32-os2, с которым можно ознакомиться, посетив http://www.os2ss.com/win32-os2/. Группа энтузиастов разрабатывает конвертор приложений Win32 в программы OS/2. На данный момент удалось конвертировать любимого в народе "квака" (не багодаря ему ли все затеяли :)) и мелочь вроде солитера и телнета. Перспективы проекта интересны, однако не стоит лелеять мечты о конвертации мелкософтовского офиса. Перепахав его вдоль и поперек отладчиком, авторы проекта пришли к выводу: MS Office - одна сплошная недокументированная функция. Вообще, насколько этично предоставлять API разработчикам Win95-приложений: "Пишите больше, пишите чаще..." и давать самим себе фору: "Все равно обставим!"? О других приложениях можно сказать одно: сгружайте конвертор и экспериментируйте.
Tips and Tricks,
что можно перевести как "хитрики и подсказки".
Если при загрузке машины, после появления в левом верхнем углу "OS/2", нажать ALT-F1, появится меню, содержащее полезные в критические дни пункты. В частности, имеется возможность загрузить Warp, сбросив драйвер видеокарты в режим VGA. Эта функция незаменима, если ваша точка зрения на тип установленной видеокарты не совпала с точкой зрения полуоси, и вы настояли на своем. Кроме того, можно восстановить одну из трех сохраненных конфигураций или конфигурацию, созданную при установке OS/2. Архивирование Рабочего Стола можно включить на соответсвующей странице блокнота параметров, но не стоит этот флажок держать постоянно включенным по двум причинам: во-первых, запросто можно три раза загрузиться со сбойной конфигурацией, а во-вторых, процесс загрузки длится значительно дольше.
Нажатие ALT-F2 включает режим отображения подробностей загрузки. Эта функция может оказаться полезной, если установка OS/2 виснет на дискетах (ни разу такого не видел).
Несколько слов об изменениях, которые стоит внести в CONFIG.SYS.
ВНИМАНИЕ! Не редактируйте CONFIG.SYS Досовскими редакторами, т.к. большинство из них обрезают строки до 254 (+1 на перевод строки) символов!
В CONFIG.SYS можно добавить следующие строки для WarpCenter:
SET SCUSEPRETTYCLOCK=ON - меняет внешний вид Clock;
SET KILLFEATUREENABLED=ON - очень полезная строчка, т.к. дает возможность "прибивать" процессы, щелкнув по кнопке списка задач при нажатой Ctrl;
SET SCFINDUTILITY=C:\OS2\ APPS\PMSEEK.EXE - подсовывает удобную утилиту поиска под кнопку c "фонариком" вместо не слишком полезного диалога "Поиск объекта".
Из строки "SET AUTOSTART= TASKLIST,FOLDERS...." можно удалить PROGRAMS, чтобы зависшая программа не запустилась после перезагрузки снова.
Степан ТРУБАЧЕВ,
E-mail: [email protected]
Ссылки
Никакая статья не сравнится с информационным пространством глобальной сети, поэтому привожу некоторые ссылки:
http://hobbes.nmsu.edu/ - один из самых мощных архивов полуосевого софта со встроенным поисковиком
http://people.netscape.com/law/os2nav/ - неофициальная страничка Netscape Navigator for OS/2
http://people.netscape.com/danda/navos2app.html - список plugin's к Навигатору
http://sdg.ml.org/projects.html - домашняя страничка WarpAmp - плейера MP3
http://www.gt-online.com/~bri/ - просто много интересной информации по Warp
http://strange.thetaband.com/~madbrain/ - всякая мультимедия и, в частности, плейер S3M, AMF...
http://www.os2ss.com/ - сайт, посвященный исключительно OS/2, содержащий множество информации и ссылок
Горячие темы