HDTenEightyP/NetNews huggingface dataset:
Newsgroups: comp.lang.rexx
Date:         Thu, 20 Aug 1992 09:24:32 LCL
From:         Peter Flass <flass@136.161.128.3>
Subject:      Re: Capturing System Command Output (was: SH Backquote)
Comments: To: General REXX Language Discussion List
              <REXXLIST@ucf1vm.cc.ucf.edu>
Comments: cc: Multiple recipients of list REXXLIST <REXXLIST@ucf1vm.cc.ucf.edu>

>   The committee is leaning towards providing yet another special variable
>   to indicate the completion status of the command to the external
>   environment in a standard manner.  ...
>   ...                Hence the committee is leaning towards adding the
>   special variable "rs", which would be assigned the value -1, 0, or 1
>   upon the completion of an external command, meaning failure, normal,
>   or error status.

This is a tall order -- A REXX implementation would have to know the
significance of _all possible_ return codes from _all possible_
environments.  Since environments are being multiplied constantly
it might be less confusing not to try.

=====================================================================
= Peter Flass                               flass@nyslbd.gov        =
= Systems Programmer                        tel (518)458-5114       =
= NYS Legislative Bill Drafting Commission                          =
= 1450 Western Ave.                                                 =
= Albany, NY  12203                                                 =
=====================================================================
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Newsgroups: comp.lang.rexx
Date:         Wed, 19 Aug 1992 18:41:25 PDT
From:         Dave Gomberg <GOMBERG@UCSFVM.BITNET>
Subject:      Re: Capturing System Command Output (was: SH Backquote)
              19 Aug 1992 17:52:33 PST from <SEAN@OAK.HIS.UCSF.EDU>

I agree with Sean's thinking about order of arguements as far as it
goes, and I was originally tempted to put address last for the reason
he cites, but then I thought it really belonged first, but I decided
that would look AWFUL, so I compromized and put it in the middle.
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Newsgroups: comp.lang.rexx
Date:         Mon, 17 Aug 1992 10:09:38 MAL
From:         Wan Hasan Abdullah <WAN@UTMJB.BITNET>
Subject:      Diag keyword

Dear Netters,

Could anyone brief me the usage of REXX Diagnose (Diag) instructions with
some examples about it?  I had read through  the REXX Help facilities but
unfortunately I still can't manage to understand it.  I had even followed
an example which is provided and run it, but as a result,  I got nothing.
It seemed that my given instruction was not working.   However, it didn't
show any mistakes when I included  a 'trace all' option at the top of the
of program.

Your co-operation is very much appreciated.

Thank you in advance.

-WAN-
Newsgroups: comp.lang.rexx
From: SEB1525@MVS.draper.com (Steve Bacher)
Subject: Capturing System Command Output (was: SH Backquote)
Organization: Draper Laboratory
Date: Tue, 18 Aug 1992 13:12:00 GMT

The recent thread on obtaining output from system commands in a
REXX exec (aka "backquote") points up a critical need for a
standard way of doing this.

Currently it is impossible to write an exec that can do this portably,
even for the same platform!  There are now at least 3 different REXX
implementations for UNIX, and they all have different conventions for
specifying how to route command output to the stack.

The best approach available to date, hinted at by one of the posts, is
to write a general-purpose exec that will interrogate the type of REXX
implementation environment and do the appropriate thing.  This would
have to dump the stuff on the stack, though, because external execs
can't update stem variables easily.

Is anyone working on defining a standard syntax for this capability?

--
Steve Bacher (Batchman)                 Draper Laboratory
Internet: seb@draper.com                Cambridge, MA, USA
Newsgroups: comp.lang.rexx
From: SEB1525@MVS.draper.com (Steve Bacher)
Subject: Re: Capturing System Command Output (was: SH Backquote)
Organization: Draper Laboratory
Date: Wed, 19 Aug 1992 14:00:00 GMT

In article <ANDERS.92Aug18223235@lise8.lise.unit.no>,
anders@lise8.lise.unit.no (Anders Christensen) writes:

>The three different _conceptual_ methods that I am aware of are
[following very abbreviated]
>
>      files = 'ls'(directory)
>      'ls' directory ' >LIFO'     /* or "|rxstack" */
>       'ls | rxstack'
>      rcode = popen( "ls" directory,, "ls-output" )

Er, our *four* different conceptual methods...?

Just from the UI POV, how about a fifth:

       rcode = queue_to_stack("ls" directory)

and

       rcode = dump_into_stem_vars("ls" directory, "STEMPREFIX.")

(Choose your own function names - these are for self-evidentness.)

Similar syntactically to popen(), but captures stdout and puts it
on the data stack or in stem variables a la EXECIO.

And what about stderr?  Maybe an optional third argument could
specify the destination for stderr.  (Let's not get fancy and
start specifying destinations for file descriptor numbers...)

I don't like the ">LIFO" syntax because that conflicts with a
valid file-redirection spec, using up potential file names in
a magic-cookie sort of way.  Also, this and the piping and popen
solutions are too Unix-oriented in coding style; the programming
interface to get at the data should be in the REXX culture, not
the culture of the surrounding OS.  This would also get around
the "address something-other-than-the-native-shell" problem
you alluded to with the 'address ftp; "ls | rxqueue"' difficulty.

Implementation would probably involve the temporary redirection
of stdout to somewhere where the output could be captured (e.g.
a temporary file) and then unredirected at the end.  The user's
default shell (or shell specified by "address", maybe?)  should be
used to invoke the command.  In cases where the command string is
simple enough to allow for it, the command could be executed directly
(e.g. via system), but this should be done only when the results would
transparently be the same.  (E.g. "cd" should fail to update the
current directory as the REXX exec sees it, just as if it were shelled
out, even if it wasn't.)

>A better solution might be to label the _methods_ rather than the
>_interpreters_, then it would be possible to check whether an
>interpreter supports e.g. the popen-based method. Then the user don't
>have to update his rexxscripts to support new interpreters, but new
>interpreters will support the already existing methods.

No, a better solution would be to have one method.  Dispatching on
whether a particular syntax is used is just as bad as, and possibly
worse than, dispatching on a particular implememntation.

--
Steve Bacher (Batchman)                 Draper Laboratory
Internet: seb@draper.com                Cambridge, MA, USA
Xref: sparky comp.lang.rexx:712 comp.os.os2.misc:27335
Date: Thu, 13 Aug 1992 16:54:02 EDT
From: James Justice <JAY@wvnvm.wvnet.edu>
Newsgroups: comp.lang.rexx,comp.os.os2.misc
Subject: Re: Stem vars as arguments?

REXX does allow a stem to be EXPOSED.

---Cut and Paste ---
/**/
t.1 = '1'
t.2 = '2'
t.3 = '3'
Call tryit

Exit

tryit: Procedure EXPOSE t.
Say t.1 t.2 t.3
Return
---Cut and Paste ---

This works with "1 2 3" being printed out!
From: pmuellr@VNET.IBM.COM ("Pat Mueller")
Newsgroups: comp.lang.rexx
Subject: command output to a queue in OS/2 (was: Automated FTP session)
Date: 12 Aug 92 12:04:00 GMT

> While on the subject of REXX API's am I missing something or is there
> no interface between REXX and OS/2.  What I have in mind is the
> equivalent of Personal REXX's:
>
>       'DIR >stk'
>
> or CMS's:
>
>       'EXECIO * CP (LIFO ST whatever'
>
> I am not asking for the same externals, but for a REXX program to be
> able to process the output of a command.  Did I miss something in the
> helps?   IBM has not been cooperative in providing written doc to the
> first non-IBM REXX author.  So I am in the dark like the rest of you.

There is an RXQUEUE program which reads from stdin, and places the
lines received on the stack.  So you can do something like this

   "DIR | RXQUEUE"
   do while queued()
      parse pull line
      ...
   end

As far as I know, this >is< documented (hardcopy and online, at least
for 2.0), but it would be in the reference manual.

Patrick Mueller
pmuellr@vnet.ibm.com
Programming Systems, IBM Cary, NC
From: zjlc12@hou.amoco.com (Jerry Campbell)
Newsgroups: comp.lang.rexx
Subject: Re: Capturing System Command Output (was: SH
Date: 20 Aug 92 14:08:14 GMT
Reply-To: zjlc12@hou.amoco.com
Organization: Amoco

In article 19920819090033SEB1525@MVS.draper.com, SEB1525@MVS.draper.com (Steve Bacher) writes:
>Just from the UI POV, how about a fifth:
>
>       rcode = queue_to_stack("ls" directory)
>
>and
>
>       rcode = dump_into_stem_vars("ls" directory, "STEMPREFIX.")
>
>(Choose your own function names - these are for self-evidentness.)
>
>Similar syntactically to popen(), but captures stdout and puts it
>on the data stack or in stem variables a la EXECIO.
>
>............................................... the programming
>interface to get at the data should be in the REXX culture, not
>the culture of the surrounding OS.  This would also get around
>the "address something-other-than-the-native-shell" problem
>you alluded to with the 'address ftp; "ls | rxqueue"' difficulty.
>
>.....
>
>No, a better solution would be to have one method.  Dispatching on
>whether a particular syntax is used is just as bad as, and possibly
>worse than, dispatching on a particular implememntation.
>
>--
>Steve Bacher (Batchman)                 Draper Laboratory
>Internet: seb@draper.com                Cambridge, MA, USA

I totally agree with Mr. Bacher.  I think the problem needs to be abstracted 
from any operating system specifics.  In other words, set down a "standard"
way of doing this from rexx programmer's point of view.  Something like 
queue_to_stack() or whatever, something that is pure rexx and not tied to
what kind of shell you're in.  If that can be agreed on then the ugly details
of how to implement such a thing would be left to the language implementor.
I believe that's where responsibility for implementation specifics of "standard"
language features should reside.  

---
Jerry Campbell   reply to: zjlc12@hou.amoco.com 
Amoco Corp. ISD  SSS/Graphics
Houston, Tx.     713/556-7036
Newsgroups: comp.lang.rexx
From: anders@lise7.lise.unit.no (Anders Christensen)
Subject: Re: Stem vars as arguments?
Organization: /home/flipper/anders/.organization
Date: 13 Aug 92 22:40:12

In article <d7c802aM1dOP01@JUTS.ccc.amdahl.com> chappy@duts.ccc.amdahl.com (Chappy Cole) writes:

> [...]
> Note that you cannot use the 'procedure' instruction in either case
> because the stem that is being referenced in both cases is unknown
> at the time the subroutine is created.

Why not just shift the stem into the tail, i.e one place to the right: 

   call SetOpts 'Opts'
   exit

   SetOpts: procedure expose Glob.
      arg Stem
      Glob.Stem.0 = 3           /* sets glob.opts.0 = 3         */
      Glob.Stem.1 = "TERM"      /* sets glob.opts.1 = "TERM"    */
      Glob.Stem.2 = "PROFILE"   /* sets glob.opts.2 = "PROFILE" */
      Glob.Stem.3 = "MYPROF"    /* sets glob.opts.3 = "MYPROF"  */
   return

OK, so you get an extra prefix for all variables that are extracted,
but that does not seem too bad, and the prefixes does not have to be
as long as indicated in my example. And you also looses some control
over the variables, but if that is not a problem ... 

At least you don't have to use the INTERPRET clause that everyone
seems to hate, for some mysterious reason :-)

-anders
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Newsgroups: comp.lang.rexx
Date:         Wed, 12 Aug 1992 08:42:39 EDT
From:         "Lynne J. Worsfold" <LWORSFOL@PSUHMC.BITNET>
Subject:      Re: Stem vars as arguments?
              12 Aug 1992 03:53:49 GMT from <ednstras@KRAKEN.ITC.GU.EDU.AU>

On Wed, 12 Aug 1992 03:53:49 GMT Michael Strasser said:
>I am writing a complicated REXX program under OS/2 2.0.  I would like to be
>able to use a stem variable as an argument to an internal procedure, but my
>attempts have failed so far.
>
>Here is a simple example:
>
>/* Init the stem var. */
>Opts.Label = 'Select an option A-C, X'
>Opts.0 = 4 /* No. options */
>Opts.1 = 'A'
>Opts.2 = 'B'
>Opts.3 = 'C'
>Opts.4 = 'X'
>
>Choice = GetChoice(Opts)
>
>/* ... */
>
>GetChoice: PROCEDURE
>ARG Stem  /* Stem var with options */
>
>SAY Stem.Label
>PULL Resp
>FOR i = 1 TO Stem.0 DO
>	IF Resp = Stem.i THEN
>		LEAVE
>END /* i */
>
>IF i = Stem.0 + 1 THEN /* Default is Stem.1 */
>	RETURN Stem.1
>
>RETURN Stem.i
>
>/* End of example */
>
>This doesn't work.  Nor does GetChoice(Opts.) or GetChoice('Opts') or
>GetChoice('Opts.').
>
>Is there any way to do what I want?
>
>Any help would be greatly appreciated.
>
>--
>Mike Strasser                       Internet: M.Strasser@edn.gu.edu.au.
>Education Division                  Fidonet:  3:640/308.2@fidonet
>Griffith University
>Brisbane, Australia

   I received the reply to this note that this is not possible under OS/2
yet.  Is anything like this possible under CMS?  I have to declare over
100 stem variables in this Rexx program I am working on.  I would really
like to have all those declare statements in another CMS file and Call
that file from within the Main Rexx program.  Apparently the values of the
stem variables in an external subroutine are not available to the main
routine without passing those variables back somehow.  I am Very new
at Rexx programming.  I would appreciate any help with this one!

-----------------------------------------------------------------------
Lynne J. Worsfold                      Pennsylvania State University
Project Leader/Information Systems     Milton S. Hershey Medical Center
Internet: lworsfol@psuhmc.hmc.psu.edu  140 Sipe Ave
Voice:    (717) 531-6278               Hershey, PA  17033
-----------------------------------------------------------------------
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Newsgroups: comp.lang.rexx
Date:         Wed, 12 Aug 1992 13:06:00 GMT
From:         Joseph A Schunk <0001007026@MCIMAIL.COM>
Subject:      re: stems in subroutines

I can't remember the limititions nd proviso's but... how about exposing the
stems ... I believe in the ESA releases of VM, REXX allows for variable
containing a list of stems for exposing ????
  +------------------------------------------------------------+
  |  MCI Mail:  JSchunk or 100-7026                            |
  |  Telex (MCI/WUI): 6501007026   Ans: 6501007026MCI UW       |
  |  Internet:  JSchunk@MCIMail.Com                            |
  |  X.400: G=joseph; S=schunk; ADMD=mci; C=us;                |
  +------------------------------------------------------------+
From: brotzman@Hypatia.gsfc.nasa.gov (Lee E. Brotzman)
Newsgroups: comp.lang.rexx
Subject: Re: PC-REXX ISPF Panels
Keywords: PC REXX ISPF
Date: 21 Aug 92 22:11:25 GMT
Organization: Goddard Space Flight Center

glaser@guug.de (Edwin Glaser) writes:
>Is it possible that a routine already exists whitch automatically
>scans in ISFP Panels and creates [PC-REXX] window or even a ISPF packet
>for PC ?

I don't know if this will help since it appears you are running DOS, put there
is an SPF product for OS/2 and OS/2 has REXX built-in.  I don't have personal
experience with the OS/2 SPF (or even OS/2, for that matter), but a friend of
mine that is an IBM Systems programmer has it on his home machine (33 MHz 486
w/ 8MB memory, 210MB HD), and he is happy with it.

>Thanks in advance.
>--
>    Edwin Glaser (glaser@guug.de) INA Waelzlager Herzogenaurach
--
-- Lee E. Brotzman                    Internet:  leb@hypatia.gsfc.nasa.gov
-- Hughes STX                         DECNET:    NDADSA::BROTZMAN
-- National Space Science Data Center BITNET:    ZMLEB@GIBBS
-- NASA Goddard Space Flight Center
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
From: anders@lise11.lise.unit.no (Anders Christensen)
Subject: Re: Capturing System Command Output (was: SH Backquote)
Organization: /home/flipper/anders/.organization
Date: 19 Aug 92 21:51:04

In article <1992Aug19.155445@hp10.lri.fr> jpr@hp10.lri.fr (Jean-Pierre Riviere) writes:

> Well, I am not a specialist but whatthe hell is the "RESULT" var done for ?

The special variable RESULT is set at the return from a subroutine
called by a CALL clause, when the called routine returned a result, in
order to catch a value that would otherwise be lost.

To call a program and get the RESULT variable set on return, and still
be within TRL, do the following:

   call 'ls' "-l ~"
   dir = result

Note the difference between calling an external function, and issuing
a command, that is two conceptually very different methods.

Unfortunately, it is not clearly specified in TRL _what_ to interpret
as the 'result' from an external function if it is not a rexx
function. Is it the output (the characters written to standard
output); or is it the return value (the expression given to statements
like exit and return?)

> Would not be the better way be
>
> "ls -l ~"
> dir = result

Perhaps, but if the program has more complex output, like the
'directory/full' under vms, you're stuck with one mega RESULT string,
and have to do some moby parsing to get the various fields. Putting
the result from a command into a single variable _only_ works (in a
practical sense) if the output is either small or well structured.

As a concequence, there most a another method (either instead of or in
addition to the result-method), that handles complexly structured
output from commands. The solution _might_ be to use compound
variables in stead of simple variables (i.e. result.1, result.2 ....
etc, instead of just result). But I don't think that the only Correct
Answer either.

> (This is the only available way to do it with arexx btw)
> It's common rexx anf follows Cowlishaw's rules. (as far as I 
> understood it...)

IMHO this is not TRL, and IMNSHO arexx is not TRL.

> So why are you trying to implement hassles with
> 
> dir = "ls -l ~"
>
> and all its derivative ?

The statement that you think of is probably something like

    dir = "ls"( "-l ~" )

Which is calling the program 'ls' with the parameter(s) '-l ~' and
assigning the 'outdata' (whether it be the return code or standard
output) to the variable 'dir'. That _is_ within TRL, although it does
not require it.

> Cannot the result way be good enough for us ?

As a solution, yes. As the only solution, no.

-anders
From: faith@amiganet.chi.il.us (Fred Drummand)
Newsgroups: comp.lang.rexx
Subject: Arexx Help
Date: 16 Aug 92 23:55:32 GMT
Organization: Amiga Network Information Systems

Well, I Dont know where to start. Im Just Starting off with Arrexx... and Im
Not even sure if this network sub is pertaining to AREXX or Just Rexx, So If
there is anyone out there who mightbe able to help me with Arexx, Please Let Me
Know

Thanks

Fred Drummand
Collumbia College
Graphic Arts Major
From: chris@CESTRIAN.CCF.SWRI.EDU
Newsgroups: comp.lang.rexx
Subject: Re: Stem vars as arguments?
Date: 12 Aug 92 13:20:44 GMT
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Return-Path: <chris@cestrian.ccf.swri.edu>
Comments: To: REXXLIST@OHSTVMA.ACS.OHIO-STATE.EDU

On Wed, 12 Aug 1992 03:53:49 GMT Michael Strasser said:
>I am writing a complicated REXX program under OS/2 2.0.  I would like to be
>able to use a stem variable as an argument to an internal procedure, but my
>attempts have failed so far.
>
>Here is a simple example:
>
>/* Init the stem var. */
>Opts.Label = 'Select an option A-C, X'
>Opts.0 = 4 /* No. options */
>Opts.1 = 'A'
>Opts.2 = 'B'
>Opts.3 = 'C'
>Opts.4 = 'X'
>
>Choice = GetChoice(Opts)
>
>/* ... */
>
>GetChoice: PROCEDURE
>ARG Stem  /* Stem var with options */
>
>SAY Stem.Label
>PULL Resp
>FOR i = 1 TO Stem.0 DO
>       IF Resp = Stem.i THEN
>               LEAVE
>END /* i */
>
>IF i = Stem.0 + 1 THEN /* Default is Stem.1 */
>       RETURN Stem.1
>
>RETURN Stem.i
>
>/* End of example */
>
>This doesn't work.  Nor does GetChoice(Opts.) or GetChoice('Opts') or
>GetChoice('Opts.').
>
>Is there any way to do what I want?
>
>Any help would be greatly appreciated.

By passing the 'name' of a stem to a procedure which then parses it you
then have a variable with the value of the stem name.

In order to reference the stem value use interpret:

Opts.Label = 'Select an option A-C, X'
Opts.0 = 4 /* No. options */
Opts.1 = 'A'
Opts.2 = 'B'
Opts.3 = 'C'
Opts.4 = 'X'

Choice = GetChoice(Opts)

/* ... */

GetChoice: PROCEDURE
ARG Stem  /* Stem var with options */
interpret 'lab='stem'.label'                /* Get value of stem.label */
SAY lab                                     /* Use it for prompt */
PULL Resp
interpret 'range='stem'.0'                  /* Get value of stem.0 */
FOR i = 1 TO range DO
       interpret 'choice='stem'.'i          /* Get stem value */
       IF Resp = choice  THEN               /* This it ? */
               LEAVE
END /* i */
if resp<>choice then i = 1            /* Didn't match chose first  */
interpret 'ret='stem'.'i              /* Get the choice */
RETURN ret

/* End of example */

Note that this method will only work with internal procedures.
For the example as stated here I would use something like this

choice=getopts('Select options A-C or X $ A B C X')


getopts:
parse arg label '$' choices
if 0=find(choices,choice) then choice=word(choices,1)
return choice
/* End of example */

Note that this will work with extenal or internal procedures


Hope this is helpful

    Chris Langford    chris@swri.edu
Wizardy is Wonderful

Later .....
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
Return-Path: <chris@cestrian.ccf.swri.edu>
Newsgroups: comp.lang.rexx
Date:         Mon, 17 Aug 1992 08:17:14 EST
From:         chris@CESTRIAN.CCF.SWRI.EDU
Subject:      SH Backquote
Comments: To: REXXLIST@OHSTVMA.ACS.OHIO-STATE.EDU

Just a little easier CMS example:

/* */
arg fls
say "Space used:"
"listfile "fls" (stack blocks"
if rc^=0 then exit
say "Number of files: "queued()
"desbuf"

Wizardy is Wonderful

Later .....
Newsgroups: comp.lang.rexx
From: RZOTTO@DKNKURZ1.BITNET (Otto Stolz)
Newsgroups: comp.lang.rexx
Subject: Re: Diag keyword
Date: 17 Aug 92 12:32:15 GMT
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
X-Acknowledge-To: <RZOTTO@DKNKURZ1>

Hello,

as this clearly is a VM-specific topic, I'll reply to the
VM/SP REXX Language Discussion List <VM-REXX@MARIST>, <VM-REXX@OHSTVMA>,
and <VM-REXX@UCF1VM>.  Please direct all contributions pertaining to
this topic to that list (as usual: choose the address nearest to you).

Best regards,
                    Otto Stolz <RZOTTO@DKNKURZ1.Bitnet>
                               <RZOTTO@nyx.uni-konstanz.de>
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU
X-Delivery-Notice:  SMTP MAIL FROM does not correspond to sender.
Newsgroups: comp.lang.rexx
Date:         Thu, 13 Aug 1992 14:30:54 DST
From:         VALOREV@DKIBMVM1.VNET.IBM.COM
Subject:      SH Backquote
Comments: To: rexxlist@ucf1vm.cc.ucf.edu

I can't exactly figure out by backquote, but i presume that by

now=XdateX

you meen that the variable now is assigned the output of function date, this
can be accomplished in REXX by

now=date()

This is known as a function call and it can be used to obtain output from:

  -  REXX Build in functions
  -  External functions                 (Add-on's)
  -  Internal & External Subroutines

With Kind Regards
Victor Valore
Internet: valorev at dkibmvm1.vnet.ibm.com
Bitnet:   valorev at vnet
From: jbthiel@ogicse.ogi.edu (John B. Thiel)
Newsgroups: comp.lang.rexx
Subject: SH backquote functionality in REXX?
Date: 13 Aug 92 04:33:47 GMT
Organization: Oregon Graduate Institute (formerly OGC), Beaverton, OR


What, if any, is a Rexx equivalent to the backquote mechanism as used
in SH, whereby `process` is replaced by the stdio output of the
process?

eg.
now=`date`

-- 
CSNET	jbthiel@cse.ogi.edu
UUCP    ...{sun,tektronix,verdix}!ogicse!jbthiel
Comments: Gated by NETNEWS@AUVM.AMERICAN.EDU