Google

Полезные утилиты


CLIP - компилятор и сборщик программ
clip_dbg,clip_cld - отладчики

clip_hindex,clip_hseek - hyper text/HTML индексация и поиск.

CLIP_WE - многооконный текстовый редактор

Текстовый редактор с приличными возможностями, базирующийся на классах textedit, medit

CLIP_BLANK - интерпретатор шаблонов документов

Шаблон документа представляет из себя текст со встроеными в него clipper-выражениями. Например кусок платежки (жаль что бравзеры неправильно показывают псевдографику):
********************************************************** pen:=strsumma(platdoc->SUMMA) pen1:="" pen2:="" #IF len(pen)>65 pen:=alltrim(pen) s:=substr(pen,1,65) s:=substr(s,1,rat(' ',s)) pen1:=substr(pen,len(s)+1) pen:=s #ENDIF ************************************* nnn:=padr(alltrim(str(platdoc->no_pp,4,0)),4) telegr:=1 aaa:=readkeyb(,,"1-почтой, 2-телеграфом, 3-электронно",@telegr) telegr:=iif(telegr==2,"телеграфом",iif(telegr==3,"электронно","почтой")) telegr:=padc(telegr,10) d:=strtran(dtoc(platdoc->DAT),"/",".") ssum:=strtran(alltrim(str(platdoc->summa)),".","-") ПЛАТЕЖНОЕ ПОРУЧЕНИЕ N #nnn #d #telegr _____________ _____________ (Дата) (Вид платежа) Сумма |#pen прописью| |#pen1 --------┴------------------------------+-----+------------------------- | | ИНН #padr(my_ident,12) #padr(substr(my_firma,1,22),22)| | .............. Ну и так далее....... Как видно из этого примера:
- поддерживаются #if, #endif, #while #endwhile, #return
- строки содержание ":=" выполняются
- #var - подставляются в текст в виде вычисленного значения

Вот собственно и все правила составления шаблонов.
Два ограничение - команды не поддерживаются и нельзя описать свою функцию, зато поддерживаются ВСЕ clipper-функции.
Смотрите таже функцию run_blank() для использования шаблонов без clip_blank.

CLIP_RUN - исполнитель po-файлов

PO-файлы - это файл с байт-кодом виртуальной машины CLIP. Можно сказать что это кодовый блок, записанный в файл. Чтобы его получить надо использовать ключик -p компилятора.
Все нижеописанное можно подсмотреть в utils/Makefile

Как сделать исполняемый po-файл

Напишите test.prg:
clear screen
use test
browse()
Скомпилируйте:
clip -p test.prg
Получится файл test.po размером байт эдак в 300-400
Теперь надо немного пошаманить над этим файлом, чтобы он стал исполняемым.
mv test.po test.po.0
cat "#!/путь_где_лежит_clip_run/clip_run" >test.po
(это такая шаманская строчка, которая как раз и заставляет систему исполнять po-файл посредством clip_run и она должна быть самой первой в файле)
cat test.po.0 >>test.po
chmod +x test.po
Теперь выполняйте "test.po "
Ну и как ???? Понравилось ??? Файл размером всего в 300 байт, а сколько умеет ????

CLIP_PRG - исполнитель prg-файлов

"clip_prg filename.prg param1 param2 ...." - компилирует на лету prg-файл и исполняет скомпилированный po-файл.
Чтобы получить исполняемый prg-файл, надо в первой строке написать:
#!/path_for_clip_exec_files/clip_prg
и поставить аттрибут исполняемости prg-файлу командой
(chmod +x filename.prg)

CLIP_BL

Этот полезный интерпретатор ppo-файлов предоставлен Сергеем Алешиным. Полное описание можно прочитать на его домашней страничке или здесь .

WWW_CLIP

Это штука делает то же что www-sql от James Henstridge плюс кое-что еще. Про www-sql читайте здесь или в первоисточнике. Опишем здесь лишь особенности WWW_CLIP и его отличия от www-sql.
1. Имена переменных нечувствительны к регистру.
2. Вместо команды SETEXPR можно юзать просто SET - они полностью идентичны.
3. Изменен синтаксис команды CONNECT. Самым первым параметром следует указывать двухбуквенную строку идентифицирующую тип сервера базы данных - "PG" - для PostgreSQL, "MS" - для MySQL, "OR" - для Oracle. Об использовании SQL в Clip`е читайте здесь. В случае Oracle параметр host задает не имя хоста сервера, а т.н. connect string - имя базы данных. Если хочется использовать базу данных по умолчанию или локальный хост, но в то же время хочется задать логин и пароль, вместо параметра host пишите NIL. Например, чтобы подключиться к умалчиваемой базе данных Oracle под именем scott с паролем tiger тег должен иметь следующий вид:
<! sql connect OR NIL scott tiger>
4. В командах SET/SETEXPR/SETDEFAULT/EVAL можно использовать любые прилинкованные функции Клиппер.

WCL2PRG

WWW_CLIP, несомненно, полезная утилита, но если принять во внимание, что она является не самым быстрым интерпретатором, становится очевидным, что нужна еще утилита типа WCL2PRG. WCL2PRG на входе получает файл .WCL (.HTML с тегами www-sql), а на выходе - исходник .PRG после компиляции которого получается бинарник, выводящий в stdout то же самое что вывел бы WWW_CLIP, т.е. полноценное cgi-bin приложение. В результате скорость возрастает многократно.
Кроме того, использование WCL2PRG позволяет вставлять в .WCL клиппер-код. Клиппер-код следует включать в тег-комментарий, начинающийся со слов "CLIP" или "CLIPFUNC".
Например:
<!-- clip QOUT("<b>Hello, world!</b>") -->
В результате работы полученного cgi-bin приложения клиент увидит в своем браузере кроме прочего строку "Hello, world!" написанную жирным шрифтом.
Команда CLIPFUNC предназначена для включения в конец генерируемого .PRG кода многократно используемой функции или процедуры.
Например:
<!-- clipfunc
PROCEDURE PrintPrices
	USE prices.dbf NEW ALIAS prices
	? "<table border>"
	? "<tr><th>Наименование</th><th>Цена</th></tr>"
	DO WHILE !prices->EOF()
		? "<tr><td>",prices->Name,"</td><td>",prices->Price,"</td></tr>"
		prices->SKIP()
	ENDDO
	? "</table>"
RETURN
-->
В результате клиент увидит в своем браузере таблицу с данными из prices.dbf
В встраиваемом клиппер-коде можно использовать переменные www-sql. Все они хранятся в ассоциативном массиве vars. Например:
<! sql set quad 25 >
<! sql print $quad >
<!-- clip QOUT(SQRT(vars:quad)) -->

SQLRUN

Эта утилита выполняет скрипты на языке SQL.

lowname

переводит имена файлов в нижний регистр
Использовать можно примерно так :
lowname *.PRG

clip_trans

clip_trans <source_codepage> <target_codepage> <file1>....<fileN> Перекодирует файлы из любой кодировки в любую другую, например:
clip_trans cp866 cp1251 *.prg
перекодирует все prg-файлы из русской DOS кодировки в русскую Win кодировку.

configure

Генерирует clipcfg.h с описанием некоторых системно-зависимых констант и define, используемый в clip.h. Вообщем вам это не должно быть интересно.

clip_makeslib

Из нескольких обычных библиотек с расширением .a делает одну динамически подключаемую библиотеку с расширением .so: этой утилитой создается libclip.so. Можете ее использовать чтоб создавать свои загружаемый библиотеки.

clip_hindex, clip_hseek

Мини-google. clip_hindex индексирует содержимое сайта. Полученный индекс затем используется для быстрого поиска при помощи утилиты clip_hseek. Использована технология HiPER-Seek.
© Ю.Хныкин, uri@itk.ru, 2000