diff --git a/Modules/bz2module.c b/Modules/bz2module.c
index 9289a02..83582bd 100644
--- a/Modules/bz2module.c
+++ b/Modules/bz2module.c
@@ -1309,7 +1309,9 @@
 				break;
 
 			case 'U':
+#ifdef WITH_UNIVERSAL_NEWLINES
 				self->f_univ_newline = 1;
+#endif
 				break;
 
 			default:
diff --git a/Modules/fcntlmodule.c b/Modules/fcntlmodule.c
index c495a77..9695057 100644
--- a/Modules/fcntlmodule.c
+++ b/Modules/fcntlmodule.c
@@ -182,7 +182,11 @@
 	  return NULL;
 	}
 	Py_BEGIN_ALLOW_THREADS
+#ifdef __VMS
+	ret = ioctl(fd, code, (void *)arg);
+#else
 	ret = ioctl(fd, code, arg);
+#endif
 	Py_END_ALLOW_THREADS
 	if (ret < 0) {
 		PyErr_SetFromErrno(PyExc_IOError);
diff --git a/Modules/fpectlmodule.c b/Modules/fpectlmodule.c
index 099cda0..241c1c2 100644
--- a/Modules/fpectlmodule.c
+++ b/Modules/fpectlmodule.c
@@ -188,6 +188,10 @@
     ieee_set_fp_control(fp_control);
     PyOS_setsig(SIGFPE, handler);
 
+/*-- DEC ALPHA VMS --------------------------------------------------------*/
+#elif defined(__ALPHA) && defined(__VMS)
+    PyOS_setsig(SIGFPE, handler);
+
 /*-- Cray Unicos ----------------------------------------------------------*/
 #elif defined(cray)
     /* UNICOS delivers SIGFPE by default, but no matherr */
diff --git a/Modules/grpmodule.c b/Modules/grpmodule.c
index 2882fab..ab9d3c5 100644
--- a/Modules/grpmodule.c
+++ b/Modules/grpmodule.c
@@ -58,12 +58,17 @@
 
 #define SET(i,val) PyStructSequence_SET_ITEM(v, i, val)
     SET(setIndex++, PyString_FromString(p->gr_name));
+#ifdef __VMS
+    SET(setIndex++, Py_None);
+    Py_INCREF(Py_None);
+#else
     if (p->gr_passwd)
 	    SET(setIndex++, PyString_FromString(p->gr_passwd));
     else {
 	    SET(setIndex++, Py_None);
 	    Py_INCREF(Py_None);
     }
+#endif
     SET(setIndex++, PyInt_FromLong((long) p->gr_gid));
     SET(setIndex++, w);
 #undef SET
diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c
index c2c723c..56033e8 100644
--- a/Modules/mmapmodule.c
+++ b/Modules/mmapmodule.c
@@ -897,6 +897,10 @@
 	}
 
 #ifdef HAVE_FSTAT
+#  ifdef __VMS
+	/* on OpenVMS we must ensure that all bytes are written to the file */
+	fsync(fd);
+#  endif
 	if (fstat(fd, &st) == 0 && (size_t)map_size > st.st_size) {
 		PyErr_SetString(PyExc_ValueError, 
 				"mmap length is greater than file size");
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 035bb36..ff81585 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -17,18 +17,7 @@
 #include "structseq.h"
 
 #if defined(__VMS)
-#    include <ctype.h>			/* tolower() */
-#    include <descrip.h>		/* string descriptors */
-#    include <dvidef.h>			/* DVI$_name */
-#    include <file.h>			/* -> O_RDWR */
-#    include <jpidef.h>			/* JPI$_name */
-#    include <lib$routines.h>		/* LIB$name */
-#    include <ots$routines.h>		/* OTS$name */
-#    include <ssdef.h>			/* SS$_name */
 #    include <unixio.h>
-#    include <unixlib.h>
-#    include <stat.h>
-#    include <wait.h>			/* define wait() */
 #endif /* defined(__VMS) */
 
 PyDoc_STRVAR(posix__doc__,
@@ -325,63 +314,6 @@
 extern char **environ;
 #endif /* !_MSC_VER */
 
-#if defined(__VMS)
-/* add some values to provide a similar environment like POSIX */
-static
-void
-vms_add_posix_env(PyObject *d)
-{
-	PyObject *o;
-	char* str;
-
-	str = getenv("LINES");
-	o = Py_BuildValue("s", str);
-	if (o != NULL) {
-		(void)PyDict_SetItemString(d, "LINES", o);
-		Py_DECREF(o);
-	}
-
-	str = getenv("COLUMNS");
-	o = Py_BuildValue("s", str);
-	if (o != NULL) {
-		(void)PyDict_SetItemString(d, "COLUMNS", o);
-		Py_DECREF(o);
-	}
-
-	str = getenv("USER");
-	o = Py_BuildValue("s", str);
-	if (o != NULL) {
-		(void)PyDict_SetItemString(d, "USERNAME", o);
-		Py_DECREF(o);
-	}
-	o = Py_BuildValue("s", str);
-	if (o != NULL) {
-		(void)PyDict_SetItemString(d, "LOGNAME", o);
-		Py_DECREF(o);
-	}
-
-	str = getenv("HOME");
-	o = Py_BuildValue("s", str);
-	if (o != NULL) {
-		(void)PyDict_SetItemString(d, "HOME", o);
-		Py_DECREF(o);
-	}
-
-	str = getenv("PATH");
-	o = Py_BuildValue("s", str);
-	if (o != NULL) {
-		(void)PyDict_SetItemString(d, "PATH", o);
-		Py_DECREF(o);
-	}
-	/* OS = "OpenVMS" */
-	o = PyString_FromString ("OpenVMS");
-	if (o != NULL) {
-		(void)PyDict_SetItemString(d, "OS", o);
-		Py_DECREF(o);
-	}
-}
-#endif /* __VMS */
-
 static PyObject *
 convertenviron(void)
 {
@@ -421,9 +353,7 @@
 		Py_DECREF(k);
 		Py_DECREF(v);
 	}
-#if defined(__VMS)
-        vms_add_posix_env(d);
-#elif defined(PYOS_OS2)
+#if defined(PYOS_OS2)
     {
         APIRET rc;
         char   buffer[1024]; /* OS/2 Provides a Documented Max of 1024 Chars */
@@ -1133,7 +1063,7 @@
 		return NULL;
 
 #if defined(__VMS)
-	/* DECC V5.0 - only about FD= 0 @@ try getname()+$getdvi(dvi$_devnam) */
+        /* file descriptor 0 only, the default input device (stdin) */
 	if (id == 0) {
 		ret = ttyname();
 	}
@@ -1339,9 +1269,6 @@
 	Py_BEGIN_ALLOW_THREADS
 #if defined(PYOS_OS2) && defined(PYCC_GCC)
 	res = _getcwd2(buf, sizeof buf);
-#elif defined(__VMS)
-	/* 0 = force Unix-style path if in the VMS DCL environment! */
-	res = getcwd(buf, sizeof buf, 0);
 #else
 	res = getcwd(buf, sizeof buf);
 #endif
@@ -1378,9 +1305,6 @@
 	Py_BEGIN_ALLOW_THREADS
 #if defined(PYOS_OS2) && defined(PYCC_GCC)
 	res = _getcwd2(buf, sizeof buf);
-#elif defined(__VMS)
-	/* 0 = force Unix-style path if in the VMS DCL environment! */
-	res = getcwd(buf, sizeof buf, 0);
 #else
 	res = getcwd(buf, sizeof buf);
 #endif
@@ -5183,11 +5107,7 @@
 	int fds[2];
 	int res;
 	Py_BEGIN_ALLOW_THREADS
-#if defined(__VMS)
-	res = pipe(fds,0,2100); /* bigger mailbox quota than 512 */
-#else
 	res = pipe(fds);
-#endif
 	Py_END_ALLOW_THREADS
 	if (res != 0)
 		return posix_error();
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 843c5a9..f107e0b 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -2199,7 +2199,11 @@
 socket_gethostbyname(PyObject *self, PyObject *args)
 {
 	char *name;
+#ifdef ENABLE_IPV6
 	struct sockaddr_storage addrbuf;
+#else
+        struct sockaddr_in addrbuf;
+#endif
 
 	if (!PyArg_ParseTuple(args, "s:gethostbyname", &name))
 		return NULL;
@@ -2357,7 +2361,11 @@
 {
 	char *name;
 	struct hostent *h;
-	struct sockaddr_storage addr;
+#ifdef ENABLE_IPV6
+        struct sockaddr_storage addr;
+#else
+        struct sockaddr_in addr;
+#endif
 	struct sockaddr *sa;
 	PyObject *ret;
 #ifdef HAVE_GETHOSTBYNAME_R
diff --git a/Modules/socketmodule.h b/Modules/socketmodule.h
index 936acac..167d507 100644
--- a/Modules/socketmodule.h
+++ b/Modules/socketmodule.h
@@ -2,7 +2,11 @@
 
 /* Includes needed for the sockaddr_* symbols below */
 #ifndef MS_WINDOWS
-# include <sys/socket.h>
+#ifdef __VMS
+#   include <socket.h>
+# else
+#   include <sys/socket.h>
+# endif
 # include <netinet/in.h>
 # if !(defined(__BEOS__) || defined(__CYGWIN__) || (defined(PYOS_OS2) && defined(PYCC_VACPP)))
 #  include <netinet/tcp.h>
diff --git a/Parser/myreadline.c b/Parser/myreadline.c
index 7b7ef7e..fcc4667 100644
--- a/Parser/myreadline.c
+++ b/Parser/myreadline.c
@@ -15,6 +15,10 @@
 #include "windows.h"
 #endif /* MS_WINDOWS */
 
+#ifdef __VMS
+extern char* vms__StdioReadline(FILE *sys_stdin, FILE *sys_stdout, char *prompt);
+#endif
+
 int (*PyOS_InputHook)(void) = NULL;
 
 #ifdef RISCOS
@@ -159,7 +163,11 @@
 	char *rv;
 
 	if (PyOS_ReadlineFunctionPointer == NULL) {
+#ifdef __VMS
+                PyOS_ReadlineFunctionPointer = vms__StdioReadline;
+#else
                 PyOS_ReadlineFunctionPointer = PyOS_StdioReadline;
+#endif
 	}
 
 	Py_BEGIN_ALLOW_THREADS
diff --git a/Python/dynload_shlib.c b/Python/dynload_shlib.c
index 61674ba..af23f80 100644
--- a/Python/dynload_shlib.c
+++ b/Python/dynload_shlib.c
@@ -40,16 +40,27 @@
 	{".pyd", "rb", C_EXTENSION},
 	{".dll", "rb", C_EXTENSION},
 #else
+#ifdef __VMS
+        {".exe", "rb", C_EXTENSION},
+        {".EXE", "rb", C_EXTENSION},
+        {"module.exe", "rb", C_EXTENSION},
+        {"MODULE.EXE", "rb", C_EXTENSION},
+#else
 	{".so", "rb", C_EXTENSION},
 	{"module.so", "rb", C_EXTENSION},
 #endif
 #endif
+#endif
 	{0, 0}
 };
 
 static struct {
 	dev_t dev;
+#ifdef __VMS
+	ino_t ino[3];
+#else
 	ino_t ino;
+#endif
 	void *handle;
 } handles[128];
 static int nhandles = 0;
@@ -87,7 +98,13 @@
 		}
 		if (nhandles < 128) {
 			handles[nhandles].dev = statb.st_dev;
+#ifdef __VMS
+			handles[nhandles].ino[0] = statb.st_ino[0];
+			handles[nhandles].ino[1] = statb.st_ino[1];
+			handles[nhandles].ino[2] = statb.st_ino[2];
+#else
 			handles[nhandles].ino = statb.st_ino;
+#endif
 		}
 	}
 
@@ -98,6 +115,17 @@
 	if (Py_VerboseFlag)
 		printf("dlopen(\"%s\", %x);\n", pathname, dlopenflags);
 
+#ifdef __VMS
+	/* VMS currently don't allow a pathname, use a logical name instead */
+	/* Concatenate 'python_module_' and shortname */
+	/* so "import vms.bar" will use the logical python_module_bar */
+	/* As C module use only one name space this is probably not a */
+	/* important limitation */
+	PyOS_snprintf(pathbuf, sizeof(pathbuf), "python_module_%-.200s", 
+		      shortname);
+	pathname = pathbuf;
+#endif
+
 	handle = dlopen(pathname, dlopenflags);
 
 	if (handle == NULL) {
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 50b9912..d06d18a 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -32,6 +32,10 @@
 extern const char *PyWin_DLLVersionString;
 #endif
 
+#ifdef __VMS
+#include <unixlib.h>
+#endif
+
 PyObject *
 PySys_GetObject(char *name)
 {
@@ -1050,7 +1054,22 @@
 	if (av != NULL) {
 		int i;
 		for (i = 0; i < argc; i++) {
+#ifdef __VMS
+			PyObject *v;
+
+			/* argv[0] is the script pathname if known */
+			if (i == 0) {
+				char* fn = decc$translate_vms(argv[0]);
+				if ((fn == (char *)0) || fn == (char *)-1)
+					v = PyString_FromString(argv[0]);
+				else
+					v = PyString_FromString(
+						decc$translate_vms(argv[0]));
+			} else
+				v = PyString_FromString(argv[i]);
+#else
 			PyObject *v = PyString_FromString(argv[i]);
+#endif
 			if (v == NULL) {
 				Py_DECREF(av);
 				av = NULL;
