home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #19 / NN_1992_19.iso / spool / comp / lang / rexx / 823 < prev    next >
Encoding:
Text File  |  1992-08-29  |  3.7 KB  |  80 lines

  1. Newsgroups: comp.lang.rexx
  2. Path: sparky!uunet!wrkgrp!ets
  3. From: ets@wrkgrp.COM (Edward T Spire)
  4. Subject: Re: Capturing System Command Output (was: SH Backquote)
  5. Message-ID: <1992Aug28.183336.15975@wrkgrp.COM>
  6. Organization: The Workstation Group
  7. References: <ANDERS.92Aug25012719@lise3.lise.unit.no>
  8. Date: Fri, 28 Aug 92 18:33:36 GMT
  9. Lines: 69
  10.  
  11. anders@lise3.lise.unit.no (Anders Christensen) writes:
  12. : In article <1992Aug24.150430.3770@wrkgrp.COM> ets@wrkgrp.COM (Edward T Spire) writes:
  13. : > : [ on the syntax   ADDRESS ... TO/FROM STREAM streamid ...]
  14. : > Note that the connections to REXX I/O streams simply replace the
  15. : > external data queue as a place to queue up input lines to be processed
  16. : > by the command and output from the command.  The command still runs
  17. : > synchronously, with no real interaction between the REXX program and
  18. : > the command. 
  19. : Why? The only thing needed in order to make this async, is to make the
  20. : environment aware that is should start the command in the background.
  21. : The "environment" in rexx is some slightly undefined entity which is
  22. : half inside the interpreter and half outside. At least under Un*x,
  23. : this could be done something like this:
  24. :    ADDRESS unix "cmd &" TO STREAM outdata FROM STREAM indata
  25. : Then, 'cmd' runs in the background, and 'outdata' and 'indata'
  26. : provides means to communicate with it. The interpreter controls the
  27. : execution of 'cmd' by either reading 'outdata' and writing 'indata'. 
  28. : Other operating system has different syntax to make commands run in
  29. : the background. Exactly how this is done is not really within the
  30. : domain of Rexx. But perhaps an extra subkeyword "ASYNC" should be
  31. : added, so that the interpreter itself knows explicitly that the
  32. : command should run in the background if possible. I am not so sure
  33. : about that.
  34. :
  35. : >              If you want the command to run asynchronously, so that the
  36. : > REXX program can see some of the command's output before deciding upon
  37. : > the rest of it's input, you'll probably want a function call-based
  38. : > approach.
  39. : Some environments are not really suited for async execution, i.e. they
  40. : cannot start a new command before the previous command is ended. In
  41. : these environments, the interpreter will have to be restricted to not
  42. : run another command before the previous was finished. 
  43. : I think the ADDRESS syntax is general enough to handle async commands
  44. : too. I don't want to use functions to start commands. The command
  45. : concept in Rexx is very elegant, and I want to use commands to perform
  46. : commands. I have nothing against using functions to _communicate_ with
  47. : the command running, but I'd like to start it as a command. 
  48.  
  49. Well, right off the top of my head, I see no reason why this could not
  50. be made to work.  However, it is a pretty long way from where we are now
  51. and it would have to be approached with some caution.
  52.   
  53. You would need to firm up this idea of using a program-specified
  54. filename as a handle on an interprocess communications port, and think
  55. about it's impact on the file namespace and accessibility to other
  56. files, etc.
  57.   
  58. You would need a set of functions to control the async process, tell
  59. what it's state is, is it waiting for input, kill it, notice it's
  60. termination, determine it's final return code, etc.
  61.   
  62. The nice thing about doing this kind of stuff exclusively with functions
  63. is that it's easy to test (external functions) and you don't risk the
  64. chance of damaging the language when you do it that way.
  65.  
  66. My impression is that it was no small feat to craft REXX so that it is
  67. easy to use and powerful at the same time.  I would not want to go
  68. wading off on some large extensions like this without their being
  69. carefully thought out and field tested.
  70.   
  71. -Ed
  72.