On Thu, May 16, 2013 at 5:45 PM, J. Leslie Turriff <jlturriff@centurytel.net> wrote:
On 2013-05-16 10:51:18 Mark Miesfeld wrote:
> Staffan,
> You are misunderstanding here.
> Class B is private, it is not seen in any other file than b.cls.  If you
> require the b.cls file, that's fine.  But, any other file that requires
> b.cls will only see the public stuff in b.cls.  The other file will not see
> anything private in b.cls
        It confused me, too.  The term "containing Rexx program" does not mean the
same thing to me as "any other file".  


I used the term "any other file" here because Staffan's specific example was using files.  That, to me, kept the discussion more concrete.

But this it what it says about ::requires:

The ::REQUIRES directive specifies that the program requires access to the classes and objects of
the Rexx program programname.
The string or symbol programname can be any string or symbol that is valid
as the target of a CALL instruction

So, b.cls the file, is clearly valid as the target of a CALL instruction.  It contains valid Rexx code that defines a class.  However, since that validly defined class is marked as PRIVATE, it will not be seen in whatever Rexx executable code "requires" it.

I would not consider a file containing
only class definitions as a program, but just a collection of code to be used
by a program.

But, it is a valid target of a CALL instruction.  And, it contains valid Rexx code that defines classes.  Whether you refuse to call it a program or not.
 Such a file could not be executed on its own, so is not a

But, it can be executed on its own.  It doesn't produce any output.  But neither does it raise any errors when the interpreter executes it.
        Seems to me the rule should be talking about definitions in _files_ external
to the program, since it appears to be file oriented, not scope oriented.

Files are not the _only_ things that are valid targets of a CALL instruction.  So, it would be a mistake to restrict it  to files.

I talked about files here because Staffan's example was limited to some specific files.

Mark Miesfeld