<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>> if the command is followed by a *,</div><div>> the parameter is the selected viewer.</div><div><br></div><div>Yes, I haven't done Oberon programming for years; [but use LNO for</div><div> superb analysis/documentation of complex stuff, which needs:</div><div> 1. see multiple files, together on ONE screen; </div><div> 2. Color/Font related concepts/text - like koki-pens on paper;</div><div>but I remember experimenting with the <* F1 frame-marker> to pipe</div><div>stage N to stage N+1 via the OutputFrame => InputFrame.</div><div><br></div><div>> With Andreas‘ automating method your „Unix piping“ could look</div><div>> like this:</div><div>></div><div>> Oberon.Batch</div><div>>   WAV.FromText input.text => temp.wav ~</div><div>>   MP3.FromWAV temp.wav => final.mp3 ~</div><div>>   System.DeleteFiles temp.wav ~</div><div>> ~</div><div><div><br></div><div>I like that! Could it easily be ported to LNO? From where?</div><div>---</div><div>PS. LEO <linux eth Oberon> was the most magical system I ever used.</div><div>And I could never understand how no one else ever mentioned it. </div><div>And the Canadian who eventually got more aggressive to be given</div><div> d/l info, was banned from this forum....</div><div>Only later, after much painfull testing did I discover that I had</div><div>been just lucky that my 486PC, installed LEO perfectly [font sizeS</div><div>etc.] on the first installation attempt.</div><div>Now on my 2 laptops <LEO's font sizeS> are only usable via Debian7</div><div>installation CD set for 486. I can't bootup the CD just to use LEO!</div></div><div><div>A simple example of LEO's superiority is:</div><div>   show me the latest 22 file names on USBstik2/home/ETH:</div><div>= System.Execute ls -t /mnt/Stik2/home/ETH | less -22</div><div>This relates also to the common absurdity, also adopted by ETHO,</div><div>of not having the DEFAULT file listing in RECENTCY order.</div><div>Imagine working with 3 tools from a toolbox of 50 tools, where </div><div><put down CoffeeCup to fetch TeaSpoon causes CoffeeCup to sinkdown</div><div>to its <alphabetic level>. Which relates to the fact that only after</div><div>computers had been used for sometime was it obvious that the STACK;</div><div>ie. RECENTCY was the best ordering.</div><div>-- Sorry for rant!!</div></div><div><br></div><div><br></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Oct 8, 2020 at 9:23 AM Jörg <<a href="mailto:joerg.straube@iaeth.ch">joerg.straube@iaeth.ch</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">If I look at your request, you ask for TWO Unix/Linux mechanisms to be ported to OberonOS.<br>
1) reading/writing from/to standard input/output<br>
2) building a sequence of tasks by „piping“<br>
<br>
Let‘s start with your requirement 2): running different commands in a sequence is not a functionality that the base Oberon OS offers. However both Andreas and Michael provided Oberon modules offering batch capabilities. We ourselves use these batching tools to automate the Oberon OS build process.<br>
<br>
Coming back to your requirement 1). If you write an Oberon command like e.g. System.CopyFiles you have to carefully plan, how the input/output to your commands look like. Are the parameters numbers, strings, files, texts, viewers...<br>
The Oberon OS offers basically three methods<br>
- parameters are read directly following the command<br>
- if the command is followed by an ^, the parameters are read from the mouse selection<br>
- if the command is followed by a *, the parameter is the selected viewer.<br>
<br>
If you plan to run different commands in a sequence and one command shall take input of other commands, the prefered method is to work with files. Mainly as the RAM on the original system is limited...<br>
<br>
With Andreas‘ automating method your „Unix piping“ could look like this:<br>
<br>
Oberon.Batch<br>
  WAV.FromText input.text => temp.wav ~<br>
  MP3.FromWAV temp.wav => final.mp3 ~<br>
  System.DeleteFiles temp.wav ~<br>
~<br>
<br>
br<br>
Jörg<br>
<br>
> Am 08.10.2020 um 16:46 schrieb eas lab <<a href="mailto:lab.eas@gmail.com" target="_blank">lab.eas@gmail.com</a>>:<br>
> <br>
> <br>
> Sorry that I failed to reply to the existing thread via my intolerable,<br>
> continualy updating [changing to screw the captivated public] M$pook<br>
> mailer.<br>
> ---------<br>
> What about extending [AFAI understand this] to chaining the data thru<br>
> various stages; eg. instead of just having each stage write a TextFrame<br>
> which is MANUALLY marked for input to the next stage.<br>
>   *nix scripting needs only a few lines to use existing <functions> to:<br>
> <TextToMP3(TextFile, MP3File) == described in natual language:<br>
>  remove "[<digits>]"<br>
>  replace <these absurd 3-bytes> with corresponding single/dbl:quotes <br>
>  <other clean text fuctions: each via CHAIN input to output<br>
>  Input to existing TextToWav function<br>
>  Chain to existing WavToMP3<br>
>  Chain to final destination file.<br>
> <br>
> --<br>
> <a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
> <a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
<br>
--<br>
<a href="mailto:Oberon@lists.inf.ethz.ch" target="_blank">Oberon@lists.inf.ethz.ch</a> mailing list for ETH Oberon and related systems<br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/oberon" rel="noreferrer" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/oberon</a><br>
</blockquote></div>