joejacob
New User
Joined: 21 Jun 2007 Posts: 14 Location: India
|
|
|
|
Here is my code to search for a string if user places the cursor under the string to be searched and press PF4 the cursor will go to first occurrence and when I press PF5 it go through the subsequent occurrences.
Code: |
/*REXX*/
ADDRESS ISREDIT 'MACRO' /* INVOKING THE MACRO */
RCODE = MAIN_PROGRAM()
EXIT RCODE
/* MAIN FUNCTION */
MAIN_PROGRAM:
ISREDIT "(THELINE) = LINE .ZCSR"
"ISREDIT (R1,C1) = CURSOR"
STRING = GET_STRING(THELINE,C1) /* CALLING FET STRING FUNCTION */
IF STRING = '*' THEN
"ISREDIT F ALL '*'"
ELSE IF STRING = '"' THEN
'ISREDIT F ALL """'
ELSE IF STRING = "'" THEN
"ISREDIT F ALL '''"
ELSE
"ISREDIT F ALL "STRING""
RETURN 0
/* FUNCTION TO GET STRING TO BE SEARCHED */
GET_STRING:
PARSE ARG DATA,COL
FLAG = 'N'
BACK = COL
FWD = COL
FNDSTR = ' '
CHECK = 'N'
SELECT
WHEN SUBSTR(DATA,BACK,1) == '+' |,
SUBSTR(DATA,BACK,1) == '(' |,
SUBSTR(DATA,BACK,1) == ',' |,
SUBSTR(DATA,BACK,1) == '.' |,
SUBSTR(DATA,BACK,1) == '=' |,
SUBSTR(DATA,BACK,1) == '*' |,
SUBSTR(DATA,BACK,1) == ' ' |,
SUBSTR(DATA,BACK,1) == "'" |,
SUBSTR(DATA,BACK,1) == '"' |,
SUBSTR(DATA,BACK,1) == '/' |,
SUBSTR(DATA,BACK,1) == '\' |,
SUBSTR(DATA,BACK,1) == ')' |,
SUBSTR(DATA,BACK,1) == ':' |,
SUBSTR(DATA,BACK,1) == ';' |,
SUBSTR(DATA,BACK,1) == '&' |,
SUBSTR(DATA,BACK,1) == '|' |,
SUBSTR(DATA,BACK,1) == '(' THEN CHECK = 'Y'
OTHERWISE
CHECK = 'N'
END
IF CHECK = 'N' THEN
DO
DO WHILE(FLAG = 'N' & BACK /= 1)
SELECT
WHEN SUBSTR(DATA,BACK,1) == '+' |,
SUBSTR(DATA,BACK,1) == '(' |,
SUBSTR(DATA,BACK,1) == ',' |,
SUBSTR(DATA,BACK,1) == '.' |,
SUBSTR(DATA,BACK,1) == '=' |,
SUBSTR(DATA,BACK,1) == '*' |,
SUBSTR(DATA,BACK,1) == ' ' |,
SUBSTR(DATA,BACK,1) == "'" |,
SUBSTR(DATA,BACK,1) == '"' |,
SUBSTR(DATA,BACK,1) == '/' |,
SUBSTR(DATA,BACK,1) == '\' |,
SUBSTR(DATA,BACK,1) == ')' |,
SUBSTR(DATA,BACK,1) == ':' |,
SUBSTR(DATA,BACK,1) == ';' |,
SUBSTR(DATA,BACK,1) == '&' |,
SUBSTR(DATA,BACK,1) == '|' |,
SUBSTR(DATA,BACK,1) == '(' THEN FLAG = 'Y'
OTHERWISE
BACK = BACK - 1
END
END
FLAG = 'N'
DO WHILE(FLAG = 'N')
SELECT
WHEN SUBSTR(DATA,FWD,1) == '+' |,
SUBSTR(DATA,FWD,1) == '(' |,
SUBSTR(DATA,FWD,1) == ',' |,
SUBSTR(DATA,FWD,1) == '.' |,
SUBSTR(DATA,FWD,1) == '=' |,
SUBSTR(DATA,FWD,1) == '*' |,
SUBSTR(DATA,FWD,1) == ' ' |,
SUBSTR(DATA,FWD,1) == "'" |,
SUBSTR(DATA,FWD,1) == '"' |,
SUBSTR(DATA,FWD,1) == '/' |,
SUBSTR(DATA,FWD,1) == '\' |,
SUBSTR(DATA,FWD,1) == ')' |,
SUBSTR(DATA,FWD,1) == ':' |,
SUBSTR(DATA,FWD,1) == ';' |,
SUBSTR(DATA,FWD,1) == '&' |,
SUBSTR(DATA,FWD,1) == '|' |,
SUBSTR(DATA,FWD,1) == '(' THEN FLAG = 'Y'
OTHERWISE
FWD = FWD + 1
END
END
END
IF BACK /= 1 & CHECK = 'N' THEN
FNDSTR = SUBSTR(DATA,BACK+1,FWD-BACK-1)
ELSE
FNDSTR = SUBSTR(DATA,BACK,FWD-BACK+1)
RETURN FNDSTR
|
Now how can I make the cursor go back to the initial position when I press another key. |
|