1*85009909Smillert/* Test PERLREXX.DLL */ 2*85009909Smillert/* Example: 3*85009909Smillert perlrexx.cmd BEGIN {push @INC, 'lib'} use OS2::REXX; REXX_eval "address cmd\n'copyy'"; 4*85009909Smillert */ 5*85009909Smillert 6*85009909Smillertcall RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs' 7*85009909Smillertcall SysLoadFuncs 8*85009909Smillert 9*85009909Smillertparse arg args 10*85009909Smillertretval = runperl(args) 11*85009909Smillertsay 'retval = "'retval'"' 12*85009909Smillertexit 0 13*85009909Smillert 14*85009909Smillertaddperl: procedure 15*85009909Smillert parse arg perlf 16*85009909Smillert pathname='perlrexx' 17*85009909Smillert r = RxFuncAdd(perlf, pathname, perlf) 18*85009909Smillert say "RxFuncAdd("perlf","pathname") -> "r 19*85009909Smillert return 20*85009909Smillert 21*85009909Smillertrunperl1: procedure 22*85009909Smillert parse arg perlarg 23*85009909Smillert call addperl('PERL') 24*85009909Smillert call addperl('PERLTERM') 25*85009909Smillert call addperl('PERLEXIT') 26*85009909Smillert call addperl('PERLEVAL') 27*85009909Smillert call addperl('PERLLASTERROR') 28*85009909Smillert signal on syntax name runperl_error 29*85009909Smillert/* signal on error name runperl_error 30*85009909Smillert signal on failure name runperl_error */ 31*85009909Smillert say "doing PERLEVAL("perlarg")" 32*85009909Smillert tmp = PERLEVAL(perlarg) 33*85009909Smillert say "PERLEVAL -> '"tmp"'" 34*85009909Smillert signal off syntax 35*85009909Smillert call RxFuncDrop 'PERL' 36*85009909Smillert call RxFuncDrop 'PERLLASTERROR' 37*85009909Smillert call RxFuncDrop 'PERLTERM' 38*85009909Smillert call RxFuncDrop 'PERLEVAL' 39*85009909Smillert call PERLEXIT 40*85009909Smillert call RxFuncDrop 'PERLEXIT' 41*85009909Smillert return pathname ': PERLEVAL('perlarg') =' tmp 42*85009909Smillert 43*85009909Smillertrunperl: procedure 44*85009909Smillert parse arg perlarg 45*85009909Smillert pathname='perlrexx' 46*85009909Smillert r = RxFuncAdd("PerlExportAll", pathname, "PERLEXPORTALL") 47*85009909Smillert say "RxFuncAdd("'PerlExportAll'","pathname") -> "r 48*85009909Smillert r = PerlExportAll() 49*85009909Smillert say "PerlExportAll() -> "r 50*85009909Smillert signal on syntax name runperl_error 51*85009909Smillert/* signal on error name runperl_error 52*85009909Smillert signal on failure name runperl_error */ 53*85009909Smillert say "doing PERLEVAL("perlarg")" 54*85009909Smillert tmp = PERLEVAL(perlarg) 55*85009909Smillert say "PERLEVAL -> '"tmp"'" 56*85009909Smillert address evalperl perlarg 57*85009909Smillert say "Did address evalperl "perlarg 58*85009909Smillert signal off syntax 59*85009909Smillert r = PerlDropAllExit() 60*85009909Smillert /* The following line is not reached... Why? */ 61*85009909Smillert say "PerlDropAllExit() -> "r 62*85009909Smillert return pathname ': PERLEVAL('perlarg') =' tmp 63*85009909Smillert 64*85009909Smillert 65*85009909Smillertrunperl_error: 66*85009909Smillert return pathname ': REXX->Perl interface not available; rc="'rc'", .rs="'.rs'", errstr="'errortext(rc)'", perlerr="'PERLLASTERROR()'"' 67*85009909Smillert 68*85009909Smillert/* return pathname ': REXX->Perl interface not available; rc="'rc'", .rs="'.rs'", errstr="'errortext(rc)'", perlerr="???"' */ 69