SF patch 473749 compile under OS/2 VA C++, from Michael Muller.
Changes enabling Python to compile under OS/2 Visual Age C++.
diff --git a/PC/os2vacpp/config.c b/PC/os2vacpp/config.c
index 3d54e53..109f455 100644
--- a/PC/os2vacpp/config.c
+++ b/PC/os2vacpp/config.c
@@ -34,7 +34,6 @@
 extern void initsignal(void);
 extern void initselect(void);
 extern void init_socket(void);
-extern void initsoundex(void);
 extern void initstrop(void);
 extern void initstruct(void);
 extern void inittime(void);
@@ -82,7 +81,6 @@
         {"_socket", init_socket},
         {"select", initselect},
 #endif
-        {"soundex", initsoundex},
         {"strop", initstrop},
         {"struct", initstruct},
         {"time", inittime},
diff --git a/PC/os2vacpp/makefile b/PC/os2vacpp/makefile
index 66dfc32..1c3d008 100644
--- a/PC/os2vacpp/makefile
+++ b/PC/os2vacpp/makefile
@@ -65,8 +65,7 @@
 
 #.HDRPATH.c	:= $(PROJINCLUDE,;= ) $(.HDRPATH.c)
 #.PATH.c         = .;$(PY_MODULES);$(PY_OBJECTS);$(PY_PARSER);$(PY_PYTHON)
-OTHERLIBS	= $(OS2TCPIP)\lib\so32dll.lib $(OS2TCPIP)\lib\tcp32dll.lib \
-                  $(TCLTK)\Lib\Tcl76.lib $(TCLTK)\Lib\Tk42.lib
+OTHERLIBS	= so32dll.lib tcp32dll.lib # Tcl76.lib Tk42.lib
 
 #################
 # Inference Rules
@@ -121,7 +120,14 @@
                   $(PATHOBJ)\SysModule.obj      \
                   $(PATHOBJ)\Thread.obj         \
                   $(PATHOBJ)\TraceBack.obj      \
-                  $(PATHOBJ)\FrozenMain.obj
+                  $(PATHOBJ)\FrozenMain.obj     \
+                  $(PATHOBJ)\exceptions.obj     \
+                  $(PATHOBJ)\symtable.obj       \
+                  $(PATHOBJ)\codecs.obj         \
+                  $(PATHOBJ)\future.obj         \
+                  $(PATHOBJ)\dynload_os2.obj    \
+                  $(PATHOBJ)\mysnprintf.obj     \
+                  $(PATHOBJ)\iterobject.obj
 
 # Python's Internal Parser
 PARSER		=                              \
@@ -154,7 +160,13 @@
                   $(PATHOBJ)\SliceObject.obj   \
                   $(PATHOBJ)\StringObject.obj  \
                   $(PATHOBJ)\TupleObject.obj   \
-                  $(PATHOBJ)\TypeObject.obj
+                  $(PATHOBJ)\TypeObject.obj    \
+                  $(PATHOBJ)\unicodeobject.obj \
+                  $(PATHOBJ)\unicodectype.obj  \
+                  $(PATHOBJ)\cellobject.obj    \
+                  $(PATHOBJ)\descrobject.obj   \
+                  $(PATHOBJ)\weakrefobject.obj \
+                  $(PATHOBJ)\structseq.obj
 
 # Extension Modules (Built-In or as Separate DLLs)
 MODULES		=                              \
@@ -181,12 +193,13 @@
                   $(PATHOBJ)\SelectModule.obj  \
                   $(PATHOBJ)\SignalModule.obj  \
                   $(PATHOBJ)\SocketModule.obj  \
-                  $(PATHOBJ)\SoundEx.obj       \
                   $(PATHOBJ)\StropModule.obj   \
                   $(PATHOBJ)\StructModule.obj  \
                   $(PATHOBJ)\TimeModule.obj    \
                   $(PATHOBJ)\ThreadModule.obj  \
-                  $(PATHOBJ)\YUVConvert.obj
+                  $(PATHOBJ)\YUVConvert.obj    \
+                  $(PATHOBJ)\bufferobject.obj  \
+                  $(PATHOBJ)\gcmodule.obj
 
 # Standalone Parser Generator Program (Shares Some of Python's Modules)
 PGEN            =                              \
@@ -211,7 +224,7 @@
 		# /Gm  = Use Multithread Runtime
 		# /Gd  = Dynamically Load Runtime
 		# /Ms  = Use _System Calling Convention (vs _Optlink)
-		#        (to allow non-VAC++ code to call into Python15.dll)
+		#        (to allow non-VAC++ code to call into Python22.dll)
 
 _OPT		= /O /Gl
 		# /O   = Enable Speed-Optimizations
@@ -246,8 +259,8 @@
 ###################
 # Primary Target(s)
 ###################
-All:  obj noise PyCore.lib Python15.lib PGen.exe \
-      Python.exe PythonPM.exe Python15.dll _tkinter.dll
+All:  obj noise PyCore.lib Python22.lib PGen.exe \
+      Python.exe PythonPM.exe Python22.dll # _tkinter.dll
 
 Modules: $(MODULES)
 Objects: $(OBJECTS)
@@ -267,43 +280,43 @@
 ##############
 
 # Python Extension DLL: Tcl/Tk Interface
-_tkinter.dll: $(PATHOBJ)\_tkinter.obj Python15.lib _tkinter.def
-	@ Echo Linking $@ As DLL
-	@ $(CC) $(CFLAGS) /B"/NOE" $(_DLL) /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
+#_tkinter.dll: $(PATHOBJ)\_tkinter.obj Python22.lib _tkinter.def
+#	@ Echo Linking $@ As DLL
+#	@ $(CC) $(CFLAGS) /B"/NOE" $(_DLL) /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
 
-$(PATHOBJ)\_tkinter.obj: $(PY_MODULES)\_tkinter.c
-	@ Echo Compiling $**
-	@ $(CC) -c $(CFLAGS) $(_DLL) -Fo$@ $** >>$(ERRS)
+#$(PATHOBJ)\_tkinter.obj: $(PY_MODULES)\_tkinter.c
+#	@ Echo Compiling $**
+#	@ $(CC) -c $(CFLAGS) $(_DLL) -Fo$@ $** >>$(ERRS)
 
 # Object Library of All Essential Python Routines
 PyCore.lib: $(MODULES) $(OBJECTS) $(PARSER) $(PYTHON) $(PATHOBJ)\Config.obj
 	@ Echo Adding Updated Object Files to Link Library $@
 	@ ! ILIB $@ /NOLOGO /NOBACKUP -+$? ; >>$(ERRS)
 
-Python15.dll: $(PATHOBJ)\Compile.obj PyCore.lib Python.def
+Python22.dll: $(PATHOBJ)\Compile.obj PyCore.lib Python.def
 	@ Echo Linking $@ As DLL
 	@ $(CC) $(CFLAGS) /B"/NOE" $(_DLL) /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
-	@ Echo Compressing $@ with LxLite
-	@ lxlite $@
+#	@ Echo Compressing $@ with LxLite
+#	@ lxlite $@
 
 # IBM Linker Requires One Explicit .OBJ To Build a .DLL from a .LIB
 $(PATHOBJ)\Compile.obj: $(PY_PYTHON)\Compile.c
 	@ Echo Compiling $**
 	@ $(CC) -c $(CFLAGS) $(_DLL) -Fo$@ $** >>$(ERRS)
 
-# Import Library for Using the Python15.dll
-Python15.lib: Python.def
+# Import Library for Using the Python22.dll
+Python22.lib: Python.def
 	@ Echo Making $@
 	@ IMPLIB /NOLOGO /NOIGNORE $@ $** >>$(ERRS)
 	@ ILIB /NOLOGO /CONVFORMAT /NOEXTDICTIONARY /NOBROWSE /NOBACKUP $@; >>$(ERRS)
 
-# Small Command-Line Program to Start Interpreter in Python15.dll
-Python.exe: $(PATHOBJ)\Python.obj Python15.lib
+# Small Command-Line Program to Start Interpreter in Python22.dll
+Python.exe: $(PATHOBJ)\Python.obj Python22.lib
 	@ Echo Linking $@ As EXE
 	@ $(CC) $(CFLAGS) $(_EXE) /B"/PM:VIO /STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
 
-# Small PM-GUI Program to Start Interpreter in Python15.dll
-PythonPM.exe: $(PATHOBJ)\Python.obj Python15.lib
+# Small PM-GUI Program to Start Interpreter in Python22.dll
+PythonPM.exe: $(PATHOBJ)\Python.obj Python22.lib
 	@ Echo Linking $@ As EXE
 	@ $(CC) $(CFLAGS) $(_EXE) /B"/PM:PM /STACK:360000" /Fe$@ $(_MAP) $** $(OTHERLIBS) >>$(ERRS)
 
@@ -323,13 +336,13 @@
 
 # Remove All Targets, Including Final Binaries
 distclean: clean
-        -- Del /Q PyCore.lib Python15.lib       >NUL 2>&1
-        -- Del /Q Python15.dll Python.exe PGen.exe >NUL 2>&1
+        -- Del /Q PyCore.lib Python22.lib       >NUL 2>&1
+        -- Del /Q Python22.dll Python.exe PGen.exe >NUL 2>&1
 
-release: Python.exe Python15.dll Python15.lib
+release: Python.exe Python22.dll Python22.lib
 	-- @Echo Y | copy /U Python.exe   D:\EXEs
-	-- @Echo Y | copy /U Python15.dll D:\DLLs
-	-- @Echo Y | copy /U Python15.lib E:\Tau\Lib
+	-- @Echo Y | copy /U Python22.dll D:\DLLs
+	-- @Echo Y | copy /U Python22.lib E:\Tau\Lib
 	-- @Echo Y | copy /U _tkinter.dll D:\Python
 
 test:
diff --git a/PC/os2vacpp/pyconfig.h b/PC/os2vacpp/pyconfig.h
index a5a2f51..1ce73c7 100644
--- a/PC/os2vacpp/pyconfig.h
+++ b/PC/os2vacpp/pyconfig.h
@@ -54,7 +54,7 @@
 /* Provide a default library so writers of extension modules
  * won't have to explicitly specify it anymore
  */
-#pragma library("Python15.lib")
+#pragma library("Python22.lib")
 
 /***************************************************/
 /*    32-Bit IBM VisualAge C/C++ v3.0 for OS/2     */
@@ -79,6 +79,14 @@
 /* #define HAVE_LONG_LONG     1 */ /* VAC++ does not support (long long)    */
 /* #define SIZEOF_LONG_LONG   8 */ /* Count of Bytes in a (long long)       */
 
+/* unicode definines */
+#define Py_USING_UNICODE
+#define PY_UNICODE_TYPE    wchar_t
+#define Py_UNICODE_SIZE SIZEOF_SHORT
+
+/* dynamic loading */
+#define HAVE_DYNAMIC_LOADING 1
+
 /* Define if type char is unsigned and you are not using gcc.  */
 #ifndef __CHAR_UNSIGNED__
 /* #undef __CHAR_UNSIGNED__ */
@@ -188,7 +196,7 @@
 /* #define HAVE_GETUID        1 */
 
   /* Unix-Specific */
-#define HAVE_SYS_UN_H            1 /* #include <sys/un.h>                   */
+/* #define HAVE_SYS_UN_H            1 /* #include <sys/un.h>                   */
 /* #define HAVE_SYS_UTSNAME_H 1 */ /* #include <sys/utsname.h>              */
 /* #define HAVE_SYS_WAIT_H    1 */ /* #include <sys/wait.h>                 */
 /* #define HAVE_UNISTD_H      1 */ /* #include <unistd.h>                   */
diff --git a/PC/os2vacpp/python.def b/PC/os2vacpp/python.def
index 6477536..5376935 100644
--- a/PC/os2vacpp/python.def
+++ b/PC/os2vacpp/python.def
@@ -1,5 +1,5 @@
-LIBRARY        PYTHON15 INITINSTANCE TERMINSTANCE
-DESCRIPTION    'Python 1.5 Core DLL'
+LIBRARY        PYTHON22 INITINSTANCE TERMINSTANCE
+DESCRIPTION    'Python 2.2 Core DLL'
 PROTMODE
 DATA           MULTIPLE NONSHARED
 
@@ -472,4 +472,9 @@
                _Py_re_search
                _Py_re_set_syntax
 ;               _Py_samebitset
+               PyBuffer_Type
+               PyBuffer_FromObject
+               PyBuffer_FromMemory
+               PyBuffer_FromReadWriteMemory
+               PyBuffer_New