Im Hauptprogramm m�ssen nur noch wenige Schritte unternommen werden, um das ARexx–Interface in Gang zu bringen.
Es m�ssen die exec.library, dos.library und die rexxsyslib.library ge�ffnet werden. Die ersten beiden werden normalerweise schon vom Startup-Code des Compilers ge�ffnet, so da� nur die Rexx–Library von Hand ge�ffnet werden mu�.
Ein ARexx–Host wird mit SetupARexxHost() initialisiert. Optional kann man einen anderen Basisnamen f�r den MsgPort �bergeben. Dann mu� man nur noch in die normale Event-Wait–Behandlung die Abfrage des Portsignals und den Aufruf des Dispatchers einbauen, und schon l�uft die ARexx–Anbindung.
Einer CommandShell wird ein Eingabe–, ein Ausgabe–FileHandle (nicht notwendigerweise verschieden) und ein Prompt–String �bergeben, dann l�uft sie bis EOF. Es ist z.B. auch m�glich, eine CommandShell (mit dos.library / CreateNewProc) als eigenen Proze� asynchron laufen zu lassen. Wenn kein Ausgabe-FileHandle (NULL) �bergeben wird, erfolgen keine Ausgaben.
Hier ein (minimales) Beispielprogramm:
#define HOSTSIG(host) (1L << host->port->mp_SigBit) void main( int argc, char *argv[] ) { struct RexxHost *myhost; BPTR fh; /* Initialisieren */ if( !(RexxSysBase = OpenLibrary( "rexxsyslib.library", 35 )) ) { printf( "No RexxSysLib\n" ); exit( 20 ); } /* Host er�ffnen */ if( !(myhost = SetupARexxHost(NULL)) ) { printf( "No Host\n" ); exit( 20 ); } /* Erst eine CommandShell... */ if( fh = Open( "CON:////CommandShell/AUTO", MODE_NEWFILE ) ) { CommandShell( myhost, fh, fh, "test> " ); Close( fh ); } else printf( "No Console\n" ); /* ...und dann 'richtiger' ARexx-Betrieb */ printf( "Address me on Port %s!\n", myhost->portname ); printf( "Cancel me with CTRL-C\n" ); while( 1 ) { long s = Wait( SIGBREAKF_CTRL_C | HOSTSIG(myhost) ); if( s == SIGBREAKF_CTRL_C ) break; else ARexxDispatch( myhost ); } CloseDownARexxHost( myhost ); CloseLibrary( RexxSysBase ); exit( 0 ); }