home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format 127
/
af127a.adf
/
DevGuide.lzx
/
DevGuide
/
Device_Search.rexx
< prev
next >
Wrap
OS/2 REXX Batch file
|
1999-06-17
|
7KB
|
282 lines
/*
**---------------------------------------
**
** Device_Search.rexx V1.2 - 14.11.96
**
** Search Devices.guide for keywords
**
** © 1996 Heiko Schröder e-mail: age@thepentagon.com
** You need LIBS: RexxTricks.library
**
** Inspirations by Tassos Hadjithmomaoglou
** AMIL_Search.rexx V0.3 © 1995
**
**----------------------------------------
** $VER: Device_Search.rexx V1.2 (14-Nov-96)
**----------------------------------------
**
*/
/*
** Path for Viewer
**
** Enter here the full path of an AmigaGuide Viewer of your choice
** That's the only thing you should change
*/
Viewer = 'SYS:Utilities/MultiView'
/*
** Please don't change anything after this line
**----------------------------------------------
*/
OPTIONS RESULTS
SIGNAL ON BREAK_C
SIGNAL ON SYNTAX
TRUE=1
FALSE=0
R="0A"X
say "32mSearchIn»Device.guide« V1.2 - © Heiko Schröder - 14.11.96 -m"
say "33mIf you use ·PowerGuide· you dont need this script."
say "Use instead the »Search«-Button...m"||R
IF ~show('L',"rexxtricks.library") then do
IF ~addlib('rexxtricks.library',0,-30,0) then do
say "Sorry, but I need the rexxtricks.library in LIBS: ..."
say "Copy it from Libs-Drawer at this directory"
say "to your LIBS: directory."||R
SAY "Press »Return« to end."
PARSE PULL Keyword
exit
end
end
/*
** Check for Devices.guide in current directory
** If Devices.guide is found then open it, else inform the user
*/
bool1=OPEN(AMIL_file,'Devices.guide',"R")
IF bool1 = FALSE THEN
DO
SAY '"Devices.guide" wasn''t found in the current directory.'
SAY "Press »Return« to end."
PARSE PULL Keyword
EXIT
END
AMIL_Path = 'DevGuide:Devices.guide'
/*
** Check for argument, else ask for one
*/
PARSE ARG Keyword
IF Keyword = '' THEN
DO
SAY 'Please input word to search for: (without wildcards) '
PARSE PULL Keyword
IF Keyword = '' THEN
DO
SAY 'Search abandoned !!!'
EXIT 0
END
END
SAY d2c(11)||'Searching for "'Keyword'"...'
/*
** Initialize variables
*/
Counter = 0
Node_Line = 0
Keyword_Line = 0
Node_Name = ''
AMIL_Line = ''
/*
** Create the Device_Search.guide
*/
if exists("c:search") then do
address command "c:search >T:node search @node Devices.guide"
address command "c:search >T:word search "d2c(34)||Keyword||d2c(34)" Devices.guide"
end
else do
say "Sorry, but i need program »SEARCH« in the C: drawer!"||R
SAY "Press »Return« to end."
PARSE PULL Keyword
exit
end
say "Creating the guide... Wait one second..."
open("test","T:word")
a=readln("test")
if eof("test") then call Ende
close("test")
ReadFile("T:node","liste") /*Read the T:node in Stem-Variable*/
ReadFile("T:word","wordl") /*Read the T:word in Stem-Variable*/
if wordl.0="0" then
say "The "||Keyword||" was not found in Devices.guide!"
else do
bool1=OPEN(Search_file,'T:Devices_Search.guide',W)
WRITELN(Search_file,'@database Device_Search')
WRITELN(Search_file,'@node "Main" "Device_Search V1.2 - 14.11.96 - by Heiko Schröder"')
WRITELN(Search_file,'')
WRITELN(Search_file,' The word "@{fg fill}'Keyword'@{fg text}" was found in the following lines:')
WRITELN(Search_file,'')
i=1
z=1
do while 1
ist1 = liste.i
ist = Value(Compress(DelStr(ist1,7))) /*Linenumber of @node*/
n=i+1
next1 = liste.n
next = Value(Compress(DelStr(next1,7))) /*Linenumber of next @node*/
zeile1= wordl.z
zeile = Value(Compress(DelStr(zeile1,7))) /*Linenumber of Keyword*/
if next=0 then next=zeile+1 /*found KeyWord after last @node*/
if ist>zeile then do /*found KeyWord before @node*/
z=z+1 /*next KeyWord*/
end
if zeile>next then do /*found KeyWord after next @node*/
i=i+1 /*next @node*/
end
if ist<=zeile & zeile<=next then do /*KeyWord between two @node s*/
AMIL_Line = ist1 /*read @node*/
s1 = DELSTR(DELSTR(AMIL_Line,1,7),1,7)
Node_Name = DELSTR(s1,INDEX((s1),'"'))
Node_Line = ist
Search_Line = Delstr(zeile1,1,7) /*read KeyWord*/
IF (LEFT(Search_Line,1) ~= '@') | (LEFT(Search_Line,2) = '@{') THEN
DO
Counter=Counter+1
Keyword_Line = zeile - Node_Line
wo=Index(Upper(Search_Line),Upper(KeyWord))
l=Length(Keyword)
vor=DelStr(Search_Line,wo)
nach=DelStr(Search_Line,1,wo+l-1)
AMIL_Search_Line = '@{"*" link "DevGuide:Devices.guide/'Node_Name'" 'Keyword_Line'} 'vor||'@{fg shine}'||KeyWord||'@{fg text}'||nach
WRITELN(Search_File,AMIL_Search_Line||R||COPIES('-',77))
END
z=z+1 /*next KeyWord*/
if z>wordl.0 then leave /*end, if no more KeyWord was found*/
end
end
end
WRITELN(Search_file,"I have found "||Counter||" possibilities.")
WRITELN(Search_file,"@endnode")
/*
** Close both files
*/
bool1=CLOSE(AMIL_file)
bool1=CLOSE(Search_file)
/*
** Check for Viewer or MultiView/AmigaGuide
*/
bool1 = EXISTS(Viewer)
IF bool1 = FALSE THEN
DO
SAY Viewer 'wasn''t found.'
SAY 'Trying MultiView/AmigaGuide...'
bool1 = EXISTS('SYS:Utilities/MultiView')
IF bool1 = FALSE THEN
DO
bool1 = EXISTS('SYS:Utilities/AmigaGuide')
IF bool1 = FALSE THEN
DO
SAY 'MultiView/AmigaGuide weren''t found in SYS:Utilities !!!'
EXIT
END
ELSE
DO
Viewer = 'SYS:Utilities/AmigaGuide'
END
END
ELSE
DO
Viewer = 'SYS:Utilities/MultiView'
END
END
/*
** View the results from the search
*/
SAY 'Running 'Viewer'...'||R
ADDRESS COMMAND 'Run >NIL: <NIL:' Viewer 'T:Devices_Search.guide'
SAY "Press »Return« to end."
PARSE PULL Keyword
ADDRESS COMMAND 'Delete T:Devices_Search.guide QUIET'
ADDRESS COMMAND 'Delete T:node QUIET'
ADDRESS COMMAND 'Delete T:word QUIET'
ADDRESS COMMAND 'Assign DevGuide: REMOVE'
EXIT 0
/*
** End of ARexx script
*/
Ende:
say "Sorry, but »"||KeyWord||"« was not found."||R
close("test")
ADDRESS COMMAND 'Delete T:node QUIET'
ADDRESS COMMAND 'Delete T:word QUIET'
SAY "Press »Return« to end."
PARSE PULL Keyword
ADDRESS COMMAND 'Assign DevGuide: REMOVE'
EXIT
/*
** Handle the Error condition
*/
SYNTAX:
bool1=CLOSE(AMIL_file)
bool1=CLOSE(Search_file)
ADDRESS COMMAND 'Delete T:Devices_Search.guide QUIET'
ADDRESS COMMAND 'Delete T:node QUIET'
ADDRESS COMMAND 'Delete T:word QUIET'
SAY R||'Error at line' SIGL ':' ERRORTEXT(RC)
SAY 'Please report it to the author'||R
SAY "Press »Return« to end."
PARSE PULL Keyword
ADDRESS COMMAND 'Assign DevGuide: REMOVE'
EXIT
/*
** Handle the Control C command given by the user
*/
BREAK_C:
bool1=CLOSE(AMIL_file)
bool1=CLOSE(Search_file)
ADDRESS COMMAND 'Delete T:Devices_Search.guide QUIET'
ADDRESS COMMAND 'Delete T:node QUIET'
ADDRESS COMMAND 'Delete T:word QUIET'
SAY 'Search aborted...'||R
SAY "Press »Return« to end."
PARSE PULL Keyword
ADDRESS COMMAND 'Assign DevGuide: REMOVE'
EXIT