Martin J. Evans wrote:

> I hope people on this list do not think this discussion is inappropriate for
> the vmsperl list. If so, please let me know. I had thought of using one of the
> DBI lists but there seems to be fewer VMS people subscribed to those lists -
> possibly because the traffic is so high.

This is an appropriate forum IMO.

> After a great deal of tinkering I have managed to get Perl, DBI and DBD::ODBC
> working on VMS 7.2 with the Easysoft ODBC-ODBC Bridge. I can now get data from
> MS SQLServer and MS Access back to a VMS box through Perl DBI - I did not
> mention it but this was the goal.

Congratulations.

> In VMS I got:
> 
> mms
> %MMS-F-GWKNOPRN, There are no known sources for the current target
> [.BLIB.ARCH.AUTO.DBI]DRIVER.XST
> 
> The directory [.BLIB] and subdirectories were never created by the descrip.mms
> file and no file copies occurred.
> 
> I discovered that an mms config creates the directories but the file copies are
> still missing. Then, today when I got around to investigating this properly I
> discovered mms all, appears to do it correct - it surprised me that I had to
> mention all as the target.

As Craig Berry helpfully pointed out this is documented:

     Format:

       $ MMS [qualifier...] [target,...]

     If you do not specify a target on the command line, MMS processes the
     first target in the description file.

unfortunately there was no way for you to simply know ahead of time that
the 'all' target was not listed first in the generated descrip.mms file
short of reading it yourself (which would be an unreasonable requirement).

> >>     $ perl 'f$env("procedure")' 'p1' 'p2' ... 'p8' !
> >>     $ exit++ + ++$status != 0 and $exit = $status = undef; -w
> >> 
> >>     I could not run dbish without removing these two lines!
> > 
> > That is a DCL wrapper since apparently dbish.pl is listed as
> > an EXE file by the Makefile.PL.  You could have invoked it
> > from the command prompt as:
> > 
> >      @dbish.pl
> > 
> > or:
> > 
> >      @disk:[dir]dbish.pl
> 
> I tried that and got:
> 
> "use" not allowed in expression at dka200:[perl-5_6_0.utils]dbish.pl;4 line 4,
> at end of line
> syntax error at dka200:[perl-5_6_0.utils[dbish.pl;4, near "use strict"
> BEGIN not safe after errors--compilation aborted at
> dka200:[perl-5_6_0.utils[dbish.pl;4 line 6
> %SYSTEM-F-NOLOGNAM, no logical name match

A bungled attempt at over automation.  Here is the head of 
dbish.pl in the raw:

# -*- perl -*-

use strict;

my $script = <<'SCRIPT';
~startperl~ -w

use strict;

use DBI::Shell;
shell(@ARGV);
exit(0);

And unfortunately the ~startperl~ substitution doesn't work with:

$ perl "-V:startperl"
startperl='$ perl 'f$env("procedure")' 'p1' 'p2' 'p3' 'p4' 'p5' 'p6' 'p7' 'p8'
!
$ exit++ + ++$status != 0 and $exit = $status = undef;';

$ sea makefile.PL exe,vms
my $ext_pl = $^O eq 'VMS' ? '.pl' : '';
    EXE_FILES => [ "dbish$ext_pl", "dbiproxy$ext_pl" ],
    Then 'make test' to execute self tests.

then see if removing the exit line from the extracted dbish.pl will
work with @dbish.pl.

> >> I have moved on to DBD::ODBC and am working on modifications to the
> >> Makefile.PL as it does not work for VMS properly. One problem here is that
> >> Makefile.PL for DBD::ODBC uses glob and my main Perl failed with glob-basic
> >> test 3 failed. Other problems are failure to include the olbs in the link
> >> line.
> 
> > Perl's glob() works on VMS, however it does work different from Unix or
> > NT implementations of glob().  The test suite did not take that into
> > consideration when 5.6.0 was released, but there are patches to correct
> > the tests that have been discussed on this list.
> 
> Thanks for the info on the test suite however my problem seems to be in
> addition to that. When I run perl Makefile.PL for DBD::ODBC there is some Perl
> like this:
> 
> $myodbc = 'unixodbc'
>         if <$odbchome/lib/libodbc*>;
> 
> which produces:
> 
> glob failed (can't start child: invalid argument) at makefile.pl line nnn

Hmmm... what is $odbchome in your case?

Peter Prymmer


Reply via email to