*os_vms.txt*    For Vim version 9.0.  Last change: 2021 Jan 04


		  VIM REFERENCE MANUAL


							*VMS* *vms*
This file contains the particularities for the VMS version of Vim.
You can reach this information file by typing :help VMS in Vim command
prompt.

 1. Getting started	|vms-started|
 2. Download files	|vms-download|
 3. Compiling		|vms-compiling|
 4. Problems		|vms-problems|
 5. Deploy		|vms-deploy|
 6. Practical usage	|vms-usage|
 7. GUI mode questions	|vms-gui|
 8. Useful notes	|vms-notes|
 9. VMS related changes	|vms-changes|
10. Authors		|vms-authors|

==============================================================================

1. Getting started					*vms-started*

Vim (Vi IMproved) is a Vi-compatible text editor that runs on nearly every
operating system known to humanity.  Now use Vim on OpenVMS too, in character
or X/Motif environment.  It is fully featured and absolutely compatible with
Vim on other operating systems.

==============================================================================

2. Download files					*vms-download*

You can download the Vim source code by ftp from the official Vim site:
	ftp://ftp.vim.org/pub/vim/
Or use one of the mirrors:
	ftp://ftp.vim.org/pub/vim/MIRRORS

You can download precompiled executables from:
	http://www.polarhome.com/vim/
	ftp://ftp.polarhome.com/pub/vim/

To use the precompiled binary version, you need one of these archives:

  vim-XX-exe-ia64-gui.zip       IA64 GUI/Motif executables
  vim-XX-exe-ia64-gtk.zip       IA64 GUI/GTK executables
  vim-XX-exe-ia64-term.zip      IA64 console executables
  vim-XX-exe-axp-gui.zip	Alpha GUI/Motif executables
  vim-XX-exe-axp-gtk.zip	Alpha GUI/GTK executables
  vim-XX-exe-axp-term.zip       Alpha console executables
  vim-XX-exe-vax-gui.zip	VAX GUI executables
  vim-XX-exe-vax-term.zip       VAX console executables

and of course (optional)
  vim-XX-runtime.zip		runtime files

The binary archives contain: vim.exe, ctags.exe, xxd.exe files.

For GTK executables you will need GTKLIB that is available for
Alpha and IA64 platform.

==============================================================================

3. Compiling						*vms-compiling*

See the file [.SRC]INSTALLVMS.TXT.

==============================================================================

4. Problems						*vms-problems*

The code has been tested under Open VMS 6.2 - 8.2 on Alpha, VAX and IA64
platforms with the DEC C compiler. It should work without major problems.
If your system does not have some include libraries you can tune up in
OS_VMS_CONF.H file.

If you decided to build Vim with +perl, +python, etc. options, first you need
to download OpenVMS distributions of Perl and Python.  Build and deploy the
libraries and change adequate lines in MAKE_VMS.MMS file.  There should not be
a problem from Vim side.

Also GTK, XPM library paths should be configured in MAKE_VMS.MMS

Note: Under VAX it should work with the DEC C compiler without problems.  The
VAX C compiler is not fully ANSI C compatible in pre-processor directives
semantics, therefore you have to use a converter program that will do the lion
part of the job.  For detailed instructions read file INSTALLvms.txt

MMS_VIM.EXE is built together with VIM.EXE, but for XXD.EXE you should
change to a subdirectory and build it separately.

CTAGS is not part of the Vim source distribution anymore, however the OpenVMS
specific source might contain CTAGS source files as described above.
You can find more information about CTAGS on VMS at
http://www.polarhome.com/ctags/

Advanced users may try some acrobatics in FEATURE.H file as well.

It is possible to compile with +xfontset +xim options too, but then you have
to set up GUI fonts etc. correctly.  See :help xim from Vim command prompt.

You may want to use GUI with GTK icons, then you have to download and install
GTK for OpenVMS or at least runtime shareable images - LIBGTK from
polarhome.com
Post 7.2 Vim uses GTK2+ while the last GTK on OpenVMS is 1.2.10, therefore
the GTK build is no longer available.

For more advanced questions, please send your problem to Vim on VMS mailing
list <vim-vms@polarhome.com>
More about the vim-vms list can be found at:
http://www.polarhome.com/mailman/listinfo/vim-vms

==============================================================================

5. Deploy						*vms-deploy*

Vim uses a special directory structure to hold the document and runtime files:

   vim (or wherever)
    |- tmp
    |- vim57
    |----- doc
    |----- syntax
    |- vim62
    |----- doc
    |----- syntax
    |- vim64
    |----- doc
    |----- syntax
    vimrc    (system rc files)
    gvimrc

Use: >

	define/nolog VIM	device:[path.vim]
	define/nolog VIMRUNTIME device:[path.vim.vim60]
	define/nolog TMP	device:[path.tmp]

To get vim.exe to find its document, filetype, and syntax files, and to
specify a directory where temporary files will be located.  Copy the "runtime"
subdirectory of the Vim distribution to vimruntime.

Logicals $VIMRUNTIME and $TMP are optional.

If $VIMRUNTIME is not set, Vim will guess and try to set up automatically.
Read more about it at :help runtime

If $TMP is not set, you will not be able to use some functions as CTAGS,
XXD, printing etc. that use temporary directory for normal operation.
The $TMP directory should be readable and writable by the user(s).
The easiest way to set up $TMP is to define a logical: >

	define/nolog TMP SYS$SCRATCH
or as: >
	define/nolog TMP SYS$LOGIN

==============================================================================

6. Practical usage					*vms-usage*

Usually, you want to run just one version of Vim on your system, therefore
it is enough to dedicate one directory for Vim.
Copy the whole Vim runtime directory structure to the deployment position.
Add the following lines to your LOGIN.COM (in SYS$LOGIN directory).
Set up the logical $VIM as: >

	$ define VIM device:<path>

Set up some symbols: >

	$ ! vi starts Vim in chr. mode.
	$ vi*m  :== mcr VIM:VIM.EXE

	$ !gvi starts Vim in GUI mode.
	$ gv*im :== spawn/nowait mcr VIM:VIM.EXE -g

Please, check the notes for customization and configuration of symbols.

You may want to create .vimrc and .gvimrc files in your home directory
(SYS$LOGIN) to overwrite default settings.

The easiest way is just rename example files.  You may leave the menu file
(MENU.VIM) and files vimrc and gvimrc in the original $VIM directory.  It will
be the default setup for all users, and for users it is enough to just have
their own additions or resetting in their home directory in files .vimrc and
.gvimrc.  It should work without problems.

Note: Remember, system rc files (default for all users) don't have a leading
".".  So, system rc files are: >

	$VIM:vimrc
	$VIM:gvimrc
	$VIM:menu.vim

and user customized rc files are: >

	sys$login:.vimrc
	sys$login:.gvimrc

You can check that everything is at the right place with the :version command.

Example LOGIN.COM: >

 	$ define/nolog VIM DKA0:[UTIL.VIM81]
	$ vi*m :== mcr VIM:VIM.EXE
	$ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40
	$ set disp/create/node=192.168.10.202/trans=tcpip

Note: This set-up should be enough, if you are working on a standalone server or
clustered environment, but if you want to use Vim as an internode editor in
DECNET environment, it will satisfy as well.
You just have to define the "whole" path: >

	$ define VIM "<server_name>[""user password""]::device:<path>"
	$ vi*m :== "mcr VIM:VIM.EXE"

For example: >

	$ define VIM "PLUTO::RF10:[UTIL.VIM]"
	$ define VIM "PLUTO""ZAY mypass""::RF10:[UTIL.VIM]" ! if passwd required

You can also use the $VIMRUNTIME logical to point to the proper version of Vim
if you have installed more versions at the same time.  If $VIMRUNTIME is not
defined Vim will borrow its value from the $VIM logical.  You can find more
information about the $VIMRUNTIME logical by typing :help runtime as a Vim
command.

System administrators might want to set up a system wide Vim installation,
then add to the SYS$STARTUP:SYLOGICALS.COM >

	$ define/nolog/sys VIM device:<path>
	$ define/nolog/sys TMP SYS$SCRATCH

And to the SYS$STARTUP:SYLOGIN.COM >

	$ vi*m :== mcr VIM:VIM.EXE
	$ gv*im:== spawn/nowait/input=NLA0 mcr VIM:VIM.EXE -g -GEOMETRY 80x40


It will set up a normal Vim work environment for every user on the system.

IMPORTANT: Vim on OpenVMS (and on other case insensitive system) command line
parameters are assumed to be lowercase. In order to indicate that a command
line parameter is uppercase "/" sign must be used.

Examples:
  >
	vim -R  filename  ! means: -r List swap files and exit
	vim -/r filename  ! means: -R Readonly mode (like "view")
	vim -u	<vimrc>   ! means: -u Use <vimrc> instead of any .vimrc
	vim -/u <gvimrc>  ! means: -U Use <gvimrc> instead of any .gvimrc

==============================================================================

7. GUI mode questions					*vms-gui*

OpenVMS is a real mainframe OS, therefore even if it has a GUI console, most
of the users do not use a native X/Window environment during normal operation.
It is not possible to start Vim in GUI mode "just like that".  But anyhow it
is not too complicated either.

First of all: you will need an executable that is built with the GUI enabled.

Second: you need to have installed DECW/Motif on your VMS server, otherwise
you will get errors that some shareable libraries are missing.

Third: If you choose to run Vim with extra features such as GUI/GTK then you
need a GTK installation too or at least a GTK runtime environment (LIBGTK
can be downloaded from http://www.polarhome.com/vim/).

1) If you are working on the VMS X/Motif console:
   Start Vim with the command: >

	$ mc device:<path>VIM.EXE -g
<
   or type :gui as a command to the Vim command prompt.  For more info :help
   gui

2) If you are working on some other X/Window environment like Unix or a remote
   X VMS console.  Set up display to your host with: >

	$ set disp/create/node=<your IP address>/trans=<transport-name>
<
   and start Vim as in point 1.  You can find more help in VMS documentation or
   type: help set disp in VMS prompt.
   Examples: >

	$ set disp/create/node=192.168.5.159		 ! default trans is DECnet
	$ set disp/create/node=192.168.5.159/trans=tcpip ! TCP/IP network
	$ set disp/create/node=192.168.5.159/trans=local ! display on the same node

Note: you should define just one of these.
For more information type $help set disp in VMS prompt.

3) Another elegant solution is XDM if you have installed on OpenVMS box.
   It is possible to work from XDM client as from GUI console.

4) If you are working on MS-Windows or some other non X/Window environment
   you need to set up one X server and run Vim as in point 2.
   For MS-Windows there are available free X servers as MIX, Omni X etc.,
   as well as excellent commercial products as eXcursion or ReflectionX with
   built-in DEC support.

Please note, that executables without GUI are slightly faster during startup
than with enabled GUI in character mode. Therefore, if you do not use GUI
features, it is worth to choose non GUI executables.

==============================================================================

8. Useful notes						*vms-notes*

8.1 Backspace/delete
8.2 Filters
8.3 VMS file version numbers
8.4 Directory conversion
8.5 Remote host invocation
8.6 Terminal problems
8.7 Hex-editing and other external tools
8.8 Sourcing vimrc and gvimrc
8.9 Printing from Vim
8.10 Setting up the symbols
8.11 diff and other GNU programs
8.12 diff-mode
8.13 Allow '$' in C keywords
8.14 VIMTUTOR for beginners
8.15 Slow start in console mode issue
8.16 Common VIM directory - different architectures

8.1 Backspace/delete

There are backspace/delete key inconsistencies with VMS.
:fixdel doesn't do the trick, but the solution is: >

	:inoremap ^? ^H		" for terminal mode
	:inoremap <Del> ^H	" for gui mode

Read more in ch: 8.6 (Terminal problems).
(Bruce Hunsaker <BNHunsaker@chq.byu.edu> Vim 5.3)


8.2 Filters

Vim supports filters, i.e., if you have a sort program that can handle
input/output redirection like Unix (<infile >outfile), you could use >

	:map \s 0!'aqsort<CR>

(Charles E. Campbell, Jr. <cec@gryphon.gsfc.nasa.gov> Vim 5.4)


8.3 VMS file version numbers

Vim is saving files into a new file with the next higher file version
number, try these settings. >

	:set nobackup	     " does not create *.*_ backup files
	:set nowritebackup   " does not have any purpose on VMS.  It's the
			     " default.

Recovery is working perfectly as well from the default swap file.
Read more with :help swapfile

(Claude Marinier <ClaudeMarinier@xwavesolutions.com> Vim 5.5, Zoltan Arpadffy
Vim 5.6)


8.4 Directory conversion

Vim will internally convert any unix-style paths and even mixed unix/VMS
paths into VMS style paths.  Some typical conversions resemble:

	/abc/def/ghi		-> abc:[def]ghi.
	/abc/def/ghi.j		-> abc:[def]ghi.j
	/abc/def/ghi.j;2	-> abc:[def]ghi.j;2
	/abc/def/ghi/jkl/mno	-> abc:[def.ghi.jkl]mno.
	abc:[def.ghi]jkl/mno	-> abc:[def.ghi.jkl]mno.
	  ./			-> current directory
	  ../			-> relative parent directory
	  [.def.ghi]		-> relative child directory
	   ./def/ghi		-> relative child directory

Note: You may use <,> brackets as well (device:<path>file.ext;version) as
rf10:<user.zay.work>test.c;1

(David Elins <delins@foliage.com>, Jerome Lauret
<JLAURET@mail.chem.sunysb.edu> Vim 5.6)


8.5 Remote host invocation

It is possible to use Vim as an internode editor.
1. Edit some file from remote node: >

	vi "<server>""username passwd""::<device>:<path><filename>;<version>"

Example: >
	vi "pluto""zay passwd""::RF10:<USER.ZAY.WORK>TEST.C;1"

Note: syntax is very important, otherwise VMS will recognize more parameters
instead of one (resulting with: file not found)

2.  Set up Vim as your internode editor.  If Vim is not installed on your
host, just set up your IP address, the full Vim path including the server name
and run the command procedure below: >

	$ if (p1 .eqs. "") .OR. (p2 .eqs. "") then goto usage
	$ set disp/create/node=<your_IP_here>/trans=tcpip
	$ define "VIM "<vim_server>""''p1' ''p2'""::<device>:<vim_path>"
	$  vi*m :== "mcr VIM:VIM.EXE"
	$ gv*im :== "spawn/nowait mcr VIM:VIM.EXE -g"
	$ goto end
	$ usage:
	$ write sys$output " Please enter username and password as a parameter."
	$ write sys$output " Example: @SETVIM.COM username passwd"
	$ end:

Note: Never use it in a clustered environment (you do not need it), loading
could be very-very slow, but even faster than a local Emacs. :-)

(Zoltan Arpadffy, Vim 5.6)


8.6 Terminal problems

If your terminal name is not known to Vim and it is trying to find the default
one you will get the following message during start-up:
---
Terminal entry not found in termcap
'unknown-terminal' not known.  Available built-in terminals are:
    builtin_gui
    builtin_riscos
    builtin_amiga
    builtin_ansi
    builtin_vt320
    builtin_vt52
    builtin_pcansi
    builtin_win32
    builtin_xterm
    builtin_iris-ansi
    builtin_debug
    builtin_dumb
defaulting to 'vt320'
---
The solution is to define the default terminal name: >

	$ ! unknown terminal name.  Let us use vt320 or ansi instead.
	$ ! Note: it's case sensitive
	$ define term "vt320"

Terminals from VT100 to VT320 (as V300, VT220, VT200) do not need any extra
keyboard mappings.  They should work perfectly as they are, including arrows,
Ins, Del buttons etc., except Backspace in GUI mode.  To solve it, add to
.gvimrc: >

	inoremap <Del> <BS>

Vim will also recognize that they are fast terminals.

If you have some annoying line jumping on the screen between windows add to
your .vimrc file: >

	set ttyfast	" set fast terminal

Note: if you're using Vim on remote host or through a very slow connection, it's
recommended to avoid the fast terminal option with: >

	set nottyfast   " set terminal to slow mode

(Zoltan Arpadffy, Vim 5.6)


8.7 Hex-editing and other external tools

A very important difference between OpenVMS and other systems is that VMS uses
special commands to execute executables: >

	RUN <path>filename
	MCR <path>filename <parameters>

OpenVMS users always have to be aware that the Vim command :! "just" drop them
to DCL prompt.  This feature is possible to use without any problem with all
DCL commands, but if we want to execute some programs such as XXD, CTAGS, JTAGS,
etc.  we're running into trouble if we follow the Vim documentation (see: help
xxd).

Solution: Execute with the MC command and add the full path to the executable.
Example: Instead of :%!xxd command use: >

	:%!mc vim:xxd

... or in general: >
	:!mc <path>filename <parameters>

Note: You can use XXD and CTAGS from GUI menu.

To customize ctags it is possible to define the logical $CTAGS with standard
parameters as: >

	define/nolog CTAGS "--totals -o sys$login:tags"

For additional information, please read :help tagsearch and CTAGS
documentation at http://ctags.sourceforge.net/ctags.html.

(Zoltan Arpadffy, Vim 5.6-70)


8.8 Sourcing vimrc and gvimrc

If you want to use your .vimrc and .gvimrc from other platforms (e.g. Windows)
you can get in trouble if you ftp that file(s): VMS has different end-of-line
indication.
The symptom is that Vim is not sourcing your .vimrc/.gvimrc, even if you say:
>
	:so sys$login:.vimrc

One trick is to compress (e.g. zip) the files on the other platform and
uncompress it on VMS; if you have the same symptom, try to create the files
with copy-paste (for this you need both op. systems reachable from one
machine, e.g. an Xterm on Windows or telnet to Windows from VMS).

(Sandor Kopanyi, <sandor.kopanyi@mailbox.hu> Vim 6.0a)


8.9 Printing from Vim

To be able to print from Vim (running in GUI mode) under VMS you have to set
up $TMP logical which should point to some temporary directory and logical
SYS$PRINT to your default print queue.
Example: >

	$define SYS$PRINT HP5ANSI

You can print out the whole buffer or just the marked area.
More info under :help hardcopy

(Zoltan Arpadffy, Vim 6.0c)


8.10 Setting up the symbols

When I use gvim this way and press CTRL-Y in the parent terminal, gvim exits.
I now use a different symbol that seems to work OK and fixes the problem.
I suggest this instead: >

	$ GV*IM:==SPAWN/NOWAIT/INPUT=NLA0: MCR VIM:VIM.EXE -G -GEOMETRY 80X40

The /INPUT=NLA0: separates the standard input of the gvim process from the
parent terminal, to block signals from the parent window.
Without the -GEOMETRY, the gvim window size will be minimal and the menu
will be confused after a window-resize.

(Carlo Mekenkamp, Coen Engelbarts, Vim 6.0ac)


8.11 diff and other GNU programs

From 6.0 diff functionality has been implemented, but OpenVMS does not use
GNU/Unix like diff therefore built in diff does not work.
There is a simple solution to solve this anomaly.  Install a Unix like diff
and Vim will work perfectly in diff mode too.  You just have to redefine your
diff program as: >

	define /nolog diff <GNU_PATH>diff.exe

Another, more sophisticated solution is described below (8.12 diff-mode)
There are other programs such as patch, make etc that may cause the same
problems.  At www.polarhome.com is possible to download an GNU package for
Alpha and VAX boxes that is meant to solve GNU problems on OpenVMS.
(Zoltan Arpadffy, Vim 6.1)


8.12 diff-mode

Vim 6.0 and higher supports Vim diff-mode (See |new-diff-mode|, |diff-mode|
and |08.7|).  This uses the external program 'diff' and expects a Unix-like
output format from diff.  The standard VMS diff has a different output
format.  To use Vim on VMS in diff-mode, you need to:
    1 Install a Unix-like diff program, e.g. GNU diff
    2 Tell Vim to use the Unix-like diff for diff-mode.

You can download GNU diff from the VIM-VMS website, it is one of the GNU
tools in http://www.polarhome.com/vim/files/gnu_tools.zip.  I suggest to
unpack it in a separate directory "GNU" and create a logical GNU: that
points to that directory, e.g: >

   DEFINE GNU    <DISK>:[<DIRECTORY>.BIN.GNU]

You may also want to define a symbol GDIFF, to use the GNU diff from the DCL
prompt: >

   GDIFF :==     $GNU:DIFF.EXE

Now you need to tell Vim to use the new diff program.  Take the example
settings from |diff-diffexpr| and change the call to the external diff
program to the new diff on VMS.  Add this to your .vimrc file: >

     " Set up vimdiff options
       if v:version >= 600
	" Use GNU diff on VMS
	set diffexpr=MyDiff()
	function MyDiff()
	   let opt = ""
	   if &diffopt =~ "icase"
	     let opt = opt .. "-i "
	   endif
	   if &diffopt =~ "iwhite"
	     let opt = opt .. "-b "
	   endif
	   silent execute "!mc GNU:diff.exe -a " .. opt .. v:fname_in .. " " ..  v:fname_new ..
		\  " > " .. v:fname_out
	endfunction
      endif

You can now use Vim in diff-mode, e.g. to compare two files in read-only
mode: >

    $ VIM -D/R <FILE1> <FILE2>

You can also define new symbols for vimdiff, e.g.: >

    $ VIMDIFF     :== 'VIM' -D/R
    $ GVIMDIFF    :== 'GVIM' -D/R

You can now compare files in 4 ways: >

    1. VMS  diff:  $ DIFF     <FILE1> <FILE2>
    2. GNU  diff:  $ GDIFF    <FILE1> <FILE2>
    3. VIM  diff:  $ VIMDIFF  <FILE1> <FILE2>
    4. GVIM diff:  $ GVIMDIFF <FILE1> <FILE2>

(Coen Engelbarts, Vim 6.1)


8.13 Allow '$' in C keywords

DEC C uses many identifiers with '$' in them.  This is not allowed in ANSI C,
and Vim recognises the '$' as the end of the identifier.  You can change this
with the 'iskeyword' option.
Add this command to your .vimrc file: >

    autocmd FileType c,cpp,cs  set iskeyword+=$

You can also create the file(s) $VIM/FTPLUGIN/C.VIM (and/or CPP.VIM and
CS.VIM) and add this command: >

	set iskeyword+=$

Now word-based commands, e.g. the '*'-search-command and the CTRL-]
tag-lookup, work on the whole identifier.  (Ctags on VMS also supports '$' in
C keywords since ctags version 5.1.)

(Coen Engelbarts, Vim 6.1)

8.14 VIMTUTOR for beginners

The VIMTUTOR.COM DCL script can help Vim beginners to learn/make their first
steps with Vim on OpenVMS.  Depending of binary distribution you may start it
with: >

	@vim:vimtutor

(Thomas.R.Wyant III, Vim 6.1)

8.16 Slow start in console mode issue

As GUI/GTK Vim works equally well in console mode, many administrators
deploy those executables system wide.
Unfortunately, on a remote slow connections GUI/GTK executables behave rather
slow when user wants to run Vim just in the console mode - because of X
environment detection timeout.

Luckily, there is a simple solution for that. Administrators need to deploy
both GUI/GTK build and just console build executables, like below: >

    |- vim73
    |----- doc
    |----- syntax
       vimrc    (system rc files)
       gvimrc
       gvim.exe (the renamed GUI or GTK built vim.exe)
       vim.exe  (the console only executable)

Define system symbols like below in for ex in LOGIN.COM or SYLOGIN.COM: >

	$ define/nolog VIM RF10:[UTIL.VIM73] ! where you VIM directory is
	$ vi*m  :== mcr VIM:VIM.EXE
	$ gvi*m :== mcr VIM:GVIM.EXE
	$ ! or you can try to spawn with
	$ gv*im :== spawn/nowait/input=NLA0 mcr VIM:GVIM.EXE -g -GEOMETRY 80x40


Like this, users that do not have X environment and want to use Vim just in
console mode can avoid performance problems.

(Zoltan Arpadffy, Vim 7.2)

8.15 Common VIM directory - different architectures

In a cluster that contains nodes with different architectures like below:

$show cluster
View of Cluster from system ID 11655  node: TOR                                                                     18-AUG-2008 11:58:31
+---------------------------------+
|        SYSTEMS        | MEMBERS |
+-----------------------+---------|
|  NODE  |   SOFTWARE   |  STATUS |
+--------+--------------+---------|
| TOR    | VMS V7.3-2   | MEMBER  |
| TITAN2 | VMS V8.3     | MEMBER  |
| ODIN   | VMS V7.3-2   | MEMBER  |
+---------------------------------+

It is convenient to have a common VIM directory but execute different
executables.
There are several solutions for this problem:

Solution 1.  All executables in the same directory with different names
This is easily done with the following script that can be added
to the login.com or sylogin.com: >

	$ if f$getsyi("NODE_HWTYPE") .eqs. "VAX"
	$ then
	$       say "VAX platform"
	$       vi*m:== mcr vim:VIM.EXE_VAX
	$ endif
	$ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH"
	$ then
	$       say "ALPHA platform"
	$       vi*m :== mcr vim:VIM.EXE_AXP
	$ endif
	$ if f$getsyi("ARCH_NAME") .eqs. "IA64"
	$ then
	$      say "IA64 platform"
	$      vi*m :== mcr vim:VIM.EXE_IA64
	$ endif

Solution 2.  Different directories: >

	$ if f$getsyi("NODE_HWTYPE") .eqs. "VAX"
	$ then
	$       say "VAX platform"
	$       define/nolog VIM RF10:[UTIL.VAX_EXE] ! VAX executables
	$ endif
	$ if f$getsyi("NODE_HWTYPE") .eqs. "ALPH"
	$ then
	$       say "ALPHA platform"
	$       define/nolog VIM RF10:[UTIL.AXP_EXE] ! AXP executables
	$ endif
	$ if f$getsyi("ARCH_NAME") .eqs. "IA64"
	$ then
	$      say "IA64 platform"
	$      define/nolog VIM RF10:[UTIL.IA64_EXE] ! IA64 executables
	$ endif
        $! VIMRUNTIME must be defined in order to find runtime files
	$ define/nolog VIMRUNTIME RF10:[UTIL.VIM73]

A good example for this approach is the [GNU]gnu_tools.com script from
GNU_TOOLS.ZIP package downloadable from http://www.polarhome.com/vim/

(Zoltan Arpadffy, Vim 7.2)

==============================================================================

9. VMS related changes					*vms-changes*

Version 8.2
- make all changes needed for clean compile build of v8.2 on VMS on all platforms
- fix the call mkdir bug (vicente_polo@yahoo.es)
- test on VSI OpenVMS Alpha and Itanium platforms
- added LUA support
- added XPM support - Motif GUI with toolbar on all platforms
- XPM v3.4.11 libraries for IA64, AXP and VAX are added
- start integrating the new test scripts

Version 8.1
- make necessary changes to build v8.1 on VMS

Version 8.0
- solve the 100% cpu usage issue while waiting for a keystroke
- correct the VMS warnings and errors around handling the INFINITY (used in json.c)
- minor VMS port related changes
- correct the make_vms.mms file for 8.0
- fix [.TESTDIR]make_vms.mms for 8.0

Version 7.4
- Undo: VMS can not handle more than one dot in the filenames use "dir/name" -> "dir/_un_name"
  add _un_ at the beginning to keep the extension
- correct swap file name wildcard handling
- handle iconv usage correctly
- do not optimize on vax - otherwise it hangs compiling crypto files
- fileio.c fix the comment
- correct RealWaitForChar
- after 7.4-119 use different functions lib$cvtf_to_internal_time because Alpha and VAX have
  G_FLOAT but IA64 uses IEEE float otherwise Vim crashes
- guard against crashes that are caused by mixed filenames
- [TESTDIR]make_vms.mms changed to see the output files
- Improve tests, update known issues
- minor compiler warnings fixed
- CTAGS 5.8 +regex included

Version 7.3
- CTAGS 5.8 included
- VMS compile warnings fixed - floating-point overflow warning corrected on VAX
- filepath completion corrected - too many chars were escaped in filename
  and shell commands
- the following plugins are included into VMS runtime:
	genutils 2.4, multiselect 2.2, multvals 3.1, selectbuf 4.3,
	bufexplorer 7.1.7, taglist 4.5
- minor changes in vimrc (just in VMS runtime)
- make_vms.mms - HUGE model is the default
- [TESTDIR]make_vms.mms include as many tests possible
- modify test30 and test54 for VMS
- enable FLOAT feature in VMS port
- os_vms.txt updated

Version 7.2 (2008 Aug 9)
- VCF files write corrected
- CTAGS 5.7 included
- corrected make_vms.mms (on VAX gave syntax error)

Version 7.1 (2007 Jun 15)
- create TAGS file from menu

Version 7 (2006 May 8)
- Improved low level char input (affects just console mode)
- Fixed plugin bug
- CTAGS 5.6 included

Version 6.4 (2005 Oct 15)
- GTKLIB and Vim build on IA64
- colors in terminal mode
- syntax highlighting in terminal mode
- write problem fixed (extra CR)
- ESC and ESC sequence recognition in terminal mode
- make file changed to support new MMS version
- env variable expansion in path corrected
- printing problems corrected
- help text added for case insensitive arguments

Version 6.3 (2004 May 10)
- Improved vms_read function
- CTAGS v5.5.4 included
- Documentation corrected and updated

Version 6.2 (2003 May 7)
- Corrected VMS system call results
- Low level character input is rewritten
- Correction in tag and quickfix handling
- First GTK build
- Make file changes
    - GTK feature added
    - Define for OLD_VMS
    - OpenVMS version 6.2 or older
- Documentation updated with GTK features
- CTAGS v5.5 included
- VMS VIM tutor created

Version 6.1 (2002 Mar 25)
- TCL init_tcl() problem fixed
- CTAGS v5.4 included
- GNU tools binaries for OpenVMS
- Make file changes
    - PERL, PYTHON and TCL support improved
    - InstallVMS.txt has a detailed description HOWTO build
- VMS/Unix file handling rewritten
- Minor casting and bug fixes

Version 6.0 (2001 Sep 28)
- Unix and VMS code has been merged
	- separated "really" VMS related code
	- included all possible Unix functionality
	- simplified or deleted the configuration files
	- makefile MAKE_VMS.MMS reviewed
- menu changes (fixed printing, CTAGS and XXD usage)
- fixed variable RMS record format handling anomaly
- corrected syntax, ftplugin etc files load
- changed expand_wildcards and expandpath functions to work more general
- created OS_VMS_FILTER.COM - DECC->VAXC pre-processor directive convert
  script.
- Improved code's VAXC and new DECC compilers compatibility
- changed quickfix parameters:
	- errormessage format to suite DECC
	- search, make and other commands to suite VMS system
- updated and renamed MMS make files for Vim and CTAGS.
- CTAGS has been removed from source distribution of Vim but it will remain
  in OpenVMS binary distributions.
- simplified build/configuration procedure
- created INSTALLvms.txt - detailed compiling instructions under VMS.
- updated test scripts.

Version 5.8 (2001 Jun 1)
- OS_VMS.TXT updated with new features.
- other minor fixes.
- documentation updated
- this version had been tested much more than any other OpenVMS version
  earlier

Version 5.7 (2000 Jun 24)
- New CTAGS v5.0 in distribution
- Documentation updated

Version 5.6 (2000 Jan 17)
- VMS filename related changes:
	- version handling (open everything, save to new version)
	- correct file extension matching for syntax (version problem)
	- handle <,> characters and passwords in directory definition
	- handle internode/remote invocation and editing with passwords
	- OpenVMS files will be treated case insensitive from now
	- corrected response of expand("%:.") etc path related functions
	(in one word: VMS directory handling internally)
- version command
	- corrected (+,-) information data
	- added compiler and OS version
	- added user and host information
	- resolving $VIM and $VIMRUNTIME logicals
- VMS port is in MAX_FEAT (maximum features) club with Unix, Win32 and OS/2.
	- enabled farsi, rightleft etc. features
	- undo level raised up to 1000
- Updated OS_VMS.MMS file.
	- maximum features ON is default
	- Vim is compilable with +perl, +python and +tcl features.
	- improved MMK compatibility
- Created MAKEFILE_VMS.MMS, makefile for testing Vim during development.
- Defined DEC terminal VT320
	- compatibility for VT3*0, VT2*0 and VT1*0 - ANSI terminals
	  backwards, but not VT340 and newer with colour capability.
	- VT320 is default terminal for OpenVMS
	- these new terminals are also fast ttys (default for OpenVMS).
	- allowed dec_mouse ttym
- Updated files vimrc and gvimrc with VMS specific suggestions.
- OS_VMS.TXT updated with new features.

Version 5.5 (1999 Dec 3)
- Popup menu line crash corrected.
- Handle full file names with version numbers.
- Directory handling (CD command etc.)
- Corrected file name conversion VMS to Unix and v.v.
- Correct response of expand wildcards
- Recovery is working from this version under VMS as well.
- Improved terminal and signal handing.
- Improved OS_VMS.TXT

Version 5.4 (1999 Sep 9)
- Cut and paste mismatch corrected.
- Motif directories during open and save are corrected.

Version 5.3 (1998 Oct 12)
- Minor changes in the code
- Standard distribution with +GUI option

Version 5.1 (1998 Apr 21)
- Syntax and DEC C changes in the code
- Fixing problems with the /doc subdirectory
- Improve OS_VMS.MMS

Version 4.5 (1996 Dec 16)
- First VMS port by Henk Elbers <henk@xs4all.nl>

==============================================================================

10. Authors						*vms-authors*

OpenVMS documentation and executables are maintained by:
Zoltan Arpadffy <arpadffy@polarhome.com>
OpenVMS Vim page: http://www.polarhome.com/vim/

This document uses parts and remarks from earlier authors and contributors
of OS_VMS.TXT:
	Charles E. Campbell, Jr. <cec@gryphon.gsfc.nasa.gov>
	Bruce Hunsaker <BNHunsaker@chq.byu.edu>
	Sandor Kopanyi <sandor.kopanyi@mailbox.hu>

 vim:tw=78:ts=8:noet:ft=help:norl:
