Another Needle/Haystack lover.
Cut&Pasted from my REXX member 'REQUIRED' where I store oft-used
goodies...
/*<CHANGESTR>========================================================*/
/* Replace all occurrences of needle in the string haystack */
/* The function returns the changed string. If haystack does not */
/* contain needle, then the original haystack is returned. */
/* Syntax: CHANGESTR(needle, haystack, newneedle ) */
/* TRY: ------------------------------------------------------------->>
SAY LEFT("Function -> Result",53) "?=Prediction"
SAY COPIES("-",53) "-----------------"
SAY "CHANGESTR('B','Buttle','T') ->",
CHANGESTR('B','Buttle','T') " ?=Tuttle"
SAY "CHANGESTR('z','zdefzcdzd','abc') ->",
CHANGESTR('z','zdefzcdzd','abc') " ?=abcdefabccdabcd"
SAY "CHANGESTR('abc','abcdefabccdabcd','z') ->",
CHANGESTR('abc','abcdefabccdabcd','z') " ?=zdefzcdzd"
EXIT
>>===================================================================*/
CHANGESTR: PROCEDURE ;TRACE "O"
PARSE ARG old_needle ,,
old_haystack =1 front (old_needle) back ,,
new_needle new_haystack
DO WHILE(front<<old_haystack)
new_haystack = new_haystack!!front!!new_needle
PARSE VAR back old_haystack =1 front (old_needle) back
END
RETURN new_haystack!!old_haystack /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
/*</CHANGESTR>=======================================================*/
Looking at it now I can't remember why it works but it does! 8-@
Amazingly.
Yes! I know I have some weird standards and if you're wondering, the !≡|
in CP=1143.
The pseudo-HTML tags are part of an indexing feature I started writing in
1985 but haven't quite got around to finishing! ...One day perhaps?!
/Steve
From: Robert Garrett <
rob...@GARRETTFAMILY.US>
To:
TSO-...@VM.MARIST.EDU,
Date: 2015-03-24 00:28
Subject: Re: [TSO-REXX] REXX on z/OS Versions and CHANGESTR
Sent by: TSO REXX Discussion List <
TSO-...@VM.MARIST.EDU>
This works for me:
say CHANGE_ALL('INPUT',,
'NEED INPUT, STEPHANIE... INPUT!',,
'OUTPUT');
return 0;
CHANGE_ALL:
parse arg _NEEDLE,_HAYSTACK,_REPLACEMENT;
do ZIX = 1;
if POS(_NEEDLE,_HAYSTACK) = 0 then,
leave ZIX;
else,
do;
parse value _HAYSTACK with,
_PREFIX (_NEEDLE) _SUFFIX;
_HAYSTACK = _PREFIX||_REPLACEMENT||_SUFFIX;
end;
end ZIX;
return _HAYSTACK;
-----Original Message----- Deleted -----
S?vida annat inte anges ovan: / Unless stated otherwise above:
IBM Svenska AB
Organisationsnummer: 556026-6883
Adress: 164 92 Stockholm