home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / lang / rexx / 707 < prev    next >
Encoding:
Text File  |  1992-08-13  |  3.0 KB  |  104 lines

  1. Xref: sparky comp.lang.rexx:707 comp.os.os2.misc:27301
  2. Path: sparky!uunet!mcsun!corton!lri!jpr
  3. From: jpr@sun4.lri.fr (Jean-Pierre Riviere)
  4. Newsgroups: comp.lang.rexx,comp.os.os2.misc
  5. Subject: Re: Stem vars as arguments?
  6. Message-ID: <1992Aug13.091449.11425@lri.fr>
  7. Date: 13 Aug 92 09:14:49 GMT
  8. References: <ednstras.713591629@kraken>
  9. Sender: jpr@sun4 (Jean-Pierre Riviere)
  10. Organization: Laboratoire de Recherche en Informatique
  11. Lines: 91
  12.  
  13.  
  14. In article <ednstras.713591629@kraken>, ednstras@kraken.itc.gu.edu.au
  15. (Michael Strasser) writes:
  16. |> I am writing a complicated REXX program under OS/2 2.0.  I would like
  17. |> to be
  18. |> able to use a stem variable as an argument to an internal procedure,
  19. |> but my
  20. |> attempts have failed so far.
  21.  
  22. I too have encountered similar problems of which I wanted to post today...
  23.  
  24. |> Here is a simple example:
  25. |> 
  26. |> /* Init the stem var. */
  27. |> Opts.Label = 'Select an option A-C, X'
  28. |> Opts.0 = 4 /* No. options */
  29. |> Opts.1 = 'A'
  30. |> Opts.2 = 'B'
  31. |> Opts.3 = 'C'
  32. |> Opts.4 = 'X'
  33. |> 
  34. |> Choice = GetChoice(Opts)
  35. |> 
  36. |> /* ... */
  37. |> 
  38. |> GetChoice: PROCEDURE
  39. |> ARG Stem  /* Stem var with options */
  40. |> 
  41. |> SAY Stem.Label
  42. |> PULL Resp
  43. |> FOR i = 1 TO Stem.0 DO
  44. |>     IF Resp = Stem.i THEN
  45. |>         LEAVE
  46. |> END /* i */
  47. |> 
  48. |> IF i = Stem.0 + 1 THEN /* Default is Stem.1 */
  49. |>     RETURN Stem.1
  50. |> 
  51. |> RETURN Stem.i
  52. |> 
  53. |> /* End of example */
  54. |> 
  55. |> This doesn't work.  Nor does GetChoice(Opts.) or GetChoice('Opts') or
  56. |> GetChoice('Opts.').  
  57. |> 
  58. |> Is there any way to do what I want?
  59.  
  60. Yes:
  61. GetChoice: PROCEDURE EXPOSE Opts.0 Opts.1 Opts.2 Opts.3 Opts.4
  62.  
  63. This is the only way I found with my own script.
  64. But for me this is not a practicable solution because I have
  65. such things as guy.name.mail.sent.2
  66. So I have to have NO procedure at all which could deal with my stem variables.
  67. Of courses this is dangerous with the name of loop variables and is a very
  68. good way to introduce bugs.
  69.  
  70. It would be nice if rexx allows that the components of a stem variable declared
  71. as EXPOSEd.
  72.  
  73. So how would it best to deal with the construction of "objects" ?
  74. For instance, guy is the class name of the object, and name is a variable
  75. that I use to identify the guy in guy.name Knowing thew guy I can then
  76. allow him a password for instance : guy.name.passwd
  77. But If I have to declare guy.name.passwd and not change name nor passwd
  78. in any procedure I will soon come to BIG PUZZLES too!
  79.  
  80. Anothe problem is that I have difficulty with avoidind painful select loop
  81. with construct like :
  82. /* assgin name of functions to stem var */
  83. choice.quit = myQUIT
  84. choice.read = myREAD
  85. choice.write = myWRITE
  86. say "choice ?"
  87. parse pull this
  88. call choice.this /* doesn't work - I tried variations but to no avail
  89. (value, interpret) */
  90.  
  91. This is really a big trouble to me.
  92.  
  93. How would you then deal with that, you experimented rexx users ?
  94.  
  95. I too would greatly appreciate any help.
  96.  
  97. Jean-Pierre Riviere
  98. LRI - Univ. Orsay
  99. jpr@lri.lri.fr
  100. -- 
  101.   Jean-Pierre RIVIERE        |     ///
  102.   LRI - Universite Paris Sud | \\\///
  103.   e-mail : jpr@lri.lri.fr    |  \///
  104.