Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!pacific.mps.ohio-state.edu!linac!att!pacbell.com!tandem!zorch!vsi1!teda!netcom!rodent From: rodent@netcom.COM (Ben Discoe) Newsgroups: comp.sys.amiga.programmer Subject: Need ideas on an ARexx port for a large, powerful database manager Message-ID: <1991Apr25.031733.9576@netcom.COM> Date: 25 Apr 91 03:17:33 GMT Organization: Netcom - Online Communication Services UNIX System {408 241-9760 guest} Lines: 51 Let your voice me heard, and influence the course of history! I am in the process of adding an ARexx port to dBMAN, a dBASE 3+ clone for the Amiga. How it will interface with ARexx should be influenced by what its users intend to do with it, so I'm posting here for suggestions. Many applications don't already have a command set, and must invent some to allow ARexx to send it meaningful commands. Well, dBMAN has hundreds of commands and functions (it is largely a database language), so I will assume if someone sends a string through ARexx, it should be treated as if they typed it directly at dBMAN's command prompt. This, receiving commands, is the easy part. There are two tricky issues: how should the application send information back to the ARexx command sender, and what about when dBMAN is already busy running some command? There's the "result" string that could be used, however, the caller would have to specially designate which expression would be passed back. This would look something like this, in an ARexx script: ADDRESS dbman options results 'select 48' 'use test index textndx' 'find joe' 'REXXREPLY(last_name)' name = result 'REXXREPLY(salary * 10.6)' raise = result This is a bit uncomfortable, since it introduces a function REXXREPLY that must not be used by anyone except a calling ARexx macro. What method have other developers used in their ARexx interfaces? The simplest task is adding a "REXXSEND()" function to send Arexx commands out from dBMAN programs. No problem with doing it this way, right? Next, there the matter of what dBMAN should do when busy. dBMAN DOESN'T want to receive any commands when it's busy or executing a dBMAN program. Since waiting for ARexx messages occurs in the same code as waiting for key input, messages will naturally get queued up when dBMAN is busy, but there are times that it wants to respond to its live user only. (like when executing a compiled dbman program, when interpreting a command string could really confuse things.) In these cases, what is the appropriate thing to do with ARexx messages received? Simply send back an error meaning "sorry, I'm busy"? Thanks for your ideas, they will help the ARexx cause and make the Amiga even better. --------------- Ben Discoe, programmer, radical ecologist, old-timer Amigoid.