Скрипты на REXX - разное


После долгого отсутствия набрёл на страничку скриптов на RU/2 и обнаружил там товарное количество полезных вещей, спасибо. Вот ещё парочка.

Два скрипта, простых, как мычание. Их даже нету смысла пристегивать в виде файла, настолько они коротки, и, в тоже время, лично я не представляю себе без них жизни в OS/2. Написаны они были давным-давно, когда я ещё не знал о существовании OS/2, а сидел под EC1045/46 (IBM370) и там программил, в том числе на rexx, с тех пор его и люблю.

Первый скрипт, say.cmd, позволяет из командной строки быстро вычислить 2*990.345/0.6*26+237.39, к примеру, или узнать, как выглядит строка "Mary had a little lamb" в hexadecimal виде:

===say.cmd===
/***/
arg line
interpret ( say ( line ) )
=============

  Usage example: say c2x(Mary had a little lamb), say 268*0.0023
Второй очень на него похож: можно быстро (опять же из командной строки) накатать программку из трёх строк в качестве аргумента и тут же наблюдать её выполнение:
===interpret.cmd===
/***/
arg line
interpret ( line )
===================

  Usage example: interpret /***/; do i=0 to 255; say x2c(i); end
Timur Hi-Rullin
Incom-Svyaz, Inc.
[TZH-RIPN] [TZH-RIPE]
IRC nick: timson

Комментарий banshee: в поставку REXX для OS/2 входит скрипт rexxtry.cmd, имеющий точно такое же назначение, что и interpret.cmd -- выполнить команду или записанную в одну строчку последовательность команд. А вот без say.cmd я теперь тоже не представляю себе жизни в OS/2 :)


Замечательный скрипт был впервые мной обнаружен в README к OS/2 2.1, затем был замечен в документации к версии 3. Изначально замещал System Proportional ISO на non-ISO шрифт. С его помощью можно установить любой желаемый шрифт из числа растровых (То есть НЕ TrueType и НЕ Adobe), как базовый шрифт РМ. Этого же эффекта можно достичь с помощью редактора ini-файлов.

===helv.cmd===
/* */
call RxFuncAdd "SysIni", "RexxUtil", "SysIni"
AppName = "PM_SystemFonts"
KeyName = "DefaultFont"
FontName = "8.Helv"
call SysIni "USER", AppName, KeyName, FontName||"0"x
exit
==============
===ws.cmd===
/* */
call RxFuncAdd "SysIni", "RexxUtil", "SysIni"
AppName = "PM_SystemFonts"
KeyName = "DefaultFont"
FontName = "9.WarpSans"
call SysIni "USER", AppName, KeyName, FontName||"0"x
exit
============
Вадим А. Сухоруков


Небольшой скрипт, играет все доступные mp3 файлы.

===mp3play.cmd===
/* playng all *mp3z */

call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
call SysLoadFuncs

do i=1 to WORDS(SysDriveMap(,'USED'))
   call SysFileTree word(SysDriveMap(,'USED'),i)"\*mp3", 'file', SFO
   do m=1 to file.0
    'd:\tools\mp123.exe --dart --raise_prio' file.m 
   end
end
=================
Alexander Anisimoff
IRC nick: ander


Скрипт берет стрОки из stdin и плюет их в stdout с интервалом в одну секунду.

===dozer.cmd===
/* (C) vv */

call RxFuncAdd 'SysSleep', 'RexxUtil', 'SysSleep'

do while lines()
  say linein()
  call SysSleep 1
end
===============
Зачем? Для irc. Иногда бывает нужным сделать /exec -o <что-то-там> (-o - с выводом в окно: канал/приват/dcc), а команда возьми да и выплюнь с полэкрана информации за раз. Последствия могут быть самые разные - от элементарного срабатывания autoignore on flood или недовольства ботов/опов на канале (все-таки флуд) до элементарного закрытия соединения сервером по flood excess.

Вроде мелочь, а неприятно. Для этого

  1. пихаем этот скрипт в каталог из path либо в рабочий каталог openchat/ircii
  2. делаем alias override:
    alias exec {
      //exec $* | dozer
    }
    
    и пихаем его куда-нибудь в изначально выполняемый скрипт. У меня, например, подобные прибамбасы сидят в файле vvextras.irc, который "упомянут" (в виде "^load vvextras.irc") в openchat.irc
Обращаю внимание на два слэша перед словом "exec" в теле алиаса. Это означает "оригинальный" exec (в противном случае происходит рекурсия).

И всё. Теперь результаты всех /exec будут выдаваться дозированно. Если вдруг понадобится /exec без дозирования -- смело набирайте //exec <...>двумя слэшами) прямо в "комстроке" irc клиента. Это вызовет "девственно чистый" exec.

Vitalie Vrabie
IRC nick: vv


Интересные ссылки:
Комментариев к странице: 0 | Добавить комментарий
Домой | Проект ядро Core/2 | Проект OS/4 Download | Новости | Гостевая книга | Подробно обо всем | Нужные программы | Проекты | OS/2 FAQ | Всячина | За и Против | Металлолом | #OS2Russian | RDM/2 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ