Call |
Advanced | |
Aptilis 1 |
Call(IP[:port], SubName [, paramList])
Call allows you to call a sub in another aptilis program
that may be running on the same machine or even on a different
machine on your Intranet, or on the Internet.
The first parameter is the IP number of the machine you
want to talk to. It may be a fully qulaified domain such as:
machine.domain.co.cc,
for example aptilis-newx.cnn.com
(imaginary!)
You can also specify a port as in:
aptilis-newx.cnn.com:63.
The second parameter is the sub name, ie. the sub you want
to call (if it's in a program you haven't written, you have
to have been given its name and the parameters it takes).
You can have up to 32 parameters in call so that leaves
you 30 to pass over.
You are limited to 30 parameters (which should be quite enough
in most cases, actually) but since you can pass arrays, there is
virtually no limit to the amount of information that can be passed.
Return value:
The value returned by the called sub or -1 in case of error,
in which case the _errno variable will contain more details.
Example:
This is a complete example of a 'Talk' program written in aptilis.
This program is a variation of another program that I used to demonstrate
the same thing, but here I added the 'input' in the 'RDspl()' sub. That makes
the program, a one-way, one to one communication device, a bit like the CB radio,
where two people talk in turn.
If you remove the input in the 'RDspl()' sub, you will then need to have two windows
open, one to listen, the other one to talk.
To use this program, use a DOS box (NT/95-98) or a shell and run the eqxTalk.e.txt
program. Select 'L' for listening. The person you want to talk with needs to
do the same thing, but will have to select 'T' instead, and then enter your IP
number. He/She will have to initiate the dialog. You will then reply and so on.
sub main print("Which end? (L)isten or (T)alk?\n") m = upper(trim(input(4)$)$)$ if m = "L" $ TakeCalls(1) print("Program stopped\n") end if if m = "T" $ Chat() end if print("Thank You. Ba-bye\n") end sub sub Chat() print("Who are you talking to?") ip = trim(input(80) $) $ repeat m = input(4000) $ r = call(ip$, "RDspl", m$) $ if r = -1 print("errno = ", _errno$, "\n") else print(r$, "\n") end if m = trim(lower(m$)$)$ until m = "bye" $ end Chat sub RDspl(ip, message) print("[", ip$, "]: ", message$, "\n") reply = input(80) $ if trim(message$) = "kill" $ takeCalls(0) print("Now Leaving...\n") end if return reply$ end RDsplFor more details, see the Remote Sub Invocation topic.