updated for version 7.4.197
Problem:    Various problems on VMS.
Solution:   Fix several VMS problems. (Zoltan Arpadffy)
diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms
index de3fb48..a20fa1f 100644
--- a/src/testdir/Make_vms.mms
+++ b/src/testdir/Make_vms.mms
@@ -4,7 +4,7 @@
 # Authors:	Zoltan Arpadffy, <arpadffy@polarhome.com>
 #		Sandor Kopanyi,  <sandor.kopanyi@mailbox.hu>
 #
-# Last change:  2014 Feb 23
+# Last change:  2014 Mar 12
 #
 # This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
 # Edit the lines in the Configuration section below to select.
@@ -41,16 +41,31 @@
 # They fail because VMS does not support file names.
 # WANT_SPELL = YES
 
-# Comment out if you want to run mzschema  tests.
+# Comment out if you want to run mzschema tests.
 # It fails because VMS does not support this feature yet.
 # WANT_MZSCH = YES
 
+# Comment out if you have ODS-5 file system                                                                                                                 
+# HAVE_ODS5 = YES
+
 # Comment out if you have gzip on your system
 # HAVE_GZIP = YES
 
 # Comment out if you have GNU compatible diff on your system
 # HAVE_GDIFF = YES
 
+# Comment out if you have GNU compatible cksum on your system                                                                                                  
+# HAVE_CKSUM = YES
+
+# Comment out if you have ICONV support                                                                                                  
+# HAVE_ICONV = YES
+
+# Comment out if you have LUA support
+# HAVE_LUA = YES
+
+# Comment out if you have PYTHON support
+# HAVE_PYTHON = YES
+
 #######################################################################
 # End of configuration section.
 #
@@ -63,37 +78,44 @@
 
 SCRIPT = test1.out  test2.out  test3.out  test4.out  test5.out  \
 	 test6.out  test7.out  test8.out  test9.out  test10a.out\
-	 test13.out test14.out test15.out test17.out \
+	 test13.out test14.out test15.out \
 	 test18.out test19.out test20.out test21.out test22.out \
 	 test23.out test24.out test26.out \
 	 test28.out test29.out test30.out test31.out test32.out \
 	 test33.out test34.out test35.out test36.out test37.out \
 	 test38.out test39.out test40.out test41.out test42.out \
 	 test43.out test44.out test45.out test46.out \
-	 test48.out test51.out test53.out test54.out test55.out \
-	 test56.out test57.out test60.out \
+	 test48.out test49.out test51.out test53.out test54.out \
+	 test55.out test56.out test57.out test60.out \
 	 test61.out test62.out test63.out test64.out test65.out \
 	 test66.out test67.out test68.out test69.out \
 	 test71.out test72.out test74.out test75.out test76.out \
-	 test77.out test78.out test79.out test80.out test81.out \
-	 test82.out test83.out test84.out test88.out test89.out \
+	 test77a.out test78.out test79.out test80.out test81.out \
+	 test82.out test84.out test88.out test89.out \
 	 test90.out test91.out test92.out test93.out test94.out \
-	 test95.out test96.out test97.out test98.out test99.out \
-	 test100.out test101.out test102.out test103.out test104.out \
+	 test95.out test96.out test98.out test99.out \
+	 test100.out test101.out test103.out test104.out \
 	 test105.out
 
 # Known problems:
-# Test 30: a problem around mac format - unknown reason
+# test17: ?
 #
-# Test 32: VMS is not case sensitive and all filenames are lowercase within Vim
+# test30: bug, most probably - a problem around mac format
+#
+# test32: VMS is not case sensitive and all filenames are lowercase within Vim
 # (this should be changed in order to preserve the original filename) - should
 # be fixed. VMS allows just one dot in the filename
 #
-# Test 58 and 59: Failed/Hangs - VMS does not support spell files (file names
+# test58, test59: Failed/Hangs - VMS does not support spell files (file names
 # with too many dots).
 #
-# Test 72: unknown reason
-# Test 85: no Lua interface
+# test72: bug - Vim hangs at :rename (while rename works well otherwise)
+# test78: bug - Vim dies at :recover Xtest 
+# test83: ?
+# test85: no Lua interface
+# test89: bug - findfile() does not work on VMS (just in the current directory) 
+# test97, test102: Just ODS-5 supports space and special chars in the filename.
+# On ODS-2 tests fail. 
 
 .IFDEF WANT_GUI
 SCRIPT_GUI = test16.out
@@ -101,7 +123,7 @@
 .ENDIF
 
 .IFDEF WANT_UNIX
-SCRIPT_UNIX = test10.out test12.out test25.out test27.out test49.out test73.out
+SCRIPT_UNIX = test10.out test12.out test17.out test25.out test27.out test49.out test73.out
 .ENDIF
 
 .IFDEF WANT_WIN
@@ -116,6 +138,10 @@
 SCRIPT_MZSCH = test70.out 
 .ENDIF
 
+.IFDEF HAVE_ODS5                                                                                                                                   
+SCRIPT_ODS5 = test97.out test102.out                                                                                                   
+.ENDIF  
+
 .IFDEF HAVE_GZIP
 SCRIPT_GZIP = test11.out
 .ENDIF
@@ -124,10 +150,28 @@
 SCRIPT_GDIFF = test47.out
 .ENDIF
 
+.IFDEF HAVE_CKSUM
+SCRIPT_CKSUM = test77.out
+.ENDIF
+
+.IFDEF HAVE_ICONV
+SCRIPT_ICONV = test83.out
+.ENDIF
+
+.IFDEF HAVE_LUA
+SCRIPT_LUA = test85.out
+.ENDIF
+
+.IFDEF HAVE_PYTHON
+SCRIPT_PYTHON = test86.out test87.out
+.ENDIF
+
 .in.out :
 	-@ !clean up before doing the test
 	-@ if "''F$SEARCH("test.out.*")'" .NES. "" then delete/noconfirm/nolog test.out.*
 	-@ if "''F$SEARCH("$*.out.*")'"   .NES. "" then delete/noconfirm/nolog $*.out.*
+	-@ ! define TMP if not set - some tests use it
+	-@ if "''F$TRNLNM("TMP")'" .EQS. "" then define/nolog TMP []
 	-@ write sys$output " "
 	-@ write sys$output "-----------------------------------------------"
 	-@ write sys$output "                "$*" "
@@ -140,9 +184,10 @@
 	-@ if "''F$SEARCH("$*.out.*")'"   .NES. "" then differences /par $*.out $*.ok;
 	-@ !clean up after the test
 	-@ if "''F$SEARCH("Xdotest.*")'"  .NES. "" then delete/noconfirm/nolog Xdotest.*.*
+	-@ if "''F$SEARCH("Xtest.*")'"    .NES. "" then delete/noconfirm/nolog Xtest.*.*
 
-all : clean nolog $(START_WITH) $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_WIN) $(SCRIPT_SPELL) $(SCRIPT_GZIP) \
-    $(SCRIPT_GDIFF) $(SCRIPT_MZSCH) nolog 
+all : clean nolog $(START_WITH) $(SCRIPT) $(SCRIPT_GUI) $(SCRIPT_UNIX) $(SCRIPT_WIN) $(SCRIPT_SPELL) $(SCRIPT_ODS5) $(SCRIPT_GZIP) \
+    $(SCRIPT_GDIFF) $(SCRIPT_MZSCH) $(SCRIPT_CKSUM) $(SCRIPT_ICONV) $(SCRIPT_LUA) $(SCRIPT_PYTHON) nolog 
 	-@ write sys$output " "
 	-@ write sys$output "-----------------------------------------------"
 	-@ write sys$output "                All done"
@@ -165,13 +210,18 @@
 	-@ write sys$output "                Test results:"
 	-@ write sys$output "-----------------------------------------------"
 	-@ write sys$output "MAKE_VMS.MMS options:"
-	-@ write sys$output "   WANT_GUI  = ""$(WANT_GUI)"" "
-	-@ write sys$output "   WANT_UNIX = ""$(WANT_UNIX)"" "
-	-@ write sys$output "   WANT_WIN  = ""$(WANT_WIN)"" "
-	-@ write sys$output "   WANT_SPELL= ""$(WANT_SPELL)"" "
-	-@ write sys$output "   WANT_MZSCH= ""$(WANT_MZSCH)"" "
-	-@ write sys$output "   HAVE_GZIP = ""$(HAVE_GZIP)"" "
-	-@ write sys$output "   HAVE_GDIFF= ""$(HAVE_GDIFF)"" "
+	-@ write sys$output "   WANT_GUI   = ""$(WANT_GUI)"" "
+	-@ write sys$output "   WANT_UNIX  = ""$(WANT_UNIX)"" "
+	-@ write sys$output "   WANT_WIN   = ""$(WANT_WIN)"" "
+	-@ write sys$output "   WANT_SPELL = ""$(WANT_SPELL)"" "
+	-@ write sys$output "   WANT_MZSCH = ""$(WANT_MZSCH)"" "
+	-@ write sys$output "   HAVE_ODS5  = ""$(HAVE_ODS5)"" "
+	-@ write sys$output "   HAVE_GZIP  = ""$(HAVE_GZIP)"" "
+	-@ write sys$output "   HAVE_GDIFF = ""$(HAVE_GDIFF)"" "
+	-@ write sys$output "   HAVE_CKSUM = ""$(HAVE_CKSUM)"" "	  
+	-@ write sys$output "   HAVE_ICONV = ""$(HAVE_ICONV)"" "
+	-@ write sys$output "   HAVE_LUA   = ""$(HAVE_LUA)"" "
+	-@ write sys$output "   HAVE_PYTHON= ""$(HAVE_PYTHON)"" "
 	-@ write sys$output "Default vimrc file is VMS.VIM:"
 	-@ write sys$output "-----------------------------------------------"
 	-@ type VMS.VIM
@@ -181,6 +231,9 @@
 	-@ if "''F$SEARCH("test.log")'"     .NES. "" then delete/noconfirm/nolog test.log.*
 	-@ if "''F$SEARCH("test.ok")'"      .NES. "" then delete/noconfirm/nolog test.ok.*
 	-@ if "''F$SEARCH("Xdotest.*")'"    .NES. "" then delete/noconfirm/nolog Xdotest.*.*
+	-@ if "''F$SEARCH("Xtest*.*")'"     .NES. "" then delete/noconfirm/nolog Xtest*.*.*
+	-@ if "''F$SEARCH("XX*.*")'"        .NES. "" then delete/noconfirm/nolog XX*.*.*
+	-@ if "''F$SEARCH("_un_*.*")'"      .NES. "" then delete/noconfirm/nolog _un_*.*.*
 	-@ if "''F$SEARCH("*.*_sw*")'"      .NES. "" then delete/noconfirm/nolog *.*_sw*.*
 	-@ if "''F$SEARCH("*.failed")'"     .NES. "" then delete/noconfirm/nolog *.failed.*
 	-@ if "''F$SEARCH("*.rej")'"        .NES. "" then delete/noconfirm/nolog *.rej.*
@@ -188,6 +241,6 @@
 	-@ if "''F$SEARCH("small.vim")'"    .NES. "" then delete/noconfirm/nolog small.vim.*
 	-@ if "''F$SEARCH("mbyte.vim")'"    .NES. "" then delete/noconfirm/nolog mbyte.vim.*
 	-@ if "''F$SEARCH("mzscheme.vim")'" .NES. "" then delete/noconfirm/nolog mzscheme.vim.*
-	-@ if "''F$SEARCH("lua.vim")'" .NES. "" then delete/noconfirm/nolog lua.vim.*
+	-@ if "''F$SEARCH("lua.vim")'"      .NES. "" then delete/noconfirm/nolog lua.vim.*
 	-@ if "''F$SEARCH("viminfo.*")'"    .NES. "" then delete/noconfirm/nolog viminfo.*.*
 
diff --git a/src/testdir/test72.in b/src/testdir/test72.in
index 220adad..3b3a6a4 100644
--- a/src/testdir/test72.in
+++ b/src/testdir/test72.in
@@ -105,7 +105,11 @@
 u:.w >>test.out
 :"
 :" Rename the undo file so that it gets cleaned up.
-:call rename(".Xtestfile.un~", "Xtestundo")
+:if has("vms")
+: call rename("_un_Xtestfile", "Xtestundo")
+:else
+: call rename(".Xtestfile.un~", "Xtestundo")
+:endif
 :qa!
 ENDTEST
 
diff --git a/src/testdir/test77a.com b/src/testdir/test77a.com
new file mode 100644
index 0000000..ef74a4c
--- /dev/null
+++ b/src/testdir/test77a.com
@@ -0,0 +1,8 @@
+$! test77a - help file creating checksum on VMS
+$! Created by Zoltan Arpadffy
+$
+$ IF P1 .NES. ""
+$ THEN
+$    checksum 'P1'
+$    show symb CHECKSUM$CHECKSUM
+$ ENDIF
diff --git a/src/testdir/test77a.in b/src/testdir/test77a.in
new file mode 100644
index 0000000..052e29a
--- /dev/null
+++ b/src/testdir/test77a.in
@@ -0,0 +1,31 @@
+Inserts 2 million lines with consecutive integers starting from 1
+(essentially, the output of GNU's seq 1 2000000), writes them to Xtest
+and writes its cksum to test.out.
+
+We need 2 million lines to trigger a call to mf_hash_grow().  If it would mess
+up the lines the checksum would differ.
+
+cksum is part of POSIX and so should be available on most Unixes.
+If it isn't available then the test will be skipped.
+
+VMS does not have CKSUM but has a built in CHECKSUM - it should be used
+STARTTEST
+:so small.vim
+:if !has("vms")
+: e! test.ok
+: w! test.out
+: qa!
+:endif
+:set fileformat=unix undolevels=-1
+ggdG
+:let i = 1
+:while i <= 2000000 | call append(i, range(i, i + 99)) | let i += 100 | endwhile
+ggdd
+:w! Xtest.
+:r !@test77a.com Xtest.
+:s/\s/ /g
+:set fileformat&
+:.w! test.out
+:qa!
+ENDTEST
+
diff --git a/src/testdir/test77a.ok b/src/testdir/test77a.ok
new file mode 100644
index 0000000..41ec157
--- /dev/null
+++ b/src/testdir/test77a.ok
@@ -0,0 +1 @@
+  CHECKSUM$CHECKSUM = "844110470"