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