home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rximc175.zip / rexxsaa.h < prev    next >
Text File  |  2002-08-06  |  6KB  |  228 lines

  1. /* Definitions for the SAA REXX API (supplied with REXX/imc) */
  2.  
  3. #ifdef __STDC__
  4. #define Args(a) a
  5. #else
  6. #define Args(a) ()
  7. #endif
  8.  
  9. #ifdef INCL_REXXSAA
  10. #define INCL_RXSHV
  11. #define INCL_RXSUBCOM
  12. #define INCL_RXSYSEXIT
  13. #define INCL_RXFUNC
  14. #endif
  15.  
  16. typedef char CHAR;
  17. typedef short SHORT;
  18. typedef long LONG;
  19. typedef char *PSZ;
  20. typedef CHAR *PCHAR;
  21. typedef SHORT *PSHORT;
  22. typedef LONG *PLONG;
  23. typedef unsigned char UCHAR;
  24. typedef unsigned short USHORT;
  25. typedef unsigned long ULONG;
  26. typedef USHORT *PUSHORT;
  27. typedef char *PCH;
  28. typedef unsigned char *PUCHAR;
  29.  
  30. typedef struct _RXSTRING {
  31.         ULONG strlength;
  32.         char *strptr;
  33. } RXSTRING;
  34. typedef RXSTRING *PRXSTRING;
  35.  
  36. #define MAKERXSTRING(x,c,l)   ((x).strptr=(c),(x).strlength=(l))
  37. #define RXNULLSTRING(x)       (!(x).strptr)
  38. #define RXSTRLEN(x)           ((x).strptr ? (x).strlength : 0UL)
  39. #define RXSTRPTR(x)           ((x).strptr)
  40. #define RXVALIDSTRING(x)      ((x).strptr && (x).strlength)
  41. #define RXZEROLENSTRING(x)    ((x).strptr && !(x).strlength)
  42. #define RXRESULTLEN           256
  43.  
  44. #define APIRET ULONG     /* some apps use these to get correct */
  45. #define APIENTRY         /* function linkage */
  46. typedef ULONG (*PFN)();
  47.  
  48. #define RXCOMMAND         1
  49. #define RXSUBROUTINE      2
  50. #define RXFUNCTION        4
  51.  
  52. #ifdef INCL_RXSYSEXIT
  53.  
  54. #define RXCMD        0
  55. #define RXCMDHST        1
  56.  
  57. #define RXSIO        1
  58. #define RXSIOSAY        1
  59. #define RXSIOTRC        2
  60. #define RXSIOTRD        3
  61. #define RXSIODTR        4
  62.  
  63. #define RXINI        2
  64. #define RXINIEXT        1
  65.  
  66. #define RXTER        3
  67. #define RXTEREXT        1
  68.  
  69. #define RXEXITNUM    4   /* number of  main exits */
  70.  
  71. #define RXENDLST    100
  72.  
  73. #define RXEXIT_OK         0
  74. #define RXEXIT_NOTREG    30
  75. #define RXEXIT_NOEMEM  1002
  76. #define RXEXIT_BADTYPE 1003
  77.  
  78. #define RXEXIT_HANDLED       0
  79. #define RXEXIT_NOT_HANDLED   1
  80. #define RXEXIT_RAISE_ERROR (-1)
  81.  
  82. typedef struct {
  83.    struct {
  84.       unsigned int rxfcfail:1;
  85.       unsigned int rxfcerr:1;
  86.    } rxcmd_flags;
  87.    char *rxcmd_address;
  88.    unsigned short rxcmd_addressl;
  89.    char *rxcmd_dll;
  90.    unsigned short rxcmd_dll_len;
  91.    RXSTRING rxcmd_command;
  92.    RXSTRING rxcmd_retc;
  93. } RXCMDHST_PARM;
  94.  
  95. typedef struct {
  96.    RXSTRING rxsio_string;
  97. } RXSIOSAY_PARM;
  98.  
  99. typedef struct {
  100.    RXSTRING rxsio_string;
  101. } RXSIOTRC_PARM;
  102.  
  103. typedef struct {
  104.    RXSTRING rxsiotrd_retc;
  105. } RXSIOTRD_PARM;
  106.  
  107. typedef struct {
  108.    RXSTRING rxsiodtr_retc;
  109. } RXSIODTR_PARM;
  110.  
  111. typedef union {
  112.    RXCMDHST_PARM cmdhst;
  113.    RXSIOSAY_PARM siosay;
  114.    RXSIOTRC_PARM siotrc;
  115.    RXSIOTRD_PARM siotrd;
  116.    RXSIODTR_PARM siodtr;
  117. } EXIT_PARM;
  118. typedef EXIT_PARM *PEXIT;
  119.  
  120. typedef struct {
  121.    char *sysexit_name;
  122.    short sysexit_code;
  123. } RXSYSEXIT;
  124. typedef RXSYSEXIT *PRXSYSEXIT;
  125.  
  126. typedef LONG (RexxExitHandler) Args((LONG,LONG,PEXIT));
  127.  
  128. ULONG RexxRegisterExitExe Args((PSZ EnvName,RexxExitHandler *EntryPoint,
  129.       PUCHAR UserArea));
  130.  
  131. ULONG RexxDeregisterExit Args((PSZ EnvName,PSZ ModuleName));
  132.  
  133. ULONG RexxQueryExit Args((PSZ EnvName,PSZ ModuleName,
  134.       unsigned short *flag, unsigned char *area));
  135.  
  136. #else  /* INCL_RXSYSEXIT */
  137. typedef void *PRXSYSEXIT;
  138. #endif /* INCL_RXSYSEXIT */
  139.  
  140. /* Now RXSYSEXIT is defined, we can declare RexxStart... */
  141. long RexxStart Args((long argc, PRXSTRING argv, char *name,
  142.      PRXSTRING instore, PSZ envname, long calltype, PRXSYSEXIT exits,
  143.      short *rc, PRXSTRING result));
  144.  
  145. long RexxStartProgram Args((char *argv0, long argc, PRXSTRING argv, char *name,
  146.      char *callname, PRXSTRING instore, PSZ envname, long calltype,
  147.      int flags, PRXSYSEXIT exits, short *rc, PRXSTRING result));
  148.  
  149. #ifdef INCL_RXSHV
  150.  
  151. #define RXSHV_OK       0x00    /* OK */
  152. #define RXSHV_NEWV     0x01    /* New variable */
  153. #define RXSHV_LVAR     0x02    /* Last variable */
  154. #define RXSHV_TRUNC    0x04    /* Name or value has been truncated */
  155. #define RXSHV_BADN     0x08    /* Invalid name */
  156. #define RXSHV_MEMFL    0x10    /* Out of memory */
  157. #define RXSHV_BADF     0x20    /* Invalid function code */
  158.  
  159. #define RXSHV_NOAVL    0x90    /* Interface not available */
  160.  
  161. #define RXSHV_SET      0x00    /* Set direct variable */
  162. #define RXSHV_FETCH    0x01    /* Fetch direct variable */
  163. #define RXSHV_DROPV    0x02    /* Drop direct variable */
  164. #define RXSHV_SYSET    0x03    /* Set symbolic variable */
  165. #define RXSHV_SYFET    0x04    /* Fetch symbolic variable */
  166. #define RXSHV_SYDRO    0x05    /* Drop symbolic variable */
  167. #define RXSHV_NEXTV    0x06    /* Get next variable */
  168. #define RXSHV_PRIV     0x07    /* Get private information */
  169. #define RXSHV_EXIT     0x08    /* Set function exit value */
  170.  
  171. typedef struct shvnode
  172. {
  173.    struct shvnode *shvnext;
  174.    RXSTRING shvname, shvvalue;
  175.    ULONG shvnamelen, shvvaluelen;
  176.    UCHAR shvcode, shvret;
  177. } SHVBLOCK;
  178. typedef struct shvnode *PSHVBLOCK;
  179.  
  180. ULONG RexxVariablePool Args((PSHVBLOCK RequestBlockList));
  181.  
  182. #endif /* INCL_RXSHV */
  183.  
  184. #ifdef INCL_RXSUBCOM
  185.  
  186. typedef ULONG RexxSubcomHandler Args((PRXSTRING,PUSHORT,PRXSTRING));
  187.  
  188. ULONG RexxRegisterSubcomExe Args((PSZ EnvName,
  189.       RexxSubcomHandler *EntryPoint, PUCHAR UserArea));
  190.  
  191. ULONG RexxDeregisterSubcom Args((PSZ EnvName, PSZ ModuleName));
  192.  
  193. ULONG RexxQuerySubcom Args((PSZ Envname, PSZ ModuleName,
  194.       PUSHORT flag, PUCHAR UserArea));
  195.  
  196. #define RXSUBCOM_OK           0
  197. #define RXSUBCOM_DUP         10
  198. #define RXSUBCOM_NOTREG      30
  199. #define RXSUBCOM_NOCANDROP   40
  200. #define RXSUBCOM_BADTYPE   1003
  201. #define RXSUBCOM_NOEMEM    1002
  202.  
  203. #define RXSUBCOM_ERROR        1
  204. #define RXSUBCOM_FAILURE      2
  205.  
  206. #endif /* INCL_RXSUBCOM */
  207.  
  208. #ifdef INCL_RXFUNC
  209.  
  210. typedef ULONG (RexxFunctionHandler) Args((PSZ name, ULONG argc,
  211.         RXSTRING argv[], PSZ QueueName, PRXSTRING Retstr));
  212.  
  213. ULONG RexxRegisterFunctionDll Args((PSZ name, PSZ dllname, PSZ entryname));
  214.  
  215. ULONG RexxRegisterFunctionExe Args((PSZ name,
  216.       RexxFunctionHandler *EntryPoint));
  217.  
  218. ULONG RexxDeregisterFunction Args((PSZ name));
  219.  
  220. ULONG RexxQueryFunction Args((PSZ name));
  221.  
  222. #define RXFUNC_OK         0
  223. #define RXFUNC_DEFINED   10
  224. #define RXFUNC_NOTREG    30
  225. #define RXFUNC_NOMEM     20
  226.  
  227. #endif /* INCL_RXFUNC */
  228.