1*b39c5158SmillertBEGIN { 2*b39c5158Smillert chdir 't' if -d 't/lib'; 3*b39c5158Smillert @INC = '../lib' if -d 'lib'; 4*b39c5158Smillert require Config; import Config; 5*b39c5158Smillert if (-d 'lib' and $Config{'extensions'} !~ /\bOS2(::|\/)REXX\b/) { 6*b39c5158Smillert print "1..0 # skipped: OS2::REXX not built\n"; 7*b39c5158Smillert exit 0; 8*b39c5158Smillert } 9*b39c5158Smillert if (defined $ENV{PERL_TEST_NOVREXX}) { 10*b39c5158Smillert print "1..0 # skipped: request via PERL_TEST_NOVREXX\n"; 11*b39c5158Smillert exit 0; 12*b39c5158Smillert } 13*b39c5158Smillert} 14*b39c5158Smillert 15*b39c5158Smillertuse OS2::REXX; 16*b39c5158Smillert 17*b39c5158Smillert$name = "VREXX"; 18*b39c5158Smillert$path = $ENV{LIBPATH} || $ENV{PATH} or die; 19*b39c5158Smillertforeach $dir (split(';', $path)) { 20*b39c5158Smillert next unless -f "$dir/$name.DLL"; 21*b39c5158Smillert $found = "$dir/$name.DLL"; 22*b39c5158Smillert print "# found at `$found'\n"; 23*b39c5158Smillert last; 24*b39c5158Smillert} 25*b39c5158Smillert$found or print "1..0 # skipped: cannot find $name.DLL\n" and exit; 26*b39c5158Smillert 27*b39c5158Smillertprint "1..10\n"; 28*b39c5158Smillert 29*b39c5158SmillertREXX_call { 30*b39c5158Smillert $vrexx = DynaLoader::dl_load_file($found) or die "not ok 1\n# load\n"; 31*b39c5158Smillert print "ok 1\n"; 32*b39c5158Smillert $vinit = DynaLoader::dl_find_symbol($vrexx, "VINIT") or die "find vinit"; 33*b39c5158Smillert print "ok 2\n"; 34*b39c5158Smillert $vexit = DynaLoader::dl_find_symbol($vrexx, "VEXIT") or die "find vexit"; 35*b39c5158Smillert print "ok 3\n"; 36*b39c5158Smillert $vmsgbox = DynaLoader::dl_find_symbol($vrexx, "VMSGBOX") or die "find vmsgbox"; 37*b39c5158Smillert print "ok 4\n"; 38*b39c5158Smillert $vversion= DynaLoader::dl_find_symbol($vrexx, "VGETVERSION") or die "find vgetversion"; 39*b39c5158Smillert print "ok 5\n"; 40*b39c5158Smillert 41*b39c5158Smillert $result = OS2::REXX::_call("VInit", $vinit) or die "VInit"; 42*b39c5158Smillert print "ok 6\n"; 43*b39c5158Smillert print "# VInit: $result\n"; 44*b39c5158Smillert 45*b39c5158Smillert OS2::REXX::_set("MBOX.0" => 4, 46*b39c5158Smillert "MBOX.1" => "Perl VREXX Access Test", 47*b39c5158Smillert "MBOX.2" => "", 48*b39c5158Smillert "MBOX.3" => "(C) Andreas Kaiser", 49*b39c5158Smillert "MBOX.4" => "December 1994") 50*b39c5158Smillert or die "set var"; 51*b39c5158Smillert print "ok 7\n"; 52*b39c5158Smillert 53*b39c5158Smillert $result = OS2::REXX::_call("VGetVersion", $vversion) or die "VMsgBox"; 54*b39c5158Smillert print "ok 8\n"; 55*b39c5158Smillert print "# VGetVersion: $result\n"; 56*b39c5158Smillert 57*b39c5158Smillert $result = OS2::REXX::_call("VMsgBox", $vmsgbox, "", "Perl", "MBOX", 1) or die "VMsgBox"; 58*b39c5158Smillert print "ok 9\n"; 59*b39c5158Smillert print "# VMsgBox: $result\n"; 60*b39c5158Smillert 61*b39c5158Smillert OS2::REXX::_call("VExit", $vexit); 62*b39c5158Smillert print "ok 10\n"; 63*b39c5158Smillert}; 64