Discussion:
REPLACE function in REXX?
(too old to reply)
Bob Bridges
2016-09-05 17:20:30 UTC
Permalink
Raw Message
It's getting so I'm automating at least as much in VBA as in REXX, which leads to comical malaprops such as "for jr=1 to 5" in REXX and "nam=strip(nam)" in VBA. There's no cure for that other than paying closer attention, I suppose.

But now I'm writing something in REXX — not an Edit macro — and I want to replace one character string with another. In VBA that'd be the Replace function. For example I have a string "/home/bnt013" and I want to change it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I already have the two strings; in VBA I would write

cmd = Replace(cmd, OldACID, NewACID)

I set out to do the same thing in REXX and came up against a blank; I can't figure out REXX's analogous function. Is there one? I have a hard time believing there isn't; REXX is so powerful in the matter of string handling. I mean, I can write such a function for myself; I just feel I must be missing something obvious.

Feel free to jeer a little; it's probably right in front of my eyes.

---
Bob Bridges
***@gmail.com, cell 336 382-7313
***@InfoSecInc.com

/* Democracy is three wolves and a sheep deciding what's for dinner. -C B Low */

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Mickey Bee
2016-09-05 17:26:02 UTC
Permalink
Raw Message
Look into the OVERLAY function. If you can find it, you can change it :)

Mickey

-----Original Message-----
From: Bob Bridges
Sent: Monday, September 05, 2016 1:20 PM
To: TSO-***@VM.MARIST.EDU
Subject: [TSO-REXX] REPLACE function in REXX?

It's getting so I'm automating at least as much in VBA as in REXX, which
leads to comical malaprops such as "for jr=1 to 5" in REXX and
"nam=strip(nam)" in VBA. There's no cure for that other than paying closer
attention, I suppose.

But now I'm writing something in REXX — not an Edit macro — and I want to
replace one character string with another. In VBA that'd be the Replace
function. For example I have a string "/home/bnt013" and I want to change
it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I
already have the two strings; in VBA I would write

cmd = Replace(cmd, OldACID, NewACID)

I set out to do the same thing in REXX and came up against a blank; I can't
figure out REXX's analogous function. Is there one? I have a hard time
believing there isn't; REXX is so powerful in the matter of string handling.
I mean, I can write such a function for myself; I just feel I must be
missing something obvious.

Feel free to jeer a little; it's probably right in front of my eyes.

---
Bob Bridges
***@gmail.com, cell 336 382-7313
***@InfoSecInc.com

/* Democracy is three wolves and a sheep deciding what's for dinner. -C B
Low */

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Paul Gilmartin
2016-09-05 17:37:29 UTC
Permalink
Raw Message
On 2016-09-05, at 11:26, Mickey Bee wrote:

> Look into the OVERLAY function. If you can find it, you can change it :)
>
If the lengths differ? And there's a funky convention for overlaying
or not overlaying blanks that I choose not to remember. PARSE is a
cumbersome alternative.

> -----Original Message----- From: Bob Bridges
> Sent: Monday, September 05, 2016 1:20 PM
>
> It's getting so I'm automating at least as much in VBA as in REXX, which leads to comical malaprops such as "for jr=1 to 5" in REXX and "nam=strip(nam)" in VBA. There's no cure for that other than paying closer attention, I suppose.
>
For that, I'd use "sed". Or "awk". Mr. Natural sez, Use the right
tool for the job.

And using more languages affords more opportunity for malaprops.
Lately in this list I said "eval" when I meant "INTERPRET".

-- gil

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Anania, Philip D
2016-09-05 18:19:50 UTC
Permalink
Raw Message
In reference to Mr Natural - Flakey Foont would agree. :-)

On Mon, Sep 5, 2016 at 1:37 PM, Paul Gilmartin <***@aim.com> wrote:

> On 2016-09-05, at 11:26, Mickey Bee wrote:
>
> > Look into the OVERLAY function. If you can find it, you can change it :)
> >
> If the lengths differ? And there's a funky convention for overlaying
> or not overlaying blanks that I choose not to remember. PARSE is a
> cumbersome alternative.
>
> > -----Original Message----- From: Bob Bridges
> > Sent: Monday, September 05, 2016 1:20 PM
> >
> > It's getting so I'm automating at least as much in VBA as in REXX, which
> leads to comical malaprops such as "for jr=1 to 5" in REXX and
> "nam=strip(nam)" in VBA. There's no cure for that other than paying closer
> attention, I suppose.
> >
> For that, I'd use "sed". Or "awk". Mr. Natural sez, Use the right
> tool for the job.
>
> And using more languages affords more opportunity for malaprops.
> Lately in this list I said "eval" when I meant "INTERPRET".
>
> -- gil
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>



--

"Go about your Music citizen" - PdotDdot

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Lizette Koehler
2016-09-05 17:27:56 UTC
Permalink
Raw Message
Well, you could ISPF Edit Macro to do this. Use the Regular Expressions from ISPF to allow more flexibility.

Lizette


> -----Original Message-----
> From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of
> Bob Bridges
> Sent: Monday, September 05, 2016 10:21 AM
> To: TSO-***@VM.MARIST.EDU
> Subject: [TSO-REXX] REPLACE function in REXX?
>
> It's getting so I'm automating at least as much in VBA as in REXX, which leads
> to comical malaprops such as "for jr=1 to 5" in REXX and "nam=strip(nam)" in
> VBA. There's no cure for that other than paying closer attention, I suppose.
>
> But now I'm writing something in REXX — not an Edit macro — and I want to
> replace one character string with another. In VBA that'd be the Replace
> function. For example I have a string "/home/bnt013" and I want to change it
> to "/home/bnx223", where BNT013 and BNX223 are old and new values. I already
> have the two strings; in VBA I would write
>
> cmd = Replace(cmd, OldACID, NewACID)
>
> I set out to do the same thing in REXX and came up against a blank; I can't
> figure out REXX's analogous function. Is there one? I have a hard time
> believing there isn't; REXX is so powerful in the matter of string handling.
> I mean, I can write such a function for myself; I just feel I must be missing
> something obvious.
>
> Feel free to jeer a little; it's probably right in front of my eyes.
>
> ---
> Bob Bridges
> ***@gmail.com, cell 336 382-7313
> ***@InfoSecInc.com
>
> /* Democracy is three wolves and a sheep deciding what's for dinner. -C B Low
> */
>

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Styles, Andy , SD EP zPlatform
2016-09-05 17:29:24 UTC
Permalink
Raw Message
There isn't a direct drop in - you have to code one up. I got frustrated with that years ago and wrote my own assembler REXX function :-)

Andy Styles

z/Series Systems Programmer
Original Message
From: Bob Bridges
Sent: Monday, 5 September 2016 18:21
To: TSO-***@VM.MARIST.EDU
Reply To: TSO REXX Discussion List
Subject: [TSO-REXX] REPLACE function in REXX?


-- This email has reached the Bank via an external source --


It's getting so I'm automating at least as much in VBA as in REXX, which leads to comical malaprops such as "for jr=1 to 5" in REXX and "nam=strip(nam)" in VBA. There's no cure for that other than paying closer attention, I suppose.

But now I'm writing something in REXX — not an Edit macro — and I want to replace one character string with another. In VBA that'd be the Replace function. For example I have a string "/home/bnt013" and I want to change it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I already have the two strings; in VBA I would write

cmd = Replace(cmd, OldACID, NewACID)

I set out to do the same thing in REXX and came up against a blank; I can't figure out REXX's analogous function. Is there one? I have a hard time believing there isn't; REXX is so powerful in the matter of string handling. I mean, I can write such a function for myself; I just feel I must be missing something obvious.

Feel free to jeer a little; it's probably right in front of my eyes.

---
Bob Bridges
***@gmail.com, cell 336 382-7313
***@InfoSecInc.com

/* Democracy is three wolves and a sheep deciding what's for dinner. -C B Low */

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX


Lloyds Banking Group plc. Registered Office: The Mound, Edinburgh EH1 1YZ. Registered in Scotland no. SC95000. Telephone: 0131 225 4555. Lloyds Bank plc. Registered Office: 25 Gresham Street, London EC2V 7HN. Registered in England and Wales no. 2065. Telephone 0207626 1500. Bank of Scotland plc. Registered Office: The Mound, Edinburgh EH1 1YZ. Registered in Scotland no. SC327000. Telephone: 03457 801 801. Cheltenham & Gloucester plc. Registered Office: Barnett Way, Gloucester GL4 3RL. Registered in England and Wales 2299428. Telephone: 0345 603 1637

Lloyds Bank plc, Bank of Scotland plc are authorised by the Prudential Regulation Authority and regulated by the Financial Conduct Authority and Prudential Regulation Authority.

Cheltenham & Gloucester plc is authorised and regulated by the Financial Conduct Authority.

Halifax is a division of Bank of Scotland plc. Cheltenham & Gloucester Savings is a division of Lloyds Bank plc.

HBOS plc. Registered Office: The Mound, Edinburgh EH1 1YZ. Registered in Scotland no. SC218813.

This e-mail (including any attachments) is private and confidential and may contain privileged material. If you have received this e-mail in error, please notify the sender and delete it (including any attachments) immediately. You must not copy, distribute, disclose or use any of the information in it or any attachments. Telephone calls may be monitored or recorded.
Ze'ev Atlas
2016-09-05 18:25:59 UTC
Permalink
Raw Message
There is a changestr functioned defined in Rexx standard but NOT implemented in z/OS
See CountStr and ChangeStr for Classic REXX

|
|
|
| | |

|

|
|
| |
CountStr and ChangeStr for Classic REXX
CountStr and ChangeStr are two functions missing from classic REXX. CountStr counts the non-overlapping instanc... | |

|

|

See ode.xmlgadgets.com/2010/07/25/rexx-strreplace-replace-part-of-a-string-with-new-string/for implementations of that functionality
But my real suggestion is to use regular expressions.  VBA has them!

 Ze'ev Atlas



From: Bob Bridges <***@GMAIL.COM>
To: TSO-***@VM.MARIST.EDU
Sent: Monday, September 5, 2016 1:20 PM
Subject: [TSO-REXX] REPLACE function in REXX?

It's getting so I'm automating at least as much in VBA as in REXX, which leads to comical malaprops such as "for jr=1 to 5" in REXX and "nam=strip(nam)" in VBA.  There's no cure for that other than paying closer attention, I suppose.

But now I'm writing something in REXX — not an Edit macro — and I want to replace one character string with another.  In VBA that'd be the Replace function.  For example I have a string "/home/bnt013" and I want to change it to "/home/bnx223", where BNT013 and BNX223 are old and new values.  I already have the two strings; in VBA I would write

  cmd = Replace(cmd, OldACID, NewACID)

I set out to do the same thing in REXX and came up against a blank; I can't figure out REXX's analogous function.  Is there one?  I have a hard time believing there isn't; REXX is so powerful in the matter of string handling.  I mean, I can write such a function for myself; I just feel I must be missing something obvious.

Feel free to jeer a little; it's probably right in front of my eyes.

---
Bob Bridges
  ***@gmail.com, cell 336 382-7313
  ***@InfoSecInc.com

/* Democracy is three wolves and a sheep deciding what's for dinner.  -C B Low  */

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX



----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Thom Stone
2016-09-05 20:32:49 UTC
Permalink
Raw Message
I believe Regina Rexx and perhaps Orexx have a chgstr function, but I am not aware of anything for TSO rexx. I wrote this simple doodad for myself in Neview/Tso rexx. Address NetvAsIs is for maintaining case in NetView. I am sure this can be refined a bit. I'll leave that for those with the time and the will.

fromstr=arg(1)
thisstr=arg(2)
tostr=arg(3)
chgs=arg(4)
if tostr==fromstr then
return thisstr
newstr=''
string=thisstr
if chgs='' then
do while chgit()='1'
string=newstr
end
else
do chgs
call chgit
string=newstr
end
if ((newstr='NEWSTR')|(newstr='newstr')|(newstr='')) then
newstr=thisstr
RETURN newstr
/*------------------------------------------------------------------*/
chgit:
ADDRESS NetVAsIs
if pos(fromstr,string)='0' then
return '0'
len=pos(fromstr,string)-1
if len<='0' then
prefix=''
else
prefix=substr(string,1,len)
suffix=''
suffix=substr(string,pos(fromstr,string)+length(fromstr))
newstr=prefix||tostr||suffix
return '1'

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of Bob Bridges
Sent: Monday, September 05, 2016 12:21 PM
To: TSO-***@VM.MARIST.EDU
Subject: [TSO-REXX] REPLACE function in REXX?

It's getting so I'm automating at least as much in VBA as in REXX, which leads to comical malaprops such as "for jr=1 to 5" in REXX and "nam=strip(nam)" in VBA. There's no cure for that other than paying closer attention, I suppose.

But now I'm writing something in REXX — not an Edit macro — and I want to replace one character string with another. In VBA that'd be the Replace function. For example I have a string "/home/bnt013" and I want to change it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I already have the two strings; in VBA I would write

cmd = Replace(cmd, OldACID, NewACID)

I set out to do the same thing in REXX and came up against a blank; I can't figure out REXX's analogous function. Is there one? I have a hard time believing there isn't; REXX is so powerful in the matter of string handling. I mean, I can write such a function for myself; I just feel I must be missing something obvious.

Feel free to jeer a little; it's probably right in front of my eyes.

---
Bob Bridges
***@gmail.com, cell 336 382-7313
***@InfoSecInc.com

/* Democracy is three wolves and a sheep deciding what's for dinner. -C B Low */

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions, send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Andreas Fischer
2016-09-06 06:39:15 UTC
Permalink
Raw Message
well i don't know of any rexx function that will do so, but just use parse
in a form like:

parse var cmd cmdpfx (oldacid) cmdsfx
cmd = cmdpfx !! newacid !! cmdsfx

regards,
andi


TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am 05.09.2016
19:20:40:

> Von: Bob Bridges <***@GMAIL.COM>
> An: TSO-***@VM.MARIST.EDU,
> Datum: 05.09.2016 19:21
> Betreff: [TSO-REXX] REPLACE function in REXX?
> Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
>
> It's getting so I'm automating at least as much in VBA as in REXX,
> which leads to comical malaprops such as "for jr=1 to 5" in REXX and
> "nam=strip(nam)" in VBA. There's no cure for that other than paying
> closer attention, I suppose.
>
> But now I'm writing something in REXX ? not an Edit macro ? and I
> want to replace one character string with another. In VBA that'd be
> the Replace function. For example I have a string "/home/bnt013"
> and I want to change it to "/home/bnx223", where BNT013 and BNX223
> are old and new values. I already have the two strings; in VBA I would
write
>
> cmd = Replace(cmd, OldACID, NewACID)
>
> I set out to do the same thing in REXX and came up against a blank;
> I can't figure out REXX's analogous function. Is there one? I have
> a hard time believing there isn't; REXX is so powerful in the matter
> of string handling. I mean, I can write such a function for myself;
> I just feel I must be missing something obvious.
>
> Feel free to jeer a little; it's probably right in front of my eyes.
>
> ---
> Bob Bridges
> ***@gmail.com, cell 336 382-7313
> ***@InfoSecInc.com
>
> /* Democracy is three wolves and a sheep deciding what's for dinner.
> -C B Low */
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Marco Gianfranco Indaco
2016-09-06 07:22:40 UTC
Permalink
Raw Message
To do it in rexx I suppose that you have to write a procedure...

This is mine and allow you to change 1 to n time a string but the control
of neverending changes( i.e. pchange(str,'A','AA') ) shoud be done before:
/*--------------------------------------------------------------------*/
pChange: Procedure Expose iCnt
/*--------------------------------------------------------------------*/
iCnt=0
str = Arg(1)
Do While Index(str,Arg(2)) > 0 Then Do
iCnt = iCnt + 1
tmp = DelStr(str,Index(str,Arg(2)),Length(Arg(2)))
str = Insert(Arg(3),tmp,index(str,Arg(2))-1)
If iCnt = Arg(4) Then Return str
End
Return str

not sure about ispf edit macro with large data...
hope in this.

2016-09-06 8:39 GMT+02:00 Andreas Fischer <***@generali.com>:

> well i don't know of any rexx function that will do so, but just use parse
> in a form like:
>
> parse var cmd cmdpfx (oldacid) cmdsfx
> cmd = cmdpfx !! newacid !! cmdsfx
>
> regards,
> andi
>
>
> TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am 05.09.2016
> 19:20:40:
>
> > Von: Bob Bridges <***@GMAIL.COM>
> > An: TSO-***@VM.MARIST.EDU,
> > Datum: 05.09.2016 19:21
> > Betreff: [TSO-REXX] REPLACE function in REXX?
> > Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
> >
> > It's getting so I'm automating at least as much in VBA as in REXX,
> > which leads to comical malaprops such as "for jr=1 to 5" in REXX and
> > "nam=strip(nam)" in VBA. There's no cure for that other than paying
> > closer attention, I suppose.
> >
> > But now I'm writing something in REXX ? not an Edit macro ? and I
> > want to replace one character string with another. In VBA that'd be
> > the Replace function. For example I have a string "/home/bnt013"
> > and I want to change it to "/home/bnx223", where BNT013 and BNX223
> > are old and new values. I already have the two strings; in VBA I would
> write
> >
> > cmd = Replace(cmd, OldACID, NewACID)
> >
> > I set out to do the same thing in REXX and came up against a blank;
> > I can't figure out REXX's analogous function. Is there one? I have
> > a hard time believing there isn't; REXX is so powerful in the matter
> > of string handling. I mean, I can write such a function for myself;
> > I just feel I must be missing something obvious.
> >
> > Feel free to jeer a little; it's probably right in front of my eyes.
> >
> > ---
> > Bob Bridges
> > ***@gmail.com, cell 336 382-7313
> > ***@InfoSecInc.com
> >
> > /* Democracy is three wolves and a sheep deciding what's for dinner.
> > -C B Low */
> >
> > ----------------------------------------------------------------------
> > For TSO-REXX subscribe / signoff / archive access instructions,
> > send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Andreas Fischer
2016-09-06 07:45:13 UTC
Permalink
Raw Message
i'm kind of a fan of self-written rexx functions for all kind of tasks
that will appear more than once and use such functions heavily. but for a
simple two-liner without any internal logic, i don't think that a function
or a procedure pays off. it will only cost performance.

regards,
andi


TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am 06.09.2016
09:22:53:

> Von: Marco Gianfranco Indaco <***@GMAIL.COM>
> An: TSO-***@VM.MARIST.EDU,
> Datum: 06.09.2016 09:23
> Betreff: Re: [TSO-REXX] Antwort: [TSO-REXX] REPLACE function in REXX?
> Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
>
> To do it in rexx I suppose that you have to write a procedure...
>
> This is mine and allow you to change 1 to n time a string but the
control
> of neverending changes( i.e. pchange(str,'A','AA') ) shoud be done
before:
> /*--------------------------------------------------------------------*/
> pChange: Procedure Expose iCnt
> /*--------------------------------------------------------------------*/
> iCnt=0
> str = Arg(1)
> Do While Index(str,Arg(2)) > 0 Then Do
> iCnt = iCnt + 1
> tmp = DelStr(str,Index(str,Arg(2)),Length(Arg(2)))
> str = Insert(Arg(3),tmp,index(str,Arg(2))-1)
> If iCnt = Arg(4) Then Return str
> End
> Return str
>
> not sure about ispf edit macro with large data...
> hope in this.
>
> 2016-09-06 8:39 GMT+02:00 Andreas Fischer
<***@generali.com>:
>
> > well i don't know of any rexx function that will do so, but just use
parse
> > in a form like:
> >
> > parse var cmd cmdpfx (oldacid) cmdsfx
> > cmd = cmdpfx !! newacid !! cmdsfx
> >
> > regards,
> > andi
> >
> >
> > TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am
05.09.2016
> > 19:20:40:
> >
> > > Von: Bob Bridges <***@GMAIL.COM>
> > > An: TSO-***@VM.MARIST.EDU,
> > > Datum: 05.09.2016 19:21
> > > Betreff: [TSO-REXX] REPLACE function in REXX?
> > > Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
> > >
> > > It's getting so I'm automating at least as much in VBA as in REXX,
> > > which leads to comical malaprops such as "for jr=1 to 5" in REXX and
> > > "nam=strip(nam)" in VBA. There's no cure for that other than paying
> > > closer attention, I suppose.
> > >
> > > But now I'm writing something in REXX ? not an Edit macro ? and I
> > > want to replace one character string with another. In VBA that'd be
> > > the Replace function. For example I have a string "/home/bnt013"
> > > and I want to change it to "/home/bnx223", where BNT013 and BNX223
> > > are old and new values. I already have the two strings; in VBA I
would
> > write
> > >
> > > cmd = Replace(cmd, OldACID, NewACID)
> > >
> > > I set out to do the same thing in REXX and came up against a blank;
> > > I can't figure out REXX's analogous function. Is there one? I have
> > > a hard time believing there isn't; REXX is so powerful in the matter
> > > of string handling. I mean, I can write such a function for myself;
> > > I just feel I must be missing something obvious.
> > >
> > > Feel free to jeer a little; it's probably right in front of my eyes.
> > >
> > > ---
> > > Bob Bridges
> > > ***@gmail.com, cell 336 382-7313
> > > ***@InfoSecInc.com
> > >
> > > /* Democracy is three wolves and a sheep deciding what's for dinner.
> > > -C B Low */
> > >
> > >
----------------------------------------------------------------------
> > > For TSO-REXX subscribe / signoff / archive access instructions,
> > > send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
> >
> > ----------------------------------------------------------------------
> > For TSO-REXX subscribe / signoff / archive access instructions,
> > send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
> >
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Marco Gianfranco Indaco
2016-09-06 07:59:37 UTC
Permalink
Raw Message
Two-liner without internal logic? de facto you have to remove a string and
insert a new one, if the string have the same length the best way is the
OVERLAY otherwise you need to work with the string.
I'm almost sure that using awk or sed under uss you will be able to do it
faster and in a single line... but you have other kind of costs


2016-09-06 9:45 GMT+02:00 Andreas Fischer <***@generali.com>:

> i'm kind of a fan of self-written rexx functions for all kind of tasks
> that will appear more than once and use such functions heavily. but for a
> simple two-liner without any internal logic, i don't think that a function
> or a procedure pays off. it will only cost performance.
>
> regards,
> andi
>
>
> TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am 06.09.2016
> 09:22:53:
>
> > Von: Marco Gianfranco Indaco <***@GMAIL.COM>
> > An: TSO-***@VM.MARIST.EDU,
> > Datum: 06.09.2016 09:23
> > Betreff: Re: [TSO-REXX] Antwort: [TSO-REXX] REPLACE function in REXX?
> > Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
> >
> > To do it in rexx I suppose that you have to write a procedure...
> >
> > This is mine and allow you to change 1 to n time a string but the
> control
> > of neverending changes( i.e. pchange(str,'A','AA') ) shoud be done
> before:
> > /*--------------------------------------------------------------------*/
> > pChange: Procedure Expose iCnt
> > /*--------------------------------------------------------------------*/
> > iCnt=0
> > str = Arg(1)
> > Do While Index(str,Arg(2)) > 0 Then Do
> > iCnt = iCnt + 1
> > tmp = DelStr(str,Index(str,Arg(2)),Length(Arg(2)))
> > str = Insert(Arg(3),tmp,index(str,Arg(2))-1)
> > If iCnt = Arg(4) Then Return str
> > End
> > Return str
> >
> > not sure about ispf edit macro with large data...
> > hope in this.
> >
> > 2016-09-06 8:39 GMT+02:00 Andreas Fischer
> <***@generali.com>:
> >
> > > well i don't know of any rexx function that will do so, but just use
> parse
> > > in a form like:
> > >
> > > parse var cmd cmdpfx (oldacid) cmdsfx
> > > cmd = cmdpfx !! newacid !! cmdsfx
> > >
> > > regards,
> > > andi
> > >
> > >
> > > TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am
> 05.09.2016
> > > 19:20:40:
> > >
> > > > Von: Bob Bridges <***@GMAIL.COM>
> > > > An: TSO-***@VM.MARIST.EDU,
> > > > Datum: 05.09.2016 19:21
> > > > Betreff: [TSO-REXX] REPLACE function in REXX?
> > > > Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
> > > >
> > > > It's getting so I'm automating at least as much in VBA as in REXX,
> > > > which leads to comical malaprops such as "for jr=1 to 5" in REXX and
> > > > "nam=strip(nam)" in VBA. There's no cure for that other than paying
> > > > closer attention, I suppose.
> > > >
> > > > But now I'm writing something in REXX ? not an Edit macro ? and I
> > > > want to replace one character string with another. In VBA that'd be
> > > > the Replace function. For example I have a string "/home/bnt013"
> > > > and I want to change it to "/home/bnx223", where BNT013 and BNX223
> > > > are old and new values. I already have the two strings; in VBA I
> would
> > > write
> > > >
> > > > cmd = Replace(cmd, OldACID, NewACID)
> > > >
> > > > I set out to do the same thing in REXX and came up against a blank;
> > > > I can't figure out REXX's analogous function. Is there one? I have
> > > > a hard time believing there isn't; REXX is so powerful in the matter
> > > > of string handling. I mean, I can write such a function for myself;
> > > > I just feel I must be missing something obvious.
> > > >
> > > > Feel free to jeer a little; it's probably right in front of my eyes.
> > > >
> > > > ---
> > > > Bob Bridges
> > > > ***@gmail.com, cell 336 382-7313
> > > > ***@InfoSecInc.com
> > > >
> > > > /* Democracy is three wolves and a sheep deciding what's for dinner.
> > > > -C B Low */
> > > >
> > > >
> ----------------------------------------------------------------------
> > > > For TSO-REXX subscribe / signoff / archive access instructions,
> > > > send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
> > >
> > > ----------------------------------------------------------------------
> > > For TSO-REXX subscribe / signoff / archive access instructions,
> > > send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
> > >
> >
> > ----------------------------------------------------------------------
> > For TSO-REXX subscribe / signoff / archive access instructions,
> > send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Farley, Peter x23353
2016-09-06 14:25:05 UTC
Permalink
Raw Message
If the old string is space-separated in the original string, then you can use a Parse loop to simulate "replace all old string with the replace string", with some error checking for null inputs (the replacement string can be null to delete occurrences of the old string):

REPLACE: procedure
Parse arg orig oldstr repstr .
If (orig = '') | (oldstr = '') then Return orig
newstr = ''
Do while (orig /= '')
Parse var orig pfx (oldstr) orig
newstr = newstr || pfx || repstr
End
Return newstr

But that will fail for non-space-separated values in the original string.

Peter

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of Andreas Fischer
Sent: Tuesday, September 06, 2016 2:39 AM
To: TSO-***@VM.MARIST.EDU
Subject: Antwort: [TSO-REXX] REPLACE function in REXX?

well i don't know of any rexx function that will do so, but just use parse in a form like:

parse var cmd cmdpfx (oldacid) cmdsfx
cmd = cmdpfx !! newacid !! cmdsfx

regards,
andi


TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am 05.09.2016
19:20:40:

> Von: Bob Bridges <***@GMAIL.COM>
> An: TSO-***@VM.MARIST.EDU,
> Datum: 05.09.2016 19:21
> Betreff: [TSO-REXX] REPLACE function in REXX?
> Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
>
> It's getting so I'm automating at least as much in VBA as in REXX,
> which leads to comical malaprops such as "for jr=1 to 5" in REXX and
> "nam=strip(nam)" in VBA. There's no cure for that other than paying
> closer attention, I suppose.
>
> But now I'm writing something in REXX ? not an Edit macro ? and I want
> to replace one character string with another. In VBA that'd be the
> Replace function. For example I have a string "/home/bnt013"
> and I want to change it to "/home/bnx223", where BNT013 and BNX223 are
> old and new values. I already have the two strings; in VBA I would
write
>
> cmd = Replace(cmd, OldACID, NewACID)
>
> I set out to do the same thing in REXX and came up against a blank; I
> can't figure out REXX's analogous function. Is there one? I have a
> hard time believing there isn't; REXX is so powerful in the matter of
> string handling. I mean, I can write such a function for myself; I
> just feel I must be missing something obvious.
>
> Feel free to jeer a little; it's probably right in front of my eyes.
>
---

This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system.

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Farley, Peter x23353
2016-09-06 14:33:47 UTC
Permalink
Raw Message
Oops. Forgot to check for no more occurrences of oldstr. Fixed version:

REPLACE: procedure
Parse arg orig oldstr repstr .
If (orig = '') | (oldstr = '') then Return orig
newstr = ''
Do while (orig /= '')
curr = orig
Parse var orig pfx (oldstr) orig
If (pfx /= curr) then newstr = newstr || pfx || repstr
End
Return newstr


-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of Farley, Peter x23353
Sent: Tuesday, September 06, 2016 10:25 AM
To: TSO-***@VM.MARIST.EDU
Subject: Re: Antwort: [TSO-REXX] REPLACE function in REXX?

If the old string is space-separated in the original string, then you can use a Parse loop to simulate "replace all old string with the replace string", with some error checking for null inputs (the replacement string can be null to delete occurrences of the old string):

REPLACE: procedure
Parse arg orig oldstr repstr .
If (orig = '') | (oldstr = '') then Return orig
newstr = ''
Do while (orig /= '')
Parse var orig pfx (oldstr) orig
newstr = newstr || pfx || repstr
End
Return newstr

But that will fail for non-space-separated values in the original string.

Peter

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of Andreas Fischer
Sent: Tuesday, September 06, 2016 2:39 AM
To: TSO-***@VM.MARIST.EDU
Subject: Antwort: [TSO-REXX] REPLACE function in REXX?

well i don't know of any rexx function that will do so, but just use parse in a form like:

parse var cmd cmdpfx (oldacid) cmdsfx
cmd = cmdpfx !! newacid !! cmdsfx

regards,
andi


TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am 05.09.2016
19:20:40:

> Von: Bob Bridges <***@GMAIL.COM>
> An: TSO-***@VM.MARIST.EDU,
> Datum: 05.09.2016 19:21
> Betreff: [TSO-REXX] REPLACE function in REXX?
> Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
>
> It's getting so I'm automating at least as much in VBA as in REXX,
> which leads to comical malaprops such as "for jr=1 to 5" in REXX and
> "nam=strip(nam)" in VBA. There's no cure for that other than paying
> closer attention, I suppose.
>
> But now I'm writing something in REXX ? not an Edit macro ? and I want
> to replace one character string with another. In VBA that'd be the
> Replace function. For example I have a string "/home/bnt013"
> and I want to change it to "/home/bnx223", where BNT013 and BNX223 are
> old and new values. I already have the two strings; in VBA I would
write
>
> cmd = Replace(cmd, OldACID, NewACID)
>
> I set out to do the same thing in REXX and came up against a blank; I
> can't figure out REXX's analogous function. Is there one? I have a
> hard time believing there isn't; REXX is so powerful in the matter of
> string handling. I mean, I can write such a function for myself; I
> just feel I must be missing something obvious.
>
> Feel free to jeer a little; it's probably right in front of my eyes.
>
---

This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system.

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Andreas Fischer
2016-09-06 14:35:02 UTC
Permalink
Raw Message
why should that fail for non-space-separated values? i haven't tested your
example but i never experienced any problems with using that parsing
technique, no matter if values are separated by space or not.

regards,
andi


TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am 06.09.2016
16:24:54:

> Von: "Farley, Peter x23353" <***@BROADRIDGE.COM>
> An: TSO-***@VM.MARIST.EDU,
> Datum: 06.09.2016 16:25
> Betreff: Re: [TSO-REXX] Antwort: [TSO-REXX] REPLACE function in REXX?
> Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
>
> If the old string is space-separated in the original string, then
> you can use a Parse loop to simulate "replace all old string with
> the replace string", with some error checking for null inputs (the
> replacement string can be null to delete occurrences of the old string):
>
> REPLACE: procedure
> Parse arg orig oldstr repstr .
> If (orig = '') | (oldstr = '') then Return orig
> newstr = ''
> Do while (orig /= '')
> Parse var orig pfx (oldstr) orig
> newstr = newstr || pfx || repstr
> End
> Return newstr
>
> But that will fail for non-space-separated values in the original
string.
>
> Peter
>
> -----Original Message-----
> From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On
> Behalf Of Andreas Fischer
> Sent: Tuesday, September 06, 2016 2:39 AM
> To: TSO-***@VM.MARIST.EDU
> Subject: Antwort: [TSO-REXX] REPLACE function in REXX?
>
> well i don't know of any rexx function that will do so, but just use
> parse in a form like:
>
> parse var cmd cmdpfx (oldacid) cmdsfx
> cmd = cmdpfx !! newacid !! cmdsfx
>
> regards,
> andi
>
>
> TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am 05.09.2016
> 19:20:40:
>
> > Von: Bob Bridges <***@GMAIL.COM>
> > An: TSO-***@VM.MARIST.EDU,
> > Datum: 05.09.2016 19:21
> > Betreff: [TSO-REXX] REPLACE function in REXX?
> > Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
> >
> > It's getting so I'm automating at least as much in VBA as in REXX,
> > which leads to comical malaprops such as "for jr=1 to 5" in REXX and
> > "nam=strip(nam)" in VBA. There's no cure for that other than paying
> > closer attention, I suppose.
> >
> > But now I'm writing something in REXX ? not an Edit macro ? and I want

> > to replace one character string with another. In VBA that'd be the
> > Replace function. For example I have a string "/home/bnt013"
> > and I want to change it to "/home/bnx223", where BNT013 and BNX223 are

> > old and new values. I already have the two strings; in VBA I would
> write
> >
> > cmd = Replace(cmd, OldACID, NewACID)
> >
> > I set out to do the same thing in REXX and came up against a blank; I
> > can't figure out REXX's analogous function. Is there one? I have a
> > hard time believing there isn't; REXX is so powerful in the matter of
> > string handling. I mean, I can write such a function for myself; I
> > just feel I must be missing something obvious.
> >
> > Feel free to jeer a little; it's probably right in front of my eyes.
> >
> ---
>
> This message and any attachments are intended only for the use of
> the addressee and may contain information that is privileged and
> confidential. If the reader of the message is not the intended
> recipient or an authorized representative of the intended recipient,
> you are hereby notified that any dissemination of this communication
> is strictly prohibited. If you have received this communication in
> error, please notify us immediately by e-mail and delete the message
> and any attachments from your system.
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Farley, Peter x23353
2016-09-06 14:49:58 UTC
Permalink
Raw Message
You're right, I forgot that Parse works even without space separation. Mea culpa.

Peter

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of Andreas Fischer
Sent: Tuesday, September 06, 2016 10:35 AM
To: TSO-***@VM.MARIST.EDU
Subject: Re: Antwort: [TSO-REXX] REPLACE function in REXX?

why should that fail for non-space-separated values? i haven't tested your example but i never experienced any problems with using that parsing technique, no matter if values are separated by space or not.

regards,
andi


TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am 06.09.2016
16:24:54:

> Von: "Farley, Peter x23353" <***@BROADRIDGE.COM>
> An: TSO-***@VM.MARIST.EDU,
> Datum: 06.09.2016 16:25
> Betreff: Re: [TSO-REXX] Antwort: [TSO-REXX] REPLACE function in REXX?
> Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
>
> If the old string is space-separated in the original string, then you
> can use a Parse loop to simulate "replace all old string with the
> replace string", with some error checking for null inputs (the
> replacement string can be null to delete occurrences of the old string):
>
> REPLACE: procedure
> Parse arg orig oldstr repstr .
> If (orig = '') | (oldstr = '') then Return orig newstr = ''
> Do while (orig /= '')
> Parse var orig pfx (oldstr) orig
> newstr = newstr || pfx || repstr
> End
> Return newstr
>
> But that will fail for non-space-separated values in the original
string.
>
> Peter
>
> -----Original Message-----
> From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On
> Behalf Of Andreas Fischer
> Sent: Tuesday, September 06, 2016 2:39 AM
> To: TSO-***@VM.MARIST.EDU
> Subject: Antwort: [TSO-REXX] REPLACE function in REXX?
>
> well i don't know of any rexx function that will do so, but just use
> parse in a form like:
>
> parse var cmd cmdpfx (oldacid) cmdsfx
> cmd = cmdpfx !! newacid !! cmdsfx
>
> regards,
> andi
>
>
> TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am
> 05.09.2016
> 19:20:40:
>
> > Von: Bob Bridges <***@GMAIL.COM>
> > An: TSO-***@VM.MARIST.EDU,
> > Datum: 05.09.2016 19:21
> > Betreff: [TSO-REXX] REPLACE function in REXX?
> > Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
> >
> > It's getting so I'm automating at least as much in VBA as in REXX,
> > which leads to comical malaprops such as "for jr=1 to 5" in REXX and
> > "nam=strip(nam)" in VBA. There's no cure for that other than paying
> > closer attention, I suppose.
> >
> > But now I'm writing something in REXX ? not an Edit macro ? and I
> > want

> > to replace one character string with another. In VBA that'd be the
> > Replace function. For example I have a string "/home/bnt013"
> > and I want to change it to "/home/bnx223", where BNT013 and BNX223
> > are

> > old and new values. I already have the two strings; in VBA I would
> write
> >
> > cmd = Replace(cmd, OldACID, NewACID)
> >
> > I set out to do the same thing in REXX and came up against a blank;
> > I can't figure out REXX's analogous function. Is there one? I have
> > a hard time believing there isn't; REXX is so powerful in the matter
> > of string handling. I mean, I can write such a function for myself;
> > I just feel I must be missing something obvious.
> >
> > Feel free to jeer a little; it's probably right in front of my eyes.
> >
---


This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system.

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Marco Gianfranco Indaco
2016-09-06 15:50:18 UTC
Permalink
Raw Message
Funny and shorter with parse. Maybe I'm wrong but in this case:
- trailing blanks are removed
- cannot change space with other character
right?

I tried this:
STR = 'AAA BAB CCA '
say STR
say length(str)
SAY REPLACE(str,' ','')
say length(REPLACE(str,' ',''))
SAY REPLACE(str,'A','X')
say length(REPLACE(str,'A','X'))
return
REPLACE: procedure
/*
Parse arg orig oldstr repstr .
*/
orig = Arg(1)
oldstr = Arg(2)
repstr = Arg(3)
If (orig = '') | (oldstr = '') then Return orig
newstr = ''
Do while (orig /= '')
curr = orig
Parse var orig pfx (oldstr) orig
If (pfx /= curr) then newstr = newstr || pfx || repstr
End
Return newstr


2016-09-06 16:49 GMT+02:00 Farley, Peter x23353 <***@broadridge.com
>:

> You're right, I forgot that Parse works even without space separation.
> Mea culpa.
>
> Peter
>
> -----Original Message-----
> From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf
> Of Andreas Fischer
> Sent: Tuesday, September 06, 2016 10:35 AM
> To: TSO-***@VM.MARIST.EDU
> Subject: Re: Antwort: [TSO-REXX] REPLACE function in REXX?
>
> why should that fail for non-space-separated values? i haven't tested your
> example but i never experienced any problems with using that parsing
> technique, no matter if values are separated by space or not.
>
> regards,
> andi
>
>
> TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am 06.09.2016
> 16:24:54:
>
> > Von: "Farley, Peter x23353" <***@BROADRIDGE.COM>
> > An: TSO-***@VM.MARIST.EDU,
> > Datum: 06.09.2016 16:25
> > Betreff: Re: [TSO-REXX] Antwort: [TSO-REXX] REPLACE function in REXX?
> > Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
> >
> > If the old string is space-separated in the original string, then you
> > can use a Parse loop to simulate "replace all old string with the
> > replace string", with some error checking for null inputs (the
> > replacement string can be null to delete occurrences of the old string):
> >
> > REPLACE: procedure
> > Parse arg orig oldstr repstr .
> > If (orig = '') | (oldstr = '') then Return orig newstr = ''
> > Do while (orig /= '')
> > Parse var orig pfx (oldstr) orig
> > newstr = newstr || pfx || repstr
> > End
> > Return newstr
> >
> > But that will fail for non-space-separated values in the original
> string.
> >
> > Peter
> >
> > -----Original Message-----
> > From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On
> > Behalf Of Andreas Fischer
> > Sent: Tuesday, September 06, 2016 2:39 AM
> > To: TSO-***@VM.MARIST.EDU
> > Subject: Antwort: [TSO-REXX] REPLACE function in REXX?
> >
> > well i don't know of any rexx function that will do so, but just use
> > parse in a form like:
> >
> > parse var cmd cmdpfx (oldacid) cmdsfx
> > cmd = cmdpfx !! newacid !! cmdsfx
> >
> > regards,
> > andi
> >
> >
> > TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am
> > 05.09.2016
> > 19:20:40:
> >
> > > Von: Bob Bridges <***@GMAIL.COM>
> > > An: TSO-***@VM.MARIST.EDU,
> > > Datum: 05.09.2016 19:21
> > > Betreff: [TSO-REXX] REPLACE function in REXX?
> > > Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
> > >
> > > It's getting so I'm automating at least as much in VBA as in REXX,
> > > which leads to comical malaprops such as "for jr=1 to 5" in REXX and
> > > "nam=strip(nam)" in VBA. There's no cure for that other than paying
> > > closer attention, I suppose.
> > >
> > > But now I'm writing something in REXX ? not an Edit macro ? and I
> > > want
>
> > > to replace one character string with another. In VBA that'd be the
> > > Replace function. For example I have a string "/home/bnt013"
> > > and I want to change it to "/home/bnx223", where BNT013 and BNX223
> > > are
>
> > > old and new values. I already have the two strings; in VBA I would
> > write
> > >
> > > cmd = Replace(cmd, OldACID, NewACID)
> > >
> > > I set out to do the same thing in REXX and came up against a blank;
> > > I can't figure out REXX's analogous function. Is there one? I have
> > > a hard time believing there isn't; REXX is so powerful in the matter
> > > of string handling. I mean, I can write such a function for myself;
> > > I just feel I must be missing something obvious.
> > >
> > > Feel free to jeer a little; it's probably right in front of my eyes.
> > >
> ---
>
>
> This message and any attachments are intended only for the use of the
> addressee and may contain information that is privileged and confidential.
> If the reader of the message is not the intended recipient or an authorized
> representative of the intended recipient, you are hereby notified that any
> dissemination of this communication is strictly prohibited. If you have
> received this communication in error, please notify us immediately by
> e-mail and delete the message and any attachments from your system.
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Farley, Peter x23353
2016-09-06 21:15:25 UTC
Permalink
Raw Message
True on both points, but changing "=" and "/=" to "==" and "/==", plus one more early-exit condition and an else clause in the parse loop solves both deficiencies:

STR = 'AAA BAB CCA '
say STR
say length(str)
SAY REPLACE(str,' ','')
say length(REPLACE(str,' ',''))
SAY REPLACE(str,'A','X')
say length(REPLACE(str,'A','X'))
return
REPLACE: procedure
/*
Parse arg orig oldstr repstr .
*/
orig = Arg(1)
oldstr = Arg(2)
repstr = Arg(3)
If (orig == '') | (oldstr == '') | ,
(pos(oldstr, orig) = 0) then Return orig
newstr = ''
Do while (orig /== '')
curr = orig
Parse var orig pfx (oldstr) orig
If (pfx /== curr) then newstr = newstr || pfx || repstr
else newstr = newstr || pfx
End
Return newstr

HTH

Peter

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of Marco Gianfranco Indaco
Sent: Tuesday, September 06, 2016 11:50 AM
To: TSO-***@VM.MARIST.EDU
Subject: Re: Antwort: [TSO-REXX] REPLACE function in REXX?

Funny and shorter with parse. Maybe I'm wrong but in this case:
- trailing blanks are removed
- cannot change space with other character
right?

I tried this:
STR = 'AAA BAB CCA '
say STR
say length(str)
SAY REPLACE(str,' ','')
say length(REPLACE(str,' ',''))
SAY REPLACE(str,'A','X')
say length(REPLACE(str,'A','X'))
return
REPLACE: procedure
/*
Parse arg orig oldstr repstr .
*/
orig = Arg(1)
oldstr = Arg(2)
repstr = Arg(3)
If (orig = '') | (oldstr = '') then Return orig
newstr = ''
Do while (orig /= '')
curr = orig
Parse var orig pfx (oldstr) orig
If (pfx /= curr) then newstr = newstr || pfx || repstr
End
Return newstr


2016-09-06 16:49 GMT+02:00 Farley, Peter x23353 <***@broadridge.com
>:

> You're right, I forgot that Parse works even without space separation.
> Mea culpa.
>
> Peter
>
> -----Original Message-----
> From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf
> Of Andreas Fischer
> Sent: Tuesday, September 06, 2016 10:35 AM
> To: TSO-***@VM.MARIST.EDU
> Subject: Re: Antwort: [TSO-REXX] REPLACE function in REXX?
>
> why should that fail for non-space-separated values? i haven't tested your
> example but i never experienced any problems with using that parsing
> technique, no matter if values are separated by space or not.
>
> regards,
> andi
>
>
> TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am 06.09.2016
> 16:24:54:
>
> > Von: "Farley, Peter x23353" <***@BROADRIDGE.COM>
> > An: TSO-***@VM.MARIST.EDU,
> > Datum: 06.09.2016 16:25
> > Betreff: Re: [TSO-REXX] Antwort: [TSO-REXX] REPLACE function in REXX?
> > Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
> >
> > If the old string is space-separated in the original string, then you
> > can use a Parse loop to simulate "replace all old string with the
> > replace string", with some error checking for null inputs (the
> > replacement string can be null to delete occurrences of the old string):
> >
> > REPLACE: procedure
> > Parse arg orig oldstr repstr .
> > If (orig = '') | (oldstr = '') then Return orig newstr = ''
> > Do while (orig /= '')
> > Parse var orig pfx (oldstr) orig
> > newstr = newstr || pfx || repstr
> > End
> > Return newstr
> >
> > But that will fail for non-space-separated values in the original
> string.
> >
> > Peter
> >
> > -----Original Message-----
> > From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On
> > Behalf Of Andreas Fischer
> > Sent: Tuesday, September 06, 2016 2:39 AM
> > To: TSO-***@VM.MARIST.EDU
> > Subject: Antwort: [TSO-REXX] REPLACE function in REXX?
> >
> > well i don't know of any rexx function that will do so, but just use
> > parse in a form like:
> >
> > parse var cmd cmdpfx (oldacid) cmdsfx
> > cmd = cmdpfx !! newacid !! cmdsfx
> >
> > regards,
> > andi
> >
> >
> > TSO REXX Discussion List <TSO-***@VM.MARIST.EDU> schrieb am
> > 05.09.2016
> > 19:20:40:
> >
> > > Von: Bob Bridges <***@GMAIL.COM>
> > > An: TSO-***@VM.MARIST.EDU,
> > > Datum: 05.09.2016 19:21
> > > Betreff: [TSO-REXX] REPLACE function in REXX?
> > > Gesendet von: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU>
> > >
> > > It's getting so I'm automating at least as much in VBA as in REXX,
> > > which leads to comical malaprops such as "for jr=1 to 5" in REXX and
> > > "nam=strip(nam)" in VBA. There's no cure for that other than paying
> > > closer attention, I suppose.
> > >
> > > But now I'm writing something in REXX ? not an Edit macro ? and I
> > > want
>
> > > to replace one character string with another. In VBA that'd be the
> > > Replace function. For example I have a string "/home/bnt013"
> > > and I want to change it to "/home/bnx223", where BNT013 and BNX223
> > > are
>
> > > old and new values. I already have the two strings; in VBA I would
> > write
> > >
> > > cmd = Replace(cmd, OldACID, NewACID)
> > >
> > > I set out to do the same thing in REXX and came up against a blank;
> > > I can't figure out REXX's analogous function. Is there one? I have
> > > a hard time believing there isn't; REXX is so powerful in the matter
> > > of string handling. I mean, I can write such a function for myself;
> > > I just feel I must be missing something obvious.
> > >
> > > Feel free to jeer a little; it's probably right in front of my eyes.
> > >
---


This message and any attachments are intended only for the use of the addressee and may contain information that is privileged and confidential. If the reader of the message is not the intended recipient or an authorized representative of the intended recipient, you are hereby notified that any dissemination of this communication is strictly prohibited. If you have received this communication in error, please notify us immediately by e-mail and delete the message and any attachments from your system.
Höglund Lars
2016-09-06 08:17:28 UTC
Permalink
Raw Message
You can give this a try...

/* rexx **************************************************************/
/* */
/* NAME - TRANSTR */
/* FUNCTION - Translate "variable" in input string. */
/* RELATED TO - REXX extended functions */
/* */
/* Logic: */
/* */
/* A = transtr('A B C','D','B') */
/* A is then 'A D C' */
/* */
/* */
/* CHANGE LOG: */
/* DATE UID TEXT */
/* */
/*********************************************************************/
string = arg(1)
setname = arg(2)
varname = translate(arg(3))
sl = length(setname)
vl = length(varname)
b = 1

do while pos(varname,translate(string),b) <> 0
b = pos(varname,translate(string),b)
string = left(string,b-1) !! setname !! substr(string,b + vl)
b = b + sl
end /*do while pos(varname,translate(string),b) <> 0*/

return string

//Lasse

-----Ursprungligt meddelande-----
Från: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] För Bob Bridges
Skickat: den 5 september 2016 19:21
Till: TSO-***@VM.MARIST.EDU
Ämne: [TSO-REXX] REPLACE function in REXX?

It's getting so I'm automating at least as much in VBA as in REXX, which leads to comical malaprops such as "for jr=1 to 5" in REXX and "nam=strip(nam)" in VBA. There's no cure for that other than paying closer attention, I suppose.

But now I'm writing something in REXX — not an Edit macro — and I want to replace one character string with another. In VBA that'd be the Replace function. For example I have a string "/home/bnt013" and I want to change it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I already have the two strings; in VBA I would write

cmd = Replace(cmd, OldACID, NewACID)

I set out to do the same thing in REXX and came up against a blank; I can't figure out REXX's analogous function. Is there one? I have a hard time believing there isn't; REXX is so powerful in the matter of string handling. I mean, I can write such a function for myself; I just feel I must be missing something obvious.

Feel free to jeer a little; it's probably right in front of my eyes.

---
Bob Bridges
***@gmail.com, cell 336 382-7313
***@InfoSecInc.com

/* Democracy is three wolves and a sheep deciding what's for dinner. -C B Low */

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions, send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
MARC IRVIN
2016-09-08 06:10:36 UTC
Permalink
Raw Message
 I have attached a program that does find/replace in text and words, and
has options for case sensitivity, multiple find values, and more.   I
have more advanced versions that also include screening for literals and
or comments.
 Marc Irvin

>

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
David Spiegel
2016-09-08 10:03:38 UTC
Permalink
Raw Message
What's with the double equal signs for comparison? ... Rexx is not C (It's a lot easier to code!), and therefore double equal signs are not necessary.

-------- Forwarded Message --------
Subject: Re: [TSO-REXX] SV: [TSO-REXX] REPLACE function in REXX?
Date: Thu, 8 Sep 2016 01:13:16 -0400
From: MARC IRVIN <***@OPTONLINE.NET><mailto:***@OPTONLINE.NET>
Reply-To: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU><mailto:TSO-***@VM.MARIST.EDU>
To: TSO-***@VM.MARIST.EDU<mailto:TSO-***@VM.MARIST.EDU>



I have attached a program that does find/replace in text and words, and
has options for case sensitivity, multiple find values, and more. I
have more advanced versions that also include screening for literals and
or comments.
Marc Irvin

>

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU<mailto:***@VM.MARIST.EDU> with the message: INFO TSO-REXX
Bill Turner, WB4ALM
2016-09-08 10:31:25 UTC
Permalink
Raw Message
double equal signs (==) is an EXACT equal compare
single equal sign (=) is an "approximate" equal compare. (Blanks padding
is allowed.)

if a = '' will compare against a null string and against a string
filled with blanks
if a == '' will not compare against a string filled with blanks.

/s/ Bill Turner, wb4alm



On 09/08/2016 06:03 AM, David Spiegel wrote:
> What's with the double equal signs for comparison? ... Rexx is not C (It's a lot easier to code!), and therefore double equal signs are not necessary.
>
> -------- Forwarded Message --------
> Subject: Re: [TSO-REXX] SV: [TSO-REXX] REPLACE function in REXX?
> Date: Thu, 8 Sep 2016 01:13:16 -0400
> From: MARC IRVIN <***@OPTONLINE.NET><mailto:***@OPTONLINE.NET>
> Reply-To: TSO REXX Discussion List <TSO-***@VM.MARIST.EDU><mailto:TSO-***@VM.MARIST.EDU>
> To: TSO-***@VM.MARIST.EDU<mailto:TSO-***@VM.MARIST.EDU>
>
>
>
> I have attached a program that does find/replace in text and words, and
> has options for case sensitivity, multiple find values, and more. I
> have more advanced versions that also include screening for literals and
> or comments.
> Marc Irvin
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU<mailto:***@VM.MARIST.EDU> with the message: INFO TSO-REXX
>
>

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Aviatrexx
2016-09-06 15:40:54 UTC
Permalink
Raw Message
No jeering necessary, Bob. The string-replace built-in function should be in TSO/REXX. It's a shame that it isn't, and should be an embarrassment to IBM that none of their mainframe Rexx interpreters are ANSI Standard compliant. It's been a mere twenty years since it was published. Perhaps if more customers were to demand the same ANSI-compliance that Regina or Open Object Rexx provide, they would consider it.

As for your problem, there are essentially two solutions depending on your knowledge of your data: a simple one, and a really simple one.

If you know that the string you wish to replace is the first occurrence in the record, and is not the very last characters of the record, the following should suffice:

Parse Var record before (ver) after
newrec = before || rep || after

(Extra credit if you are old enough to know where the terms 'ver' & 'rep' come from. :-)

Alternatively, you could create your own ChangeStr() BIF by copying the code directly from the ANSI Standard for Rexx. Most folks aren't aware that ANSI Standard X3.274 was the first (and AFAIK still the only) ANSI Standard written in the programming language that it defines. This speaks volumes about the power and expressiveness of the Rexx language.

Here is the ANSI definition of the ChangeStr() built-in function:

/* ChangeStr(ver, str, rep) */
/* Returns 'str' with all occurrences of 'ver' replaced with 'rep' */
parse arg Ver, Input, Rep
Output = ''
Position = 1
do forever
FoundPos = pos( Ver, Input, Position )
if FoundPos = 0 then leave
Output = Output || substr( Input, Position, FoundPos - Position ) ,
|| Rep
Position = FoundPos + length( Ver )
end
return Output || substr( Input, Position )

(Only very minor editorial changes were made to make the variable names more sensible.)

A copy of ANSI X3.274 can be found here if you are curious:

http://www.rexxla.org/rexxlang/standards/

HTH, YMMV, etc.

-Chip-

On Monday, September 5, 2016 at 1:20:55 PM UTC-4, Bob Bridges wrote:
> It's getting so I'm automating at least as much in VBA as in REXX, which leads to comical malaprops such as "for jr=1 to 5" in REXX and "nam=strip(nam)" in VBA. There's no cure for that other than paying closer attention, I suppose.
>
> But now I'm writing something in REXX — not an Edit macro — and I want to replace one character string with another. In VBA that'd be the Replace function. For example I have a string "/home/bnt013" and I want to change it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I already have the two strings; in VBA I would write
>
> cmd = Replace(cmd, OldACID, NewACID)
>
> I set out to do the same thing in REXX and came up against a blank; I can't figure out REXX's analogous function. Is there one? I have a hard time believing there isn't; REXX is so powerful in the matter of string handling. I mean, I can write such a function for myself; I just feel I must be missing something obvious.
>
> Feel free to jeer a little; it's probably right in front of my eyes.
>
> ---
> Bob Bridges
> ***@gmail.com, cell 336 382-7313
> ***@InfoSecInc.com
Gerard Schildberger
2016-09-06 18:20:05 UTC
Permalink
Raw Message
On Monday, September 5, 2016 at 12:20:55 PM UTC-5, Bob Bridges wrote:
> It's getting so I'm automating at least as much in VBA as in REXX, which leads to comical malaprops such as "for jr=1 to 5" in REXX and "nam=strip(nam)" in VBA. There's no cure for that other than paying closer attention, I suppose.
>
> But now I'm writing something in REXX — not an Edit macro — and I want to replace one character string with another. In VBA that'd be the Replace function. For example I have a string "/home/bnt013" and I want to change it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I already have the two strings; in VBA I would write
>
> cmd = Replace(cmd, OldACID, NewACID)
>
> I set out to do the same thing in REXX and came up against a blank; I can't figure out REXX's analogous function. Is there one? I have a hard time believing there isn't; REXX is so powerful in the matter of string handling. I mean, I can write such a function for myself; I just feel I must be missing something obvious.
>
> Feel free to jeer a little; it's probably right in front of my eyes.

I wrote a CHANGESTR function (that implements the ANSI version). It
has more functionality added. To view my version, it can be seen (and/or
downloaded) from the Rosetta Code site:

http://rosettacode.org/wiki/CHANGESTR.REX

It properly handles [nulls] for any of the strings (old, haystack, new).
It can also limit the number of changes, allows the specification when to
start changing (starting with a particular occurrence), and also allows
where (the character position) to start the changes. I tried to code the
function to catch as many (specification) errors as possible.
_______________________________________________________ Gerard Schildberger
Robin
2016-09-06 22:00:16 UTC
Permalink
Raw Message
I don't have any platform on which to test. I have reviewed most entries in this thread. I suggest that exploiting the full capability of a rexx function/subroutine will yield the desired result regardless of the values (including spaces or null). The routine expects 3 arguments namely 'text', 'old', 'new'

Substitution:
If find(arg(1),arg(2)) = 0 return arg(1)
Parse var (arg(1)) left (arg(2)) right
Return left !! arg(2) !! right /* no concat symbol on my keyboard */

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of Bob Bridges
Sent: September 5, 2016 1:21 PM
To: TSO-***@VM.MARIST.EDU
Subject: [TSO-REXX] REPLACE function in REXX?

It's getting so I'm automating at least as much in VBA as in REXX, which leads to comical malaprops such as "for jr=1 to 5" in REXX and "nam=strip(nam)" in VBA. There's no cure for that other than paying closer attention, I suppose.

But now I'm writing something in REXX — not an Edit macro — and I want to replace one character string with another. In VBA that'd be the Replace function. For example I have a string "/home/bnt013" and I want to change it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I already have the two strings; in VBA I would write

cmd = Replace(cmd, OldACID, NewACID)

I set out to do the same thing in REXX and came up against a blank; I can't figure out REXX's analogous function. Is there one? I have a hard time believing there isn't; REXX is so powerful in the matter of string handling. I mean, I can write such a function for myself; I just feel I must be missing something obvious.

Feel free to jeer a little; it's probably right in front of my eyes.

---
Bob Bridges
***@gmail.com, cell 336 382-7313
***@InfoSecInc.com

/* Democracy is three wolves and a sheep deciding what's for dinner. -C B Low */

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions, send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Marco Gianfranco Indaco
2016-09-07 06:44:07 UTC
Permalink
Raw Message
Thank Peter, this is probably the best way... I stopped using parse for
this but can't remember why...


2016-09-07 0:00 GMT+02:00 Robin <***@gmail.com>:

> I don't have any platform on which to test. I have reviewed most entries
> in this thread. I suggest that exploiting the full capability of a rexx
> function/subroutine will yield the desired result regardless of the values
> (including spaces or null). The routine expects 3 arguments namely 'text',
> 'old', 'new'
>
> Substitution:
> If find(arg(1),arg(2)) = 0 return arg(1)
> Parse var (arg(1)) left (arg(2)) right
> Return left !! arg(2) !! right /* no concat symbol on my
> keyboard */
>
> -----Original Message-----
> From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf
> Of Bob Bridges
> Sent: September 5, 2016 1:21 PM
> To: TSO-***@VM.MARIST.EDU
> Subject: [TSO-REXX] REPLACE function in REXX?
>
> It's getting so I'm automating at least as much in VBA as in REXX, which
> leads to comical malaprops such as "for jr=1 to 5" in REXX and
> "nam=strip(nam)" in VBA. There's no cure for that other than paying closer
> attention, I suppose.
>
> But now I'm writing something in REXX — not an Edit macro — and I want to
> replace one character string with another. In VBA that'd be the Replace
> function. For example I have a string "/home/bnt013" and I want to change
> it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I
> already have the two strings; in VBA I would write
>
> cmd = Replace(cmd, OldACID, NewACID)
>
> I set out to do the same thing in REXX and came up against a blank; I
> can't figure out REXX's analogous function. Is there one? I have a hard
> time believing there isn't; REXX is so powerful in the matter of string
> handling. I mean, I can write such a function for myself; I just feel I
> must be missing something obvious.
>
> Feel free to jeer a little; it's probably right in front of my eyes.
>
> ---
> Bob Bridges
> ***@gmail.com, cell 336 382-7313
> ***@InfoSecInc.com
>
> /* Democracy is three wolves and a sheep deciding what's for dinner. -C B
> Low */
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions, send email
> to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Mickey Bee
2016-09-07 19:37:23 UTC
Permalink
Raw Message
off topic, yet on topic, the split bar on the PC keyboard will translate to
the solid bar on the mainframe on *most* decent emulators :)

Mickey

-----Original Message-----
From: Robin
Sent: Tuesday, September 06, 2016 6:00 PM
To: TSO-***@VM.MARIST.EDU
Subject: Re: [TSO-REXX] REPLACE function in REXX?

I don't have any platform on which to test. I have reviewed most entries in
this thread. I suggest that exploiting the full capability of a rexx
function/subroutine will yield the desired result regardless of the values
(including spaces or null). The routine expects 3 arguments namely 'text',
'old', 'new'

Substitution:
If find(arg(1),arg(2)) = 0 return arg(1)
Parse var (arg(1)) left (arg(2)) right
Return left !! arg(2) !! right /* no concat symbol on my keyboard */

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of
Bob Bridges
Sent: September 5, 2016 1:21 PM
To: TSO-***@VM.MARIST.EDU
Subject: [TSO-REXX] REPLACE function in REXX?

It's getting so I'm automating at least as much in VBA as in REXX, which
leads to comical malaprops such as "for jr=1 to 5" in REXX and
"nam=strip(nam)" in VBA. There's no cure for that other than paying closer
attention, I suppose.

But now I'm writing something in REXX — not an Edit macro — and I want to
replace one character string with another. In VBA that'd be the Replace
function. For example I have a string "/home/bnt013" and I want to change
it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I
already have the two strings; in VBA I would write

cmd = Replace(cmd, OldACID, NewACID)

I set out to do the same thing in REXX and came up against a blank; I can't
figure out REXX's analogous function. Is there one? I have a hard time
believing there isn't; REXX is so powerful in the matter of string handling.
I mean, I can write such a function for myself; I just feel I must be
missing something obvious.

Feel free to jeer a little; it's probably right in front of my eyes.

---
Bob Bridges
***@gmail.com, cell 336 382-7313
***@InfoSecInc.com

/* Democracy is three wolves and a sheep deciding what's for dinner. -C B
Low */

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions, send email
to ***@VM.MARIST.EDU with the message: INFO TSO-REXX

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX


---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Robin
2016-09-07 11:24:39 UTC
Permalink
Raw Message
I don't have any platform on which to test. I have reviewed most entries in this thread. I suggest that exploiting the full capability of a rexx function/subroutine will yield the desired result regardless of the values (including spaces or null). The routine expects 3 arguments namely 'text', 'old', 'new'.

Desk checking I spotted some errors and realized recursion for multiple ocurrances is possible

Substitution:
If find(arg(1),arg(2)) = 0 return arg(1)
Parse value(arg(1)) with left (arg(2)) right
Return left || arg(3) || substitution(right,arg(2),arg(3))

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Robert Zenuk
2016-09-07 23:21:34 UTC
Permalink
Raw Message
Late to the party... Here is my version...

say chgstr('xexexe','qq','xe')
say chgstr('xexexe','ae','k')
say chgstr('xexexe','ae','e')
say chgstr('xexexe','Q','xexex')
say chgstr('xexe xe xe xexex','ll','e')
say chgstr('xexe xe xe xexex','f','xe')
say chgstr('aaaa','1','a')
say chgstr('zzzz','26','z')
say chgstr('zzzz','-AAAAA-','z')
say chgstr('error','xx')
say chgstr('JOHN JACOB GEORGE SCHMIDT','JINGLEHEIMER','GEORGE')
say chgstr('JOHN JACOB GEORGE SCHMIDT','*',' ')
say chgstr('the quick brown fox','SLOW RED','quick brown')
exit 0
chgstr: procedure
if arg() <> 3 then
return 'chgstr: missing args, must have string, new and old'
string = arg(1)
new = arg(2)
old = arg(3)
lnew = length(new)
lold = length(old)
x = 1
do forever
if pos(old,string,x) = 0 then return string
x = pos(old,string,x)
string = insert(new,delstr(string,x,lold),x-1,lnew)
x = x + length(new)
end

Rob


-----Original Message-----
From: Robin <***@GMAIL.COM>
To: TSO-REXX <TSO-***@VM.MARIST.EDU>
Sent: Wed, Sep 7, 2016 4:24 am
Subject: Re: REPLACE function in REXX?

I don't have any platform on which to test. I have reviewed most entries in this thread. I suggest that exploiting the full capability of a rexx function/subroutine will yield the desired result regardless of the values (including spaces or null). The routine expects 3 arguments namely 'text', 'old', 'new'.

Desk checking I spotted some errors and realized recursion for multiple ocurrances is possible

Substitution:
If find(arg(1),arg(2)) = 0 return arg(1)
Parse value(arg(1)) with left (arg(2)) right
Return left || arg(3) || substitution(right,arg(2),arg(3))

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX


----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Walter Pachl
2016-09-08 12:56:31 UTC
Permalink
Raw Message
Why not
chgstr: procedure
if arg() <> 3 then
return 'chgstr: missing args, must have string, new and old'
Parse Arg string,new,old
lnew = length(new)
lold = length(old)
x = 1
do forever
if pos(old,string,x) = 0 then return string
x = pos(old,string,x)
string = insert(new,delstr(string,x,lold),x-1,lnew)
x = x + length(new)
end
Same function, Better reading !?!
Walter

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of Robert Zenuk
Sent: Donnerstag, 8. September 2016 01:22
To: TSO-***@VM.MARIST.EDU
Subject: Re: [TSO-REXX] REPLACE function in REXX?

Late to the party... Here is my version...
...

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Hardee, Chuck
2016-09-08 13:43:58 UTC
Permalink
Raw Message
Why execute the POS() call more than once?
Why execute a call to LENGTH() more than necessary?

chgstr: procedure
if arg() <> 3 then
return 'chgstr: missing args, must have string, new and old'
Parse Arg string,new,old
lnew = length(new)
lold = length(old)
x = 1
do forever
x = pos(old,string,x)
if x = 0 then return string
string = insert(new,delstr(string,x,lold),x-1,lnew)
x = x + lnew
end

That's my 2₵ for whatever it's worth. :)

Outside of those changes, I would (personaly) prefer using ARG(n) instead of pares:

Parse Arg string,new,old
string = arg(1)
new = arg(2)
old = arg(3)


C-

Charles (Chuck) Hardee
Senior Systems Engineer/Database Administration
EAS Information Technology

Thermo Fisher Scientific
300 Industry Drive | Pittsburgh, PA 15275
Phone +1 (724) 517-2633 | Mobile +1 (412) 877-2809 | FAX: +1 (412) 490-9230
***@ThermoFisher.com | www.thermofisher.com

WORLDWIDE CONFIDENTIALITY NOTE: Dissemination, distribution or copying of this e-mail or the information herein by anyone other than the intended recipient, or an employee or agent of a system responsible for delivering the message to the intended recipient, is prohibited. If you are not the intended recipient, please inform the sender and delete all copies.

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of Walter Pachl
Sent: Thursday, September 08, 2016 8:54 AM
To: TSO-***@VM.MARIST.EDU
Subject: Re: [TSO-REXX] REPLACE function in REXX?

Why not
chgstr: procedure
if arg() <> 3 then
return 'chgstr: missing args, must have string, new and old'
Parse Arg string,new,old
lnew = length(new)
lold = length(old)
x = 1
do forever
if pos(old,string,x) = 0 then return string
x = pos(old,string,x)
string = insert(new,delstr(string,x,lold),x-1,lnew)
x = x + length(new)
end
Same function, Better reading !?!
Walter

-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of Robert Zenuk
Sent: Donnerstag, 8. September 2016 01:22
To: TSO-***@VM.MARIST.EDU
Subject: Re: [TSO-REXX] REPLACE function in REXX?

Late to the party... Here is my version...
...

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Walter Pachl
2016-09-08 13:54:22 UTC
Permalink
Raw Message
Why execute the POS() call more than once?
Notice POS' third argument replacing 'A' by 'A' is safe that way.
Why execute a call to LENGTH() more than necessary?
Where do you see that? The lengths may be different
Outside of those changes, I would (personaly) prefer using ARG(n) instead of pares:
That's my 2 (Euro)cents improvement
But beauty (readability) is in the eye of...
Walter

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Walter Pachl
2016-09-08 13:56:02 UTC
Permalink
Raw Message
Oops I see. Length of old ain't necessary.
Good catch!

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Walter Pachl
2016-09-08 13:56:58 UTC
Permalink
Raw Message
Oops the second! lold IS used!!!

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Bill Ashton
2016-09-08 15:06:02 UTC
Permalink
Raw Message
I had done some testing a while ago, and the PARSE statement is much
quicker than simple assign statements.

Billy

On Thu, Sep 8, 2016 at 9:55 AM, Walter Pachl <***@chello.at>
wrote:

> Oops the second! lold IS used!!!
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>



--
Thank you and best regards,
*Billy Ashton*

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Hardee, Chuck
2016-09-08 15:14:19 UTC
Permalink
Raw Message
That's good to know!
Thanks Billy!

Charles (Chuck) Hardee
Senior Systems Engineer/Database Administration
EAS Information Technology

Thermo Fisher Scientific
300 Industry Drive | Pittsburgh, PA 15275
Phone +1 (724) 517-2633 | Mobile +1 (412) 877-2809 | FAX: +1 (412) 490-9230
***@ThermoFisher.com | www.thermofisher.com

WORLDWIDE CONFIDENTIALITY NOTE: Dissemination, distribution or copying of this e-mail or the information herein by anyone other than the intended recipient, or an employee or agent of a system responsible for delivering the message to the intended recipient, is prohibited. If you are not the intended recipient, please inform the sender and delete all copies.


-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of Bill Ashton
Sent: Thursday, September 08, 2016 11:04 AM
To: TSO-***@VM.MARIST.EDU
Subject: Re: [TSO-REXX] REPLACE function in REXX?

I had done some testing a while ago, and the PARSE statement is much
quicker than simple assign statements.

Billy

On Thu, Sep 8, 2016 at 9:55 AM, Walter Pachl <***@chello.at>
wrote:

> Oops the second! lold IS used!!!
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>



--
Thank you and best regards,
*Billy Ashton*

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Marco Gianfranco Indaco
2016-09-09 07:36:01 UTC
Permalink
Raw Message
Thanks Billy.
In the Robin's approach the factorial replace is the best approach instead
of a loop?
How these affect I/O cost and performances? We are talking about a function
that is used strongly... I made mistakes using delstr and insert but we are
playing together so I think that this symposium will be proficient for all
our minds...

Thanks in advance

2016-09-08 17:12 GMT+02:00 Hardee, Chuck <***@thermofisher.com>:

> That's good to know!
> Thanks Billy!
>
> Charles (Chuck) Hardee
> Senior Systems Engineer/Database Administration
> EAS Information Technology
>
> Thermo Fisher Scientific
> 300 Industry Drive | Pittsburgh, PA 15275
> Phone +1 (724) 517-2633 | Mobile +1 (412) 877-2809 | FAX: +1 (412)
> 490-9230
> ***@ThermoFisher.com | www.thermofisher.com
>
> WORLDWIDE CONFIDENTIALITY NOTE: Dissemination, distribution or copying of
> this e-mail or the information herein by anyone other than the intended
> recipient, or an employee or agent of a system responsible for delivering
> the message to the intended recipient, is prohibited. If you are not the
> intended recipient, please inform the sender and delete all copies.
>
>
> -----Original Message-----
> From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf
> Of Bill Ashton
> Sent: Thursday, September 08, 2016 11:04 AM
> To: TSO-***@VM.MARIST.EDU
> Subject: Re: [TSO-REXX] REPLACE function in REXX?
>
> I had done some testing a while ago, and the PARSE statement is much
> quicker than simple assign statements.
>
> Billy
>
> On Thu, Sep 8, 2016 at 9:55 AM, Walter Pachl <***@chello.at
> >
> wrote:
>
> > Oops the second! lold IS used!!!
> >
> > ----------------------------------------------------------------------
> > For TSO-REXX subscribe / signoff / archive access instructions,
> > send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
> >
>
>
>
> --
> Thank you and best regards,
> *Billy Ashton*
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Paul Gilmartin
2016-09-08 16:22:41 UTC
Permalink
Raw Message
On 2016-09-08, at 09:03, Bill Ashton wrote:

> I had done some testing a while ago, and the PARSE statement is much
> quicker than simple assign statements.
>
I'm skeptical. But I'm confident that PARSE is quicker than SUBSTR().
I attrbute this to function call-return overhead. So:

PARSE UPPER ARG X

Rather than:

X = TRANSLATE( ARG( 1 ) )

Rule of thumb: Use <, =, > to compare numbers; use <<, ==, >> to compare strings.

Fear not the ==! If it makes C programmers more comfortable, we should
welcome the newcomers.

I need to try:

SAY '8100'X >> '81'X /* Does it CLCL with blank padding? */

-- gil

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Gerard Schildberger
2016-09-08 23:04:51 UTC
Permalink
Raw Message
On Thursday, September 8, 2016 at 11:23:06 AM UTC-5, Paul Gilmartin wrote:
> On 2016-09-08, at 09:03, Bill Ashton wrote:
>
> > I had done some testing a while ago, and the PARSE statement is much
> > quicker than simple assign statements.
> >
> I'm skeptical. But I'm confident that PARSE is quicker than SUBSTR().
> I attrbute this to function call-return overhead. So:
>
> PARSE UPPER ARG X
>
> Rather than:
>
> X = TRANSLATE( ARG( 1 ) )

----- snip ----- snip ----- snip -----

Or better still: arg x


And, yes, the (or any) BIF invocation and return overhead
(saving/restoring all kinds of "stuff") is substantial, but
you needed worry about it unless you want the performance gain
when invoking it thousands of times, for instance.


parse arg x
---versus---
x=arg(1)


is measurable (the PARSE is faster).
__________________________________________ Gerard Schildberger
Roger Suhr
2016-09-08 18:44:13 UTC
Permalink
Raw Message
Look at the OVERLAY ()function. It may do what you need done.

On Sep 5, 2016 13:22, "Bob Bridges" <***@gmail.com> wrote:

> It's getting so I'm automating at least as much in VBA as in REXX, which
> leads to comical malaprops such as "for jr=1 to 5" in REXX and
> "nam=strip(nam)" in VBA. There's no cure for that other than paying closer
> attention, I suppose.
>
> But now I'm writing something in REXX — not an Edit macro — and I want to
> replace one character string with another. In VBA that'd be the Replace
> function. For example I have a string "/home/bnt013" and I want to change
> it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I
> already have the two strings; in VBA I would write
>
> cmd = Replace(cmd, OldACID, NewACID)
>
> I set out to do the same thing in REXX and came up against a blank; I
> can't figure out REXX's analogous function. Is there one? I have a hard
> time believing there isn't; REXX is so powerful in the matter of string
> handling. I mean, I can write such a function for myself; I just feel I
> must be missing something obvious.
>
> Feel free to jeer a little; it's probably right in front of my eyes.
>
> ---
> Bob Bridges
> ***@gmail.com, cell 336 382-7313
> ***@InfoSecInc.com
>
> /* Democracy is three wolves and a sheep deciding what's for dinner. -C B
> Low */
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
David Bishop
2016-09-09 00:39:14 UTC
Permalink
Raw Message
With so many suggestions and examples in this thread Bob, I'm curious to know what REXX avenue you decided to pursue?

David Bishop


> On Sep 5, 2016, at 11:20, Bob Bridges <***@GMAIL.COM> wrote:
>
> It's getting so I'm automating at least as much in VBA as in REXX, which leads to comical malaprops such as "for jr=1 to 5" in REXX and "nam=strip(nam)" in VBA. There's no cure for that other than paying closer attention, I suppose.
>
> But now I'm writing something in REXX — not an Edit macro — and I want to replace one character string with another. In VBA that'd be the Replace function. For example I have a string "/home/bnt013" and I want to change it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I already have the two strings; in VBA I would write
>
> cmd = Replace(cmd, OldACID, NewACID)
>
> I set out to do the same thing in REXX and came up against a blank; I can't figure out REXX's analogous function. Is there one? I have a hard time believing there isn't; REXX is so powerful in the matter of string handling. I mean, I can write such a function for myself; I just feel I must be missing something obvious.
>
> Feel free to jeer a little; it's probably right in front of my eyes.
>
> ---
> Bob Bridges
> ***@gmail.com, cell 336 382-7313
> ***@InfoSecInc.com
>
> /* Democracy is three wolves and a sheep deciding what's for dinner. -C B Low */
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Roger Suhr
2016-09-09 02:11:53 UTC
Permalink
Raw Message
When OVERLAY () doesn't do what I want I also use DEL() followed by INSERT
() at the same position. I'm not very concerned about function call
overhead. After all we're using an interpreter. Compiled REXX may help
with that.

On Sep 8, 2016 20:41, "David Bishop" <***@gmail.com> wrote:

> With so many suggestions and examples in this thread Bob, I'm curious to
> know what REXX avenue you decided to pursue?
>
> David Bishop
>
>
> > On Sep 5, 2016, at 11:20, Bob Bridges <***@GMAIL.COM> wrote:
> >
> > It's getting so I'm automating at least as much in VBA as in REXX, which
> leads to comical malaprops such as "for jr=1 to 5" in REXX and
> "nam=strip(nam)" in VBA. There's no cure for that other than paying closer
> attention, I suppose.
> >
> > But now I'm writing something in REXX — not an Edit macro — and I want
> to replace one character string with another. In VBA that'd be the Replace
> function. For example I have a string "/home/bnt013" and I want to change
> it to "/home/bnx223", where BNT013 and BNX223 are old and new values. I
> already have the two strings; in VBA I would write
> >
> > cmd = Replace(cmd, OldACID, NewACID)
> >
> > I set out to do the same thing in REXX and came up against a blank; I
> can't figure out REXX's analogous function. Is there one? I have a hard
> time believing there isn't; REXX is so powerful in the matter of string
> handling. I mean, I can write such a function for myself; I just feel I
> must be missing something obvious.
> >
> > Feel free to jeer a little; it's probably right in front of my eyes.
> >
> > ---
> > Bob Bridges
> > ***@gmail.com, cell 336 382-7313
> > ***@InfoSecInc.com
> >
> > /* Democracy is three wolves and a sheep deciding what's for dinner. -C
> B Low */
> >
> > ----------------------------------------------------------------------
> > For TSO-REXX subscribe / signoff / archive access instructions,
> > send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions,
> send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
>

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Bob Bridges
2016-09-09 16:56:05 UTC
Permalink
Raw Message
I got busy with something else and haven't chosen yet. I still plan to come back to it, and soon.

Before I do, though, I'm going to pose another question to the listserv that will affect how I approach it. You'll see a new post soon so don't start replying in this thread and confuse everything, but it has to do with writing a "static" external function, ie one that REXX doesn't load and then discard with every invocation.

---
Bob Bridges
***@gmail.com, cell 336 382-7313
***@InfoSecInc.com

/* Here is one of the great ironies of contemporary feminism: Elite young women these days take their cues about how to behave primarily from unmarried (and therefore adolescent) males. -Maggie Gallagher, 2002-05-20 */


-----Original Message-----
From: TSO REXX Discussion List [mailto:TSO-***@VM.MARIST.EDU] On Behalf Of David Bishop
Sent: Thursday, September 8, 2016 20:38
To: TSO-***@VM.MARIST.EDU
Subject: Re: [TSO-REXX] REPLACE function in REXX?

With so many suggestions and examples in this thread Bob, I'm curious to know what REXX avenue you decided to pursue?

David Bishop


> On Sep 5, 2016, at 11:20, Bob Bridges <***@GMAIL.COM> wrote:
>
> It's getting so I'm automating at least as much in VBA as in REXX, which leads to comical malaprops such as "for jr=1 to 5" in REXX and "nam=strip(nam)" in VBA. There's no cure for that other than paying closer attention, I suppose.
>
> But now I'm writing something in REXX — not an Edit macro — and I want
> to replace one character string with another. In VBA that'd be the
> Replace function. For example I have a string "/home/bnt013" and I
> want to change it to "/home/bnx223", where BNT013 and BNX223 are old
> and new values. I already have the two strings; in VBA I would write
>
> cmd = Replace(cmd, OldACID, NewACID)
>
> I set out to do the same thing in REXX and came up against a blank; I can't figure out REXX's analogous function. Is there one? I have a hard time believing there isn't; REXX is so powerful in the matter of string handling. I mean, I can write such a function for myself; I just feel I must be missing something obvious.
>
> Feel free to jeer a little; it's probably right in front of my eyes.
>
> ---
> Bob Bridges
> ***@gmail.com, cell 336 382-7313 ***@InfoSecInc.com
>
> /* Democracy is three wolves and a sheep deciding what's for dinner.
> -C B Low */
>
> ----------------------------------------------------------------------
> For TSO-REXX subscribe / signoff / archive access instructions, send
> email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions, send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX

----------------------------------------------------------------------
For TSO-REXX subscribe / signoff / archive access instructions,
send email to ***@VM.MARIST.EDU with the message: INFO TSO-REXX
Loading...