Firstly, a big thank you to everyone on this list (and espcially Craig) for helping me get this far. What follows is what I needed to do to get DBD::ODBC working under Perl 5.8.8 on OpenVMS 8.2-1 Itanium and some observations/problems.
What I have =========== OpenVMS 8.2-1 HP C V7.1-011 on OpenVMS IA64 V8.2-1 Installed VMS821I-PCSI-V0100 upgrade Hardware Integrity rx1620 (loaned to us by HP) mms (version?) vmstar (built from sources found in sys$common:[GNV.src.GNV.VMSTAR] ExtUtils::MakeMaker 6.30 (installed after Perl install) What didn't work and I gave up with =================================== Perl 5.6.6 binary from HP's web site because a mms clean always failed with an access violation which I felt was such a bad sign I gave up with it. If you think you too have this problem perl "-MExtUtils::Command" -e "rm_f" foo.[0-9][0-9] died with an access violation for me. Building/Installing Perl ======================== Lesson 1: read the docs, then read them again and don't expect to login to OpenVMS 8 and expect it not to have changed since V5. I wasted some time fighting ODS5 with GNU tar until vmstar and the /ODS2 (or o switch) was found. The symptom of this is untarring perl 5.8.8 to get a very stange (for an old VMS hand) looking PERL-5^.8^.8 directory. Configuration was fine (note I did not enable ithreads) Building kept failing and I noticed messages saying .EXISTS files are in the future. e.g. %MMS-W-GMFUTURE, Time for [-.BLIB.MAN3].EXISTS is in the future: 6-AUG-2006 12:29:13.00 I am prepared to admit there is something wrong with my setup, CRTL (whatever) but I don't know what it is. I have double checked localtime and gmtime functions in CRTL and they appear to return the correct results. However: $ perl -"MExtUtils::Command" -e touch foo.tmp $ dir/full foo.tmp Directory DKA0:[NICK.MARTIN] FOO.TMP;1 File ID: (24832,28,0) Size: 0/0 Owner: [200,1] Created: 7-AUG-2006 08:40:44.67 Revised: 7-AUG-2006 09:40:44.00 (1) and I am suspicious of that revision time since it is one hour in the future. FYI. When I ran @SYS$MANAGER:UTC$TIME_SETUP SHOW I got: AUTO_DLIGHT_SAV is set to "0" and DTSS is not in use. You will have to manually change to/from Daylight Saving Time. You can do this by executing SYS$MANAGER:UTC$TIME_SETUP.COM, or you can use SYS$EXAMPLES:DAYLIGHT_SAVING.COM. LOCAL TIME ZONE = GB -- DAYLIGHT TIME LOCAL SYSTEM TIME = 6-AUG-2006 11:20:11.58 (BST) TIME DIFFERENTIAL FACTOR = 1:00 TIME ZONE RULE = GMT0BST-1,M3.4.0/01,M10.5.0/02 Change GMT to BST on the Fourth Sunday of March (26-Mar-2006) at 01:00 Change BST to GMT on the Last Sunday of October (29-Oct-2006) at 02:00 I tried installing VMS821I_UPDATE-V0300.ZIPEXE but that did not fix the problem. The only thing that worked for me was the change Craig posted: --- lib/ExtUtils/Command.pm;-0 Fri Oct 21 03:55:12 2005 +++ lib/ExtUtils/Command.pm Sun Aug 6 13:30:45 2006 @@ -149,12 +149,11 @@ Makes files exist, with current timestam =cut sub touch { - my $t = time; expand_wildcards(); foreach my $file (@ARGV) { open(FILE,">>$file") || die "Cannot write $file:$!"; close(FILE); - utime($t,$t,$file); + utime(undef,undef,$file); } } A mms test for perl gave the following errors: t/io/fs...................................FAILED at test 5 t/op/stat.................................FAILED at test 33 ext/Devel/PPPort/t/ppphtest...............FAILED--unexpected output at test 0 ext/List/Util/t/p_tainted.................FAILED--no leader found ext/List/Util/t/weak......................FAILED--unexpected output at test 7 lib/ExtUtils/t/basic......................FAILED at test 67 lib/ExtUtils/t/Command....................FAILED at test 8 lib/ExtUtils/t/Constant...................FAILED at test 23 lib/ExtUtils/t/FIRST_MAKEFILE.............FAILED at test 4 lib/ExtUtils/t/PL_FILES...................FAILED at test 3 lib/vmsish................................FAILED at test 22 Failed 13 test scripts out of 892, 98.54% okay. ### Since not all tests were successful, you may want to run some of ### them individually and examine any diagnostic messages they produce. ### See the INSTALL document's section on "make test". ### You have a good chance to get more information by running ### ./perl harness ### in the 't' directory since most (>=80%) of the tests succeeded. u=40.80 s=0.00 cu=0.00 cs=0.00 scripts=892 tests=114061 and a mms install hung with: $ mms install %DCL-I-SUPERSEDE, previous value of PERL_ROOT has been superseded %DCL-I-SUPERSEDE, previous value of PERLSHR has been superseded If F$TrnLnm("Sys") .nes. "" Then Deass SYS MCR Sys$Disk:[]miniperl.exe "-I[.lib]" installperl Deep recursion on subroutine "File::Path::mkpath" at lib/File/Path.pm line 162. However, I found the following links: http://www.nntp.perl.org/group/perl.vmsperl/13873 and the followups in http://www.nntp.perl.org/group/perl.vmsperl/13873 http://www.nntp.perl.org/group/perl.vmsperl/13883 http://www.nntp.perl.org/group/perl.vmsperl/13884 http://www.nntp.perl.org/group/perl.vmsperl/13885 http://www.nntp.perl.org/group/perl.vmsperl/13891 which got me past this by creating my install dir first (although I saw the second, better method of removing the \00000). h2ph is still not working for me. It fails with: Cannot open perl_root:[lib.site_perl.VMS_IA64]/_h2ph_pre.ph: file specification syntax error at perl_root:[utils]h2ph.com line 741. %RMS-F-SYN, file specification syntax error Building/Installing DBI ======================= Using vmstar to unpack it and the usual perl makefile.pl, mms, mms test and mms install worked fine for me although warnings like the following slightly worried me: Warning: long symbol DBD__Perl__db_selectall_arrayref trimmed to DBD_Perl_db_selectal_arayref Building/Installing DBD::ODBC ============================= I have not tried this yet with an ODBC driver manager. I linked DBD::ODBC directly to the driver. You need to set ODBCHOME, DBI_DSN, DBI_USER and DBI_PASS before running the configure e.g. define/log DBI_DSN "dbi:ODBC:test" Configuration worked fine. mms to build failed with: $ mms MCR dka0:[perl]perl.exe "-MExtUtils::Command" -e cp Changes [.blib.lib.DBD.ODBC]Changes.pm @Continue %DCL-E-OPENIN, error opening DKA0:[NICK.MARTIN.DBD-ODBC-1_13]Continue.COM; as input -RMS-E-FNF, file not found %MMS-F-ABORT, For target CONFIG, CLI returned abort status: %X10018292. I got around this by creating a continue.com file that was empty. I've not idea why I need to do this. Is this a bug? Then the build failed with many PTRMISMATCH1 warnings. I think what has happened is that this version of decc returns PTRMISMATCH1 instead of PTRMISMATCH as the cc line contains: /warnings=informational=(outtypelen,ptrmismatch,promotmatchw) Changing the ptrmismatch to ptrmismatch1 in the makefile.pl and rerunning makefile.pl sorts this one out. As with DBI I got a log of the following warnings: Warning: long symbol DBD__ODBC__db_selectall_arrayref trimmed to DBD_ODBC_db_selectal_arayref but as they match the ones in DBI I thought it would be OK and it seems to be. mms test to MS SQL Server though our ODBC-ODBC Bridge appears to mostly work with one notable exception. 1..37 ok 1 - use ODBCTEST; ok 2 - use Data::Dumper; ok 3 - errors on data comparison ok 4 - temporary table handling Can't change param 1 maxlen (51->50) after first bind at t/20sqlserver.t line 180. # Looks like you planned 37 tests but only ran 4. # Looks like your test died just after 4. I've come across this before see http://www.mail-archive.com/dbi-users@perl.org/msg26946.html It is not a VMS-specific issue and what seems to be breaking it is: svGrow(phs->sv, 50 + 1) SvLEN(phs->sv) returns 52! Problem does not exist in perl 5.8.7. This issue was way beyond me back in March and still is. Hope this helps anyone else trying to get DBD::ODBC working on OpenVMS Itanium. If anyone wants to follow up on any of the issues I had let me know. Thanks again for all the assistance. Martin -- Martin J. Evans Easysoft Ltd, UK http://www.easysoft.com