/*------------------------------------------------------------------- rexxservice(opt,string) Sends contents of string to REXX interpreter. Returns result. If 0 is returned, operation was not successful! EXAMPLE: rexxservice("cmd","xrange('a','z')' 'xrange('A','Z')"); rexxservice("cmd"," X2B('7') "); rexxservice("cmd"," date('n') "); rexxservice("cmd"," 'DATE = 'date('n')' TIME ='time('n') "); rexxservice("cmd"," FORMAT('54372.845',8,2) "); rexxservice("exec","h:\\u\\spfpc40\\macros\\h3.spf cmd words"); Just remember about command line character limitations ie <> | etc. Change rexxpath to point to your REXX interpreter Mark McDonald 2008 ---------------------------------------------------------------------*/ char rexxservice(char *xopt, char *x){ char *xfins = "c:\\temp\\dret.ins"; char *xfret = "c:\\temp\\dret.ret"; char *rexxpath = "h:\\u\\pcdos\\rexx.exe "; //DOSREXX Interpreter //char *rexxpath = "c:\\ooRexx\\rexx.exe "; //OOREXX Interpreter int xhin; int xhret; char *tr; char *td; char *xret = "OK"; char *tcmd; if(xopt == "cmd"){ tr = filedelete(xfret); td = strcompose("rs = ",x,"; tr = lineout('",xfret,"', rs, 1); tr = lineout('",xfret,"'); exit 0;"); xhin = fileopen(xfins,"w"); tr = filerecwrite(xhin,td); fileclose(xhin); tcmd = strcompose("system NOBATCH NOSTOP ",rexxpath, " c:\\temp\\dret.ins"); spfservice("cmd",tcmd); xhret = fileopen(xfret,"r"); if(xhret == 0){return("REXXERROR");} tr = filerecread(xhret,xret); fileclose(xhret); } if(xopt == "exec"){ tcmd = strcompose("system NOBATCH NOSTOP ",rexxpath,x); spfservice("cmd",tcmd); } return(xret); }//rexxservice