home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 164.lha / ARexx / Flist_etc / Flist.c < prev    next >
C/C++ Source or Header  |  1988-04-28  |  2KB  |  90 lines

  1. /*
  2. *   This program was written by Stephen W. Berry.
  3. *
  4. *   The concept is copyrighted by me, but the program listings
  5. *   executable and documentation are placed in the Public Domain.
  6. *
  7. *   If you find a bug or enhance this program please let me know
  8. *   at the following address:
  9. *
  10. *       The Checkered Ball
  11. *       A-7 Sinai Circle
  12. *       Chelmsford, Ma 01824
  13. *       c/o Stephen Berry
  14. *
  15. */
  16.  
  17. #include "rexx/storage.h"
  18. #include "rexx/rxslib.h"
  19. #include <stdio.h>
  20.  
  21. #define FATALERROR 20L
  22.  
  23. /* external routines - system */
  24.  
  25. extern void CloseLibrary();
  26.  
  27. /* external routines - Rexx */
  28.  
  29. /* external routines - Arp */
  30.  
  31. /* external routines - mine */
  32.  
  33. extern void OpenRexxPort(),DeleteRexxPort(),CleanupRexx();
  34. extern long OpenLib(),StartRexxProg();
  35. extern struct RexxMsg *port,*PollRexxPort(),*WaitMsgPort();
  36.  
  37. /* global variables, structures etc... */
  38.  
  39. struct RexxMsg myrexxport;
  40.  
  41. struct RexxLib *RexxSysBase;    /* the important thing here is the name */
  42.  
  43. long main()
  44. {
  45.     struct RexxMsg *resultmsg;
  46.     LONG equal;
  47.  
  48. /*  I link with arp.lib so that I don't have to open:
  49.     intuition, graphics and arp libraries. */
  50.  
  51.     RexxSysBase = OpenLib("rexxsyslib.library",(LONG)RXSVERS);
  52.     if(RexxSysBase == NULL){
  53.         exit();
  54.     }
  55.  
  56.     OpenRexxPort("flport",&myrexxport);
  57.  
  58.     if(!StartRexxProg(&myrexxport)){    /* start up fl.flex as a rexx task */
  59.         DeleteRexxPort(&myrexxport);
  60.         CloseLibrary(RexxSysBase);
  61.         printf("Couldn't start up fl.flex\n");
  62.         exit();
  63.     }
  64.  
  65.     /* this is a communication test ... */
  66.  
  67.     for(;;) {
  68.  
  69.         resultmsg = WaitRexxPort(&myrexxport);
  70.         printf("got a message of - %s\n",resultmsg->rm_Args[0]);
  71.  
  72.         equal = strcmp(resultmsg->rm_Args[0],"end");
  73.  
  74.         resultmsg->rm_Result1 = 1;  /* shows an error code */
  75.         resultmsg->rm_Result2 = 0;  /* no secondary        */
  76.  
  77.         ReplyMsg(resultmsg);
  78.  
  79.         if( equal == 0 ){
  80.             CleanupRexx(&myrexxport);
  81.             break;
  82.         }
  83.     }   /* end of forever */
  84.  
  85.     DeleteRexxPort(&myrexxport);
  86.     CloseLibrary(RexxSysBase);
  87.     exit(equal);
  88. }
  89.  
  90.