
                    Programming/using OS/2 REXX      (echo)

                 Saturday, 04-Sep-1999 to Friday, 10-Sep-1999

+----------------------------------------------------------------------------+

From: Steve McCrystal                                   03-Sep-99 19:33:26
  To: Jack Stein                                        04-Sep-99 19:14:10
Subj: Classic REXX files?

;
In a msg of <Tuesday August 31 1999>, Jack Stein writes to Steve Mccrystal:
;
Jack,

 SM>> In any case, I have a couple of programs that either don't
 SM>> work with OREXX, or don't work properly.

 JS> I'd like to see the code that doesn't work in OREXX.  When I
 JS> switched to OREXX, all my scripts worked fine except where I had
 JS> errors, and one function call that I dare not get into here
 JS> again.  Perhaps we can get your CREXX code to work in OREXX.

Actually, the most notable example is SFTP, a freeware ftp client that I
prefer over anything else I've ever used for the task.  It has a feature
called 'cruise mode' (allows one to change directories, or hosts, while a
transfer is in progress) which refuses to work with OREXX active.  Mind you, I 
have no idea why, only that it won't work.  The app is written in VP-Rexx.

And, on a related note, this code (kindly supplied by Mike Ruskai a week or so 
ago) will work in OREXX but not in CREXX, even tho the routine in question is
part of REXXUTIL:

=== Cut ===
/* strip EA's from files */
call SysFileTree '*.*','files.','FO'
call SysFileDelete 'eajunk'
do i=1 to files.0
    '@eautil "'||files.i||'" eajunk /s'
    call SysFileDelete 'eajunk'
end
=== Cut ===

This fails with an error message (function not defined, I think) in line 2.

Thanks, Jack.

-[Steve]-

--- GoldED/2 3.0.1/#
 * Origin: -[Steve's Place]- New Berlin, WI (FidoNet 1:154/731.2)

+----------------------------------------------------------------------------+

From: Steve McCrystal                                   03-Sep-99 19:23:05
  To: David Noon                                        04-Sep-99 19:14:10
Subj: Classic REXX files?

;
In a msg of <Tuesday August 31 1999>, David Noon writes to Steve McCrystal:
;
David,

 DN> If you are running Warp 3 with the OREXX add-on, you should
 DN> SWITCHRX back to CREXX before applying a Fixpak; then SWITCHRX
 DN> back afterwards.

Good idea.  Now all I need to do is remember to do it! :^)

 SM>> In any case, I have a couple of programs that either don't
 SM>> work with OREXX, or don't work properly.  I'd like to have
 SM>> a working CREXX install, complete with the INF file,
 SM>> available when I need it.  I'd deeply appreciate any advice
 SM>> anyone might offer!

 DN> The only files that differ, AFAIK, are REXX.DLL and REXX.INF.
 DN> Your CREXX ones should be called CREXX.DLL and CREXX.INF when you
 DN> are running OREXX, and when you are running CREXX the OREXX ones
 DN> are called OREXX.DLL and OREXX.INF.

It appears as tho that's correct, but I have two inf files, different sizes
and dates, that are both the Object Rexx .inf files.  They are named as you
indicated above, and chage when I run SWITCHRX.

 DN> You could try SWITCHRX and re-boot. This might switch you back to
 DN> OREXX. However, if you are running Warp 4 then the CSF should
 DN> have handled the REXX maintenance correctly regardless of which
 DN> interpreter you are running.

Hmmm.  I am running Warp 4.  I'm not sure what happened, but today I located
all the REXX stuff on the CD and unpacked it manually. Now all I need to do is 
find out if I can easily install FP11 a second time, or I'll have to wait for
the next one to get the files updated.  I *will* try to remember to switch
back to CREXX first, tho.

Thanks, David.

-[Steve]-

--- GoldED/2 3.0.1/#
 * Origin: -[Steve's Place]- New Berlin, WI (FidoNet 1:154/731.2)

+----------------------------------------------------------------------------+

From: MIKE RUSKAI                                       04-Sep-99 18:34:00
  To: STEVE MCCRYSTAL                                   05-Sep-99 16:29:09
Subj: Classic REXX files?

Some senseless babbling from Steve Mccrystal to Jack Stein
on 09-03-99  19:33 about Classic REXX files?...

[snip]
 SM> And, on a related note, this code (kindly supplied by Mike Ruskai a
 SM> week or so ago) will work in OREXX but not in CREXX, even tho the
 SM> routine in question is part of REXXUTIL:

 SM> === Cut ===
 SM> /* strip EA's from files */
 SM> call SysFileTree '*.*','files.','FO'
 SM> call SysFileDelete 'eajunk'
 SM> do i=1 to files.0
 SM> '@eautil "'||files.i||'" eajunk /s'
 SM> call SysFileDelete 'eajunk'
 SM> end
 SM> === Cut ===

 SM> This fails with an error message (function not defined, I think) in
 SM> line 2. 

Are the REXXUTIL functions loaded?  There's nothing in the above that won't 
work on SAA REXX, unless something is askew.

Mike Ruskai
thannymeister@yahoo.com


... I'm a lumberjack and I'm okay. I sleep all night and I work all day.

___ Blue Wave/QWK v2.20
--- Platinum Xpress/Win/Wildcat5! v3.0pr2
 * Origin: FIDO QWK MAIL & MORE!  WWW.DOCSPLACE.ORG (1:3603/140)
346/3
805/4

+----------------------------------------------------------------------------+

From: Steve McCrystal                                   04-Sep-99 07:21:04
  To: MIKE RUSKAI                                       05-Sep-99 18:25:25
Subj: Classic REXX files?

;
In a msg of <Thursday September 02 1999>, MIKE RUSKAI writes to DAVID NOON:
;
MIKE,

 MR> REXXUTIL.DLL (CREXUTIL.DLL)

 MR> I have no idea what would happen if one attempt to use OREXX's
 MR> REXXUTIL library with SAA REXX.  I can't think of any reason why
 MR> it wouldn't work.

In case you missed the netmail I sent (quite likely), the delete EAs you
posted here is what prompted my latest question.  It runs fine in OREXX, but
fails with an error in line 2 when run in CREXX.  The function in question is
"SysFileTree", a part of REXXUTIL. I did a quick scan of both REXXUTIL files,
and SysFileTree is certainly present in both of them, and a look at both .INF
files, now that I have them both, shows what appears to be identical syntax.

Also, in case you missed the netmail, let me thank you once again for posting
the sample code.  It works great, but only in OREXX.

-[Steve]-

--- GoldED/2 3.0.1/#
 * Origin: -[Steve's Place]- New Berlin, WI (FidoNet 1:154/731.2)

+----------------------------------------------------------------------------+

From: David Bowerman                                    05-Sep-99 13:26:18
  To: Steve McCrystal                                   06-Sep-99 00:15:18
Subj: Classic REXX files?

Steve McCrystal wrote in a message to Jack Stein:

 SM> And, on a related note, this code (kindly supplied by Mike Ruskai a
 SM> week or so ago) will work in OREXX but not in CREXX, even tho the
 SM> routine in question is part of REXXUTIL:

 SM> === Cut ===
 SM> /* strip EA's from files */
 SM> call SysFileTree '*.*','files.','FO'
 SM> call SysFileDelete 'eajunk'
 SM> do i=1 to files.0
 SM>     '@eautil "'||files.i||'" eajunk /s'
 SM>     call SysFileDelete 'eajunk'
 SM> end
 SM> === Cut ===

 SM> This fails with an error message (function not defined, I think) in
 SM> line 2. 

I modified the code above to include loading the REXXUTIL functions and it
seems to work just fine here under CREXX.  Actually, I loaded the REXX FTP
functions as well since that is part of the boilerplate.  The code to unload
the functions after use is not included since I never bother to unload them.
Too many pieces of my REXX code make use of them to bother with continual
loading/unloading -- especially when you unload the functions from one thread
while another thread is making use of them.

-----------------------8<-cut-here--------------------------------------
/*------------------------------------------------------------------
 * load the REXX FTP and Sys functions, (if needed)
 * for the most part, these are loaded once and left loaded
 *------------------------------------------------------------------*/

if RxFuncQuery("FtpLoadFuncs") then
    do
      rc = RxFuncAdd("FtpLoadFuncs","RxFtp","FtpLoadFuncs")
      rc = FtpLoadFuncs()
    end

if RxFuncQuery("SysLoadFuncs") then
    do
      rc = RxFuncAdd("SysLoadFuncs","RexxUtil","SysLoadFuncs")
      rc = SysLoadFuncs()
    end

/* strip EA's from files */
call SysFileTree '*.*','files.','FO'
call SysFileDelete 'eajunk'
do i=1 to files.0
    '@eautil "'||files.i||'" eajunk /s'
    call SysFileDelete 'eajunk'
end

-----------------------8<-cut-here--------------------------------------

Regards,
       David

--- timEd/2 1.10.y2k+
 * Origin:  Frog Hollow -- a scenic backroad off the Infobahn (1:153/290)

+----------------------------------------------------------------------------+

From: David Noon                                        04-Sep-99 20:16:01
  To: Mike Ruskai                                       06-Sep-99 06:39:15
Subj: Classic REXX files?

In a message dated 09-02-99, Mike Ruskai said to David Noon about "Classic
REXX files?"

Hi Mike,

MR>There's also the following:

MR>REX.MSG (CREX.MSG)
MR>REXH.MSG (CREXH.MSG)

Forgot about those two, but CREXX versions should simply be subsets of the
OREXX versions.

MR>REXXUTIL.DLL (CREXUTIL.DLL)

This guy is the same for both OREXX and CREXX as of FP#5 for Warp 4 and
FP#35 for Warp 3 (or thereabouts).

MR>I do believe, however, that REXX.DLL is all that's required for SAA REXX
MR>to function.  It'd probably simply display incorrect messages, or break
MR>when the need for a message arose, if the above two files were not
MR>replaced.

All the CREXX error messages were "grandfathered" by OREXX, and a few new
ones were added, so CREXX should be operable with OREXX message files.
However, OREXX might have problems using CREXX message files.

MR>I have no idea what would happen if one attempt to use OREXX's REXXUTIL 
MR>library with SAA REXX.  I can't think of any reason why it wouldn't work.

It should be fine these days.

Regards

Dave
<Team PL/I>
___
 * MR/2 2.25 #353 * Televangelists: The pro wrestlers of religion.

--- Maximus/2 3.01
 * Origin: Air Applewood, OS/2 Gateway to Essex 44-1279-792300 (2:257/609)
346/3
805/4

+----------------------------------------------------------------------------+

From: Murray Lesser                                     05-Sep-99 22:06:00
  To: Mike Ruskai                                       05-Sep-99 22:06:00
Subj: Classic REXX files?

(Excerpts from a message dated 09-04-99, Mike Ruskai to Steve Mccrystal)

Hi Mike--

MR>Are the REXXUTIL functions loaded?  There's nothing in the above that
  >won't work on SAA REXX, unless something is askew.

    You are somewhat mistaken, although the question is a fair one. OS/2
"CREXX" is a superset of SAA REXX.  Nothing that requires any REXXUTIL
function will run under "true" SAA REXX.  One of the nicest things about
REXX is how easy it can be extended.  I regularly write "extended
functions" for REXX in C, to do things not included in OS/2 REXX's
vocabulary.  The entire REXXUTIL library is a set of such "extended
functions."  In addition to not including the REXXUTIL functions, there
are a number of SAA REXX constructs that are "implementation dependent."

    See Mike Cowlishaw's book: "The REXX Language" to get a definition
of SAA 4 REXX.  See Charles Daney's book: "Programming in REXX" to get
an idea of some of the other implementation dependent aspects of the SAA
portions of OS/2 REXX.

        --Murray
<Team PL/I>
___
 * MR/2 2.25 #120 * Happily hitchhiking on the Information Highway

--- Maximus/2 2.02
 * Origin: OS/2 Shareware BBS, telnet://bbs.os2bbs.com (1:109/347)


+----------------------------------------------------------------------------+

From: MIKE RUSKAI                                       05-Sep-99 20:26:00
  To: STEVE MCCRYSTAL                                   06-Sep-99 11:36:04
Subj: Classic REXX files?

Some senseless babbling from Steve Mccrystal to Mike Ruskai
on 09-04-99  07:21 about Classic REXX files?...

 SM> ;
 SM> In a msg of <Thursday September 02 1999>, MIKE RUSKAI writes to DAVID
 SM> NOON: ;
 SM> MIKE,
 
 MR> REXXUTIL.DLL (CREXUTIL.DLL)
 
 MR> I have no idea what would happen if one attempt to use OREXX's
 MR> REXXUTIL library with SAA REXX.  I can't think of any reason why
 MR> it wouldn't work.

 SM> In case you missed the netmail I sent (quite likely), the delete EAs
 SM> you posted here is what prompted my latest question.  It runs fine in
 SM> OREXX, but fails with an error in line 2 when run in CREXX.  The
 SM> function in question is "SysFileTree", a part of REXXUTIL. I did a
 SM> quick scan of both REXXUTIL files, and SysFileTree is certainly present
 SM> in both of them, and a look at both .INF files, now that I have them
 SM> both, shows what appears to be identical syntax. 
 SM> Also, in case you missed the netmail, let me thank you once again for
 SM> posting the sample code.  It works great, but only in OREXX.

I don't know if I received it, actually.  The BBS I'm posting from has a 
shortcut to the QWK menu that skips all the usual logon stuff.  And I don't 
believe personal mail is bundled.  

I did see a public mention of that malfunction, and I'm at a loss to 
explain it.  What exactly is the error message?

Mike Ruskai
thannymeister@yahoo.com


... Life is like MS Windows... you never know what you're gonna get.

___ Blue Wave/QWK v2.20
--- Platinum Xpress/Win/Wildcat5! v3.0pr2
 * Origin: FIDO QWK MAIL & MORE!  WWW.DOCSPLACE.ORG (1:3603/140)
346/3
805/4

+----------------------------------------------------------------------------+

From: Steve McCrystal                                   06-Sep-99 07:17:25
  To: MIKE RUSKAI                                       07-Sep-99 15:28:28
Subj: Classic REXX files?

;
In a msg of <Saturday September 04 1999>, MIKE RUSKAI writes to STEVE
MCCRYSTAL:
;
MIKE,

 SM>> This fails with an error message (function not defined, I
 SM>> think) in line 2.

 MR> Are the REXXUTIL functions loaded?  There's nothing in the above
 MR> that won't work on SAA REXX, unless something is askew.

<blush>  Probably not. :(

I never thought of that because I didn't have to implicitly load them when I
ran it in OREXX, where your code runs just fine!

Methinks what I need is a small routine in STARTUP that loads everything REXX
related, and just leaves it loaded.  I have enough ram, and never enough time!

Thanks again, Mike!

-[Steve]-

--- GoldED/2 3.0.1/#
 * Origin: -[Steve's Place]- New Berlin, WI (FidoNet 1:154/731.2)

+----------------------------------------------------------------------------+

From: Steve McCrystal                                   06-Sep-99 07:21:15
  To: David Bowerman                                    07-Sep-99 15:28:28
Subj: Classic REXX files?

;
In a msg of <Sunday September 05 1999>, David Bowerman writes to Steve
McCrystal:
;
David,

 DB> I modified the code above to include loading the REXXUTIL
 DB> functions and it seems to work just fine here under CREXX.
 DB> Actually, I loaded the REXX FTP functions as well since that is
 DB> part of the boilerplate.

Thanks, David!  I really apprecite it.

As I mentioned to Mike, I never thought of that since I didn't have to do it
in OREXX.

 DB>   The code to unload the functions after
 DB> use is not included since I never bother to unload them. Too many
 DB> pieces of my REXX code make use of them to bother with continual
 DB> loading/unloading -- especially when you unload the functions
 DB> from one thread while another thread is making use of them.

I think I'll just load everything I might need and let it alone.  Will it work 
to just call a routine from STARTUP that does so?

If the folks at SciTech could get *their* REXX code written properly, I could
just leave OREXX active and forget about it all! :^)

Thanks again for the help.

-[Steve]-

--- GoldED/2 3.0.1/#
 * Origin: -[Steve's Place]- New Berlin, WI (FidoNet 1:154/731.2)

+----------------------------------------------------------------------------+

From: David Bowerman                                    07-Sep-99 19:01:07
  To: Steve McCrystal                                   08-Sep-99 06:53:21
Subj: Classic REXX files?

Steve McCrystal wrote in a message to David Bowerman:

 DB> The code to unload the functions after use is not included since I
 DB> never bother to unload them. Too many pieces of my REXX code make
 DB> use of them to bother with continual loading/unloading --
 DB> especially when you unload the functions from one thread while
 DB> another thread is making use of them.

 SM> I think I'll just load everything I might need and let it alone. 
 SM> Will it work to just call a routine from STARTUP that does so?

I used to do that but now just load from the first REXX code that gets run.  I 
can't remember why I stopped though it may have been tied to some problems
that I was having with the peer networking which had me dropping bits and
pieces until I found the problem.  More precisely, I never did find the
problem but after it disappeared, I was leary of changing the STARTUP.CMD file 
again.

My REXX coding starts from a boilerplate file that defines common constants,
loads the various helper files and so forth.  Of course, it can look a bit
silly when "Hello World!" takes 100 lines of boilerplate but easier in the
long run and keeps me from committing the easier dumb errors.

 SM> If the folks at SciTech could get *their* REXX code written
 SM> properly, I could just leave OREXX active and forget about it all!
 SM> :^)

Always the problem with other's code. ;-)

 SM> Thanks again for the help.

You're welcome.

Regards,
       David

--- timEd/2 1.10.y2k+
 * Origin:  Frog Hollow -- a scenic backroad off the Infobahn (1:153/290)

+----------------------------------------------------------------------------+

From: MIKE RUSKAI                                       07-Sep-99 17:01:00
  To: STEVE MCCRYSTAL                                   09-Sep-99 00:20:11
Subj: Classic REXX files?

Some senseless babbling from Steve Mccrystal to Mike Ruskai
on 09-06-99  07:17 about Classic REXX files?...

 SM> ;
 SM> In a msg of <Saturday September 04 1999>, MIKE RUSKAI writes to STEVE
 SM> MCCRYSTAL:
 SM> ;
 SM> MIKE,
 
 SM>> This fails with an error message (function not defined, I
 SM>> think) in line 2.
 
 MR> Are the REXXUTIL functions loaded?  There's nothing in the above
 MR> that won't work on SAA REXX, unless something is askew.

 SM> <blush>  Probably not. :(

 SM> I never thought of that because I didn't have to implicitly load them
 SM> when I ran it in OREXX, where your code runs just fine!

 SM> Methinks what I need is a small routine in STARTUP that loads
 SM> everything REXX related, and just leaves it loaded.  I have enough ram,
 SM> and never enough time! 
 SM> Thanks again, Mike!

You'd still need to load them in OREXX as well.  What's probably the case 
is that you loaded them in a previous session when you were using OREXX, 
but didn't when you rebooted to CREXX.

Putting the load in startup.cmd will work, but when you pass the code on, 
other people might run into problems.  I always put the function load at 
the top of every program, to avoid annoying problems later on.

Mike Ruskai
thannymeister@yahoo.com


... Microsoft:  To badly go where more clever people have avoided going.

___ Blue Wave/QWK v2.20
--- Platinum Xpress/Win/Wildcat5! v3.0pr2
 * Origin: FIDO QWK MAIL & MORE!  WWW.DOCSPLACE.ORG (1:3603/140)
346/3
805/4

+----------------------------------------------------------------------------+

From: MIKE RUSKAI                                       07-Sep-99 17:03:00
  To: STEVE MCCRYSTAL                                   09-Sep-99 00:20:11
Subj: Classic REXX files?

Some senseless babbling from Steve Mccrystal to David Bowerman
on 09-06-99  07:21 about Classic REXX files?...

[snip]
 SM> If the folks at SciTech could get *their* REXX code written properly,
 SM> I could just leave OREXX active and forget about it all! :^)

 SM> Thanks again for the help.

That part of the code won't work in CREXX, either.  You don't notice only 
because the code branching never put you there.  OREXX scans the entire 
file for syntax errors before execution, which is why the error turns up 
there.

Just put a semi-colon between END and ELSE on the line that craps out.

Mike Ruskai
thannymeister@yahoo.com


... Ignorance is curable, but some refuse the inoculation.

___ Blue Wave/QWK v2.20
--- Platinum Xpress/Win/Wildcat5! v3.0pr2
 * Origin: FIDO QWK MAIL & MORE!  WWW.DOCSPLACE.ORG (1:3603/140)
346/3
805/4

+----------------------------------------------------------------------------+

+============================================================================+
