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

  1. Newsgroups: comp.lang.rexx
  2. Path: sparky!uunet!mcsun!sunic!sejnet.sunet.se!eric
  3. From: eric@sejnet.sunet.se (Eric Thomas)
  4. Subject: Re: Eric's question
  5. Message-ID: <1992Aug29.170623.1@sejnet.sunet.se>
  6. Lines: 93
  7. Sender: news@sunic.sunet.se
  8. Reply-To: ERIC@SEARN.SUNET.SE
  9. Organization: SUNET, Stockholm, Sweden
  10. References: <ANDERS.92Aug29050537@lise3.lise.unit.no> <1992Aug29.163731.1@sejnet.sunet.se>
  11. Date: Sat, 29 Aug 1992 17:06:23 GMT
  12.  
  13. I apologize for the previous post where I quoted everything and said nothing -
  14. I must have hit the wrong key. Here is what I meant to say :-)
  15.  
  16. In article <ANDERS.92Aug29050537@lise3.lise.unit.no>, anders@lise3.lise.unit.no (Anders Christensen) writes:
  17. > Eric Thomas <eric@sejnet.sunet.se> wrote:
  18. >> Ok, time for the usual stupid question. Say I have a program that does:
  19. >> 
  20. >>                   Parse var line ':'tagname'.'value' :'line
  21. > I assume:
  22. >    * You have a program containing this line, and you have a NAMES file
  23. >      as data which it shall process.
  24.  
  25. Noooooooooooooooooooo! Forget the NAMES file, this has nothing to do with the
  26. NAMES format and the NAMEFIND utility. I just have the habit to give "real
  27. life" examples, to prevent people from saying "yeah but in reality you'd never
  28. need to do that". There are thousands of other examples, this is a REXX problem
  29. not a problem with the NAMES format. Let me change my example to:
  30.  
  31.                       Parse var data a b . ' A('c')' d
  32.  
  33. >    * You want to be able to use the program on several platforms,
  34.  
  35. No, and in my opinion this portability concern is what keeps you guys off track
  36. all the time. Portability between different systems is totally irrelevant, the
  37. only thing that matters is portability between different REXX interpreters on
  38. the same type of system. That is, if I write a neat REXX utility for bsd 4.3,
  39. it would be nice if it worked on all bsd 4.3 systems, regardless of the REXX
  40. interpreter they are using. I know very well that it won't work on other
  41. systems regardless of how clever the command trapping syntax comp.lang.rexx
  42. designed is, because 'ls' won't quite do what my program expects on CMS, VMS,
  43. MVS, MS-DOS, you name it. I also know that my knowledge of REXX on CMS won't
  44. help me write anything but simple scripts on unix, because anything beyond the
  45. format of expressions and if/then/else &co will be different - I'll have to
  46. forget about DIAG and learn about LINEIN and the like.
  47.  
  48. My question was more simple: say I have to write a program on one of these
  49. systems with the 200 types of blanks, and you give me a REXX interpreter that
  50. supports them the way you suggested. What does my PARSE statement do? I won't
  51. be able to write working REXX programs if the interpreter and I don't agree on
  52. the meaning of such simple thing as a PARSE statement with a literal string.
  53. How do I tell the interpreter which of my spaces mean SPACE and which mean
  54. white space, given that REXX must accept any literal string?
  55.  
  56. >    Since EBCDIC
  57. >    don't use Tabs, the Tabs in ASCII are translated into EBCDIC
  58. >    Spaces.
  59.  
  60. By the way, ASCII tabs are translated to EBDIC "program tab". XEDIT does
  61. support tabs, but they are a software concept (controlled by a SET TABS editor
  62. command, rather than something you define on the setup screen of your
  63. terminal). XEDIT normally expands tabs when you enter them, but you can get
  64. them if you really want to (for more information, see the help on the COMPRESS,
  65. EXPAND and SET IMAGE commands).
  66.  
  67. > Or suppose
  68. > that you wanted the pattern to match any number of 'a's before two
  69. > 'b's? You can match a specific number of 'a's before two 'b's, but not
  70. > an arbitrary number of 'a's.
  71.  
  72. I've written some 100k lines of REXX and never had that need. If the few cases
  73. where I do need to do such things, I code 2-3 lines of REXX instead of a magic
  74. formula. What do you prefer?
  75.  
  76. --------------- Program 1 --------------------
  77. /* Warning: typed from memory on a VMS system, please forgive errors */
  78. Parse Value Diag(8,'Q F *') with ':' a . ',' b . ',' c . '15'x
  79. t = 0
  80. If Datatype(a,'W') Then t = t + a
  81. If Datatype(b,'W') Then t = t + b
  82. If Datatype(c,'W') Then t = t + c
  83. Return t
  84. --------------- Program 2 --------------------
  85. /* Program split into 2 lines for easier reading */
  86. Interpret "Return 0+0"Translate(Space(Translate(Diag(8,'Q F *'),,,
  87. XRange('00'x,'EF'x))),'+',' ')
  88. ----------------------------------------------
  89.  
  90. If REXX function names were less verbose, the second program might almost look
  91. unixish :-)
  92.  
  93. > Regexps are very powerful, and definitively more powerful than the
  94. > pattern matching of parse. Including regexps into parse' pattern
  95. > matching would indeed add to its power.
  96.  
  97. Oh, please. Why not include awk as well, and all the other unix stuff? People
  98. who want to program in perl can (and do) use perl. REXX is designed to be easy
  99. to learn by people without a DP background. Regular expressions are not
  100. precisely intuitive for this type of people :-)
  101.  
  102.   Eric
  103.