
/* Some macro definitions                                               */

#define RXSNAME  "rexxsyslib.library"
#define RXSID    "rexxsyslib 1.06 (07 MAR 88)\n"
#define RXSDIR   "REXX"
#define RXSTNAME "ARexx"

/* Global flag bit definitions for RexxMaster                           */
#define RLFB_TRACE RTFB_TRACE          /* interactive tracing?          */
#define RLFB_HALT  RTFB_HALT           /* halt execution?               */
#define RLFB_SUSP  RTFB_SUSP           /* suspend execution?            */
#define RLFB_STOP  6                   /* deny further invocations      */
#define RLFB_CLOSE 7                   /* close the master              */

#define RLFMASK    (1<<RLFB_TRACE) | (1<<RLFB_HALT) | (1<<RLFB_SUSP)

/* Initialization constants                                             */
#define RXSVERS    34                  /* main version                  */
#define RXSREV     7                   /* revision                      */
#define RXSALLOC   0x800000            /* maximum allocation            */
#define RXSCHUNK   1024                /* allocation quantum            */
#define RXSNEST    32                  /* expression nesting limit      */
#define RXSTPRI    0                   /* task priority                 */
#define RXSSTACK   4096                /* stack size                    */
#define RXSLISTH   5                   /* number of list headers        */

/* Character attribute flag bits used in REXX.                          */
#define CTB_SPACE   0                  /* white space characters        */
#define CTB_DIGIT   1                  /* decimal digits 0-9            */
#define CTB_ALPHA   2                  /* alphabetic characters         */
#define CTB_REXXSYM 3                  /* REXX symbol characters        */
#define CTB_REXXOPR 4                  /* REXX operator characters      */
#define CTB_REXXSPC 5                  /* REXX special symbols          */
#define CTB_UPPER   6                  /* UPPERCASE alphabetic          */
#define CTB_LOWER   7                  /* lowercase alphabetic          */
                                                                      
/* Attribute flags                                                      */
#define CTF_SPACE   (1 << CTB_SPACE)
#define CTF_DIGIT   (1 << CTB_DIGIT)
#define CTF_ALPHA   (1 << CTB_ALPHA)
#define CTF_REXXSYM (1 << CTB_REXXSYM)
#define CTF_REXXOPR (1 << CTB_REXXOPR)
#define CTF_REXXSPC (1 << CTB_REXXSPC)
#define CTF_UPPER   (1 << CTB_UPPER)
#define CTF_LOWER   (1 << CTB_LOWER)

/*
 *   This is the list of functions we can access.  (Cheap forward
 *   declarations, too.)
 */

/*
 *   Maximum messages that can be pending, and the return codes
 *   for two bad situations.
 */
#define MAXRXOUTSTANDING (300)
#define RXERRORIMGONE (100)
#define RXERRORNOCMD (30)
/*
 *   This is the association list you build up (statically or
 *   dynamically) that should be terminated with an entry with
 *   NULL for the name . . .
 */
struct rexxCommandList {
   char *name ;
   char *(*userdata)() ;
};
