diff --git a/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.cpp b/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.cpp
index e067467c42f1bcd20c2cd8dce5ec94f6bb587981..d559147ed368c465d0e5911db2869c49afe7e36c 100644
--- a/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.cpp
+++ b/src/xercesc/util/Transcoders/Uniconv390/Uniconv390TransService.cpp
@@ -90,6 +90,17 @@
 #include <locale.h>
 #include <xercesc/util/regx/XMLUniCharacter.hpp>
 
+#include <xercesc/util/XML88591Transcoder.hpp>
+#include <xercesc/util/XMLASCIITranscoder.hpp>
+#include <xercesc/util/XMLChTranscoder.hpp>
+#include <xercesc/util/XMLEBCDICTranscoder.hpp>
+#include <xercesc/util/XMLIBM1047Transcoder.hpp>
+#include <xercesc/util/XMLIBM1140Transcoder.hpp>
+#include <xercesc/util/XMLUCS4Transcoder.hpp>
+#include <xercesc/util/XMLUTF8Transcoder.hpp>
+#include <xercesc/util/XMLUTF16Transcoder.hpp>
+#include <xercesc/util/XMLWin1252Transcoder.hpp>
+
 XERCES_CPP_NAMESPACE_BEGIN
 
 // debug printfs.... I'll take these out after function test.
@@ -234,7 +245,7 @@ Uniconv390TransService::~Uniconv390TransService()
    }
    if (fICUService) {
     delete  fICUService;
-   } 
+   }
 }
 
 // ---------------------------------------------------------------------------
@@ -526,247 +537,497 @@ DBGPRINTF3("makeNewXMLTranscoder() encoding=%s blocksize=%d\n",localname,blockSi
 // ---------------------------------------------------------------------------
 void Uniconv390TransService::initTransService()
 {
-    //
-    //  A stupid way to increment the fCurCount inside the RefVectorOf
-    //
-    for (unsigned int i = 0; i < XMLRecognizer::Encodings_Count; i++)
-        gMappingsRecognizer->addElement(0);
-
-    //
-    //  Add in the magical mapping for the native XMLCh transcoder. This
-    //  is used for internal entities.
-    //
-    gMappingsRecognizer->setElementAt(new ENameMapFor<XMLChTranscoder>(XMLUni::fgXMLChEncodingString), XMLRecognizer::XERCES_XMLCH);
-    gMappings->put((void*)XMLUni::fgXMLChEncodingString, new ENameMapFor<XMLChTranscoder>(XMLUni::fgXMLChEncodingString));
-
-    //
-    //  Add in our mappings for ASCII.
-    //
-    gMappingsRecognizer->setElementAt(new ENameMapFor<XMLASCIITranscoder390>(XMLUni::fgUSASCIIEncodingString), XMLRecognizer::US_ASCII);
-    gMappings->put((void*)XMLUni::fgUSASCIIEncodingString, new ENameMapFor<XMLASCIITranscoder390>(XMLUni::fgUSASCIIEncodingString));
-    gMappings->put((void*)XMLUni::fgUSASCIIEncodingString2, new ENameMapFor<XMLASCIITranscoder390>(XMLUni::fgUSASCIIEncodingString2));
-    gMappings->put((void*)XMLUni::fgUSASCIIEncodingString3, new ENameMapFor<XMLASCIITranscoder390>(XMLUni::fgUSASCIIEncodingString3));
-    gMappings->put((void*)XMLUni::fgUSASCIIEncodingString4, new ENameMapFor<XMLASCIITranscoder390>(XMLUni::fgUSASCIIEncodingString4));
-
-
-    //
-    //  Add in our mappings for UTF-8
-    //
-    gMappingsRecognizer->setElementAt(new ENameMapFor<XMLUTF8Transcoder390>(XMLUni::fgUTF8EncodingString), XMLRecognizer::UTF_8);
-    gMappings->put((void*)XMLUni::fgUTF8EncodingString, new ENameMapFor<XMLUTF8Transcoder390>(XMLUni::fgUTF8EncodingString));
-    gMappings->put((void*)XMLUni::fgUTF8EncodingString2, new ENameMapFor<XMLUTF8Transcoder390>(XMLUni::fgUTF8EncodingString2));
-
-    //
-    //  Add in our mappings for Latin1
-    //
-    gMappings->put((void*)XMLUni::fgISO88591EncodingString, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString));
-    gMappings->put((void*)XMLUni::fgISO88591EncodingString2, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString2));
-    gMappings->put((void*)XMLUni::fgISO88591EncodingString3, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString3));
-    gMappings->put((void*)XMLUni::fgISO88591EncodingString4, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString4));
-    gMappings->put((void*)XMLUni::fgISO88591EncodingString5, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString5));
-    gMappings->put((void*)XMLUni::fgISO88591EncodingString6, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString6));
-    gMappings->put((void*)XMLUni::fgISO88591EncodingString7, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString7));
-    gMappings->put((void*)XMLUni::fgISO88591EncodingString8, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString8));
-    gMappings->put((void*)XMLUni::fgISO88591EncodingString9, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString9));
-    gMappings->put((void*)XMLUni::fgISO88591EncodingString10, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString10));
-    gMappings->put((void*)XMLUni::fgISO88591EncodingString11, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString11));
-    gMappings->put((void*)XMLUni::fgISO88591EncodingString12, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString12));
-
-    //
-    //  Add in our mappings for UTF-16 and UCS-4, little endian
-    //
-    bool swapped = false;
-
-    #if defined(ENDIANMODE_BIG)
-    swapped = true;
-    #endif
-    gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUTF16Transcoder>(XMLUni::fgUTF16LEncodingString, swapped), XMLRecognizer::UTF_16L);
-    gMappings->put
-    (
-		(void*)XMLUni::fgUTF16LEncodingString,
-        new EEndianNameMapFor<XMLUTF16Transcoder>
-        (
-            XMLUni::fgUTF16LEncodingString
-            , swapped
-        )
-    );
-
-    gMappings->put
-    (
-		(void*)XMLUni::fgUTF16LEncodingString2,
-        new EEndianNameMapFor<XMLUTF16Transcoder>
-        (
-            XMLUni::fgUTF16LEncodingString2
-            , swapped
-        )
-    );
-
-    gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUCS4Transcoder>(XMLUni::fgUCS4LEncodingString, swapped), XMLRecognizer::UCS_4L);
-    gMappings->put
-    (
-		(void*)XMLUni::fgUCS4LEncodingString,
-        new EEndianNameMapFor<XMLUCS4Transcoder>
-        (
-            XMLUni::fgUCS4LEncodingString
-            , swapped
-        )
-    );
-
-    gMappings->put
-    (
-		(void*)XMLUni::fgUCS4LEncodingString2,
-        new EEndianNameMapFor<XMLUCS4Transcoder>
-        (
-            XMLUni::fgUCS4LEncodingString2
-            , swapped
-        )
-    );
-
-    //
-    //  Add in our mappings for UTF-16 and UCS-4, big endian
-    //
-    swapped = false;
-    #if defined(ENDIANMODE_LITTLE)
-    swapped = true;
-    #endif
-    gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUTF16Transcoder>(XMLUni::fgUTF16BEncodingString, swapped), XMLRecognizer::UTF_16B);
-    gMappings->put
-    (
-		(void*)XMLUni::fgUTF16BEncodingString,
-        new EEndianNameMapFor<XMLUTF16Transcoder>
-        (
-            XMLUni::fgUTF16BEncodingString
-            , swapped
-        )
-    );
-
-    gMappings->put
-    (
-		(void*)XMLUni::fgUTF16BEncodingString2,
-        new EEndianNameMapFor<XMLUTF16Transcoder>
-        (
-            XMLUni::fgUTF16BEncodingString2
-            , swapped
-        )
-    );
-
-    gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUCS4Transcoder>(XMLUni::fgUCS4BEncodingString, swapped), XMLRecognizer::UCS_4B);
-    gMappings->put
-    (
-		(void*)XMLUni::fgUCS4BEncodingString,
-        new EEndianNameMapFor<XMLUCS4Transcoder>
-        (
-            XMLUni::fgUCS4BEncodingString
-            , swapped
-        )
-    );
-
-    gMappings->put
-    (
-		(void*)XMLUni::fgUCS4BEncodingString2,
-        new EEndianNameMapFor<XMLUCS4Transcoder>
-        (
-            XMLUni::fgUCS4BEncodingString2
-            , swapped
-        )
-    );
-
-    //
-    //  Add in our mappings for UTF-16 and UCS-4 which does not indicate endian
-    //  assumes the same endian encoding as the OS
-    //
-
-    gMappings->put
-    (
-		(void*)XMLUni::fgUTF16EncodingString,
-        new EEndianNameMapFor<XMLUTF16Transcoder>
-        (
-            XMLUni::fgUTF16EncodingString
-            , false
-        )
-    );
-    gMappings->put
-    (
-		(void*)XMLUni::fgUTF16EncodingString2,
-        new EEndianNameMapFor<XMLUTF16Transcoder>
-        (
-            XMLUni::fgUTF16EncodingString2
-            , false
-        )
-    );
-    gMappings->put
-    (
-		(void*)XMLUni::fgUTF16EncodingString3,
-        new EEndianNameMapFor<XMLUTF16Transcoder>
-        (
-            XMLUni::fgUTF16EncodingString3
-            , false
-        )
-    );
-    gMappings->put
-    (
-		(void*)XMLUni::fgUTF16EncodingString4,
-        new EEndianNameMapFor<XMLUTF16Transcoder>
-        (
-            XMLUni::fgUTF16EncodingString4
-            , false
-        )
-    );
-    gMappings->put
-    (
-		(void*)XMLUni::fgUCS4EncodingString,
-        new EEndianNameMapFor<XMLUCS4Transcoder>
-        (
-            XMLUni::fgUCS4EncodingString
-            , false
-        )
-    );
-    gMappings->put
-    (
-		(void*)XMLUni::fgUCS4EncodingString2,
-        new EEndianNameMapFor<XMLUCS4Transcoder>
-        (
-            XMLUni::fgUCS4EncodingString2
-            , false
-        )
-    );
-    gMappings->put
-    (
-		(void*)XMLUni::fgUCS4EncodingString3,
-        new EEndianNameMapFor<XMLUCS4Transcoder>
-        (
-            XMLUni::fgUCS4EncodingString3
-            , false
-        )
-    );
-
-    //
-    //  Add in our mappings for IBM037, and the one alias we support for
-    //  it, which is EBCDIC-CP-US.
-    //
-    gMappingsRecognizer->setElementAt(new ENameMapFor<XMLEBCDICTranscoder390>(XMLUni::fgEBCDICEncodingString), XMLRecognizer::EBCDIC);
-    gMappings->put((void*)XMLUni::fgIBM037EncodingString, new ENameMapFor<XMLEBCDICTranscoder390>(XMLUni::fgIBM037EncodingString));
-    gMappings->put((void*)XMLUni::fgIBM037EncodingString2, new ENameMapFor<XMLEBCDICTranscoder390>(XMLUni::fgIBM037EncodingString2));
-
-
-    //hhe
-    gMappings->put((void*)XMLUni::fgIBM1047EncodingString, new ENameMapFor<XMLIBM1047Transcoder390>(XMLUni::fgIBM1047EncodingString));
-    gMappings->put((void*)XMLUni::fgIBM1047EncodingString2, new ENameMapFor<XMLIBM1047Transcoder390>(XMLUni::fgIBM1047EncodingString2));
-
-    //
-    //  Add in our mappings for IBM037 with Euro update, i.e. IBM1140. It
-    //  has alias IBM01140, the one suggested by IANA
-    //
-    gMappings->put((void*)XMLUni::fgIBM1140EncodingString, new ENameMapFor<XMLIBM1140Transcoder390>(XMLUni::fgIBM1140EncodingString));
-    gMappings->put((void*)XMLUni::fgIBM1140EncodingString2, new ENameMapFor<XMLIBM1140Transcoder390>(XMLUni::fgIBM1140EncodingString2));
-    gMappings->put((void*)XMLUni::fgIBM1140EncodingString3, new ENameMapFor<XMLIBM1140Transcoder390>(XMLUni::fgIBM1140EncodingString3));
-    gMappings->put((void*)XMLUni::fgIBM1140EncodingString4, new ENameMapFor<XMLIBM1140Transcoder390>(XMLUni::fgIBM1140EncodingString4));
-
-    //
-    //  Add in our mappings for Windows-1252. We don't have any aliases for
-    //  this one, so there is just one mapping.
-    //
-    gMappings->put((void*)XMLUni::fgWin1252EncodingString, new ENameMapFor<XMLWin1252Transcoder390>(XMLUni::fgWin1252EncodingString));
+    // Need to first check if the translate instruction is supported
+    // by this processor ... if it is use the new intrinsics.
+
+    if (((*(int*) 200) & 0x00001000) != 0)
+       {
+       //
+       //  A stupid way to increment the fCurCount inside the RefVectorOf
+       //
+       for (unsigned int i = 0; i < XMLRecognizer::Encodings_Count; i++)
+           gMappingsRecognizer->addElement(0);
+
+       //
+       //  Add in the magical mapping for the native XMLCh transcoder. This
+       //  is used for internal entities.
+       //
+       gMappingsRecognizer->setElementAt(new ENameMapFor<XMLChTranscoder>(XMLUni::fgXMLChEncodingString), XMLRecognizer::XERCES_XMLCH);
+       gMappings->put((void*)XMLUni::fgXMLChEncodingString, new ENameMapFor<XMLChTranscoder>(XMLUni::fgXMLChEncodingString));
+
+       //
+       //  Add in our mappings for ASCII.
+       //
+       gMappingsRecognizer->setElementAt(new ENameMapFor<XMLASCIITranscoder390>(XMLUni::fgUSASCIIEncodingString), XMLRecognizer::US_ASCII);
+       gMappings->put((void*)XMLUni::fgUSASCIIEncodingString, new ENameMapFor<XMLASCIITranscoder390>(XMLUni::fgUSASCIIEncodingString));
+       gMappings->put((void*)XMLUni::fgUSASCIIEncodingString2, new ENameMapFor<XMLASCIITranscoder390>(XMLUni::fgUSASCIIEncodingString2));
+       gMappings->put((void*)XMLUni::fgUSASCIIEncodingString3, new ENameMapFor<XMLASCIITranscoder390>(XMLUni::fgUSASCIIEncodingString3));
+       gMappings->put((void*)XMLUni::fgUSASCIIEncodingString4, new ENameMapFor<XMLASCIITranscoder390>(XMLUni::fgUSASCIIEncodingString4));
+
+
+       //
+       //  Add in our mappings for UTF-8
+       //
+       gMappingsRecognizer->setElementAt(new ENameMapFor<XMLUTF8Transcoder390>(XMLUni::fgUTF8EncodingString), XMLRecognizer::UTF_8);
+       gMappings->put((void*)XMLUni::fgUTF8EncodingString, new ENameMapFor<XMLUTF8Transcoder390>(XMLUni::fgUTF8EncodingString));
+       gMappings->put((void*)XMLUni::fgUTF8EncodingString2, new ENameMapFor<XMLUTF8Transcoder390>(XMLUni::fgUTF8EncodingString2));
+
+       //
+       //  Add in our mappings for Latin1
+       //
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString2, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString2));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString3, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString3));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString4, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString4));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString5, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString5));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString6, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString6));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString7, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString7));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString8, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString8));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString9, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString9));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString10, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString10));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString11, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString11));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString12, new ENameMapFor<XML88591Transcoder390>(XMLUni::fgISO88591EncodingString12));
+
+       //
+       //  Add in our mappings for UTF-16 and UCS-4, little endian
+       //
+       bool swapped = false;
+
+       #if defined(ENDIANMODE_BIG)
+       swapped = true;
+       #endif
+       gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUTF16Transcoder>(XMLUni::fgUTF16LEncodingString, swapped), XMLRecognizer::UTF_16L);
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16LEncodingString,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16LEncodingString
+               , swapped
+           )
+       );
+
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16LEncodingString2,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16LEncodingString2
+               , swapped
+           )
+       );
+
+       gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUCS4Transcoder>(XMLUni::fgUCS4LEncodingString, swapped), XMLRecognizer::UCS_4L);
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4LEncodingString,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4LEncodingString
+               , swapped
+           )
+       );
+
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4LEncodingString2,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4LEncodingString2
+               , swapped
+           )
+       );
+
+       //
+       //  Add in our mappings for UTF-16 and UCS-4, big endian
+       //
+       swapped = false;
+       #if defined(ENDIANMODE_LITTLE)
+       swapped = true;
+       #endif
+       gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUTF16Transcoder>(XMLUni::fgUTF16BEncodingString, swapped), XMLRecognizer::UTF_16B);
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16BEncodingString,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16BEncodingString
+               , swapped
+           )
+       );
+
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16BEncodingString2,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16BEncodingString2
+               , swapped
+           )
+       );
+
+       gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUCS4Transcoder>(XMLUni::fgUCS4BEncodingString, swapped), XMLRecognizer::UCS_4B);
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4BEncodingString,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4BEncodingString
+               , swapped
+           )
+       );
+
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4BEncodingString2,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4BEncodingString2
+               , swapped
+           )
+       );
+
+       //
+       //  Add in our mappings for UTF-16 and UCS-4 which does not indicate endian
+       //  assumes the same endian encoding as the OS
+       //
+
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString2,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString2
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString3,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString3
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString4,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString4
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4EncodingString,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4EncodingString
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4EncodingString2,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4EncodingString2
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4EncodingString3,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4EncodingString3
+               , false
+           )
+       );
+
+       //
+       //  Add in our mappings for IBM037, and the one alias we support for
+       //  it, which is EBCDIC-CP-US.
+       //
+       gMappingsRecognizer->setElementAt(new ENameMapFor<XMLEBCDICTranscoder390>(XMLUni::fgEBCDICEncodingString), XMLRecognizer::EBCDIC);
+       gMappings->put((void*)XMLUni::fgIBM037EncodingString, new ENameMapFor<XMLEBCDICTranscoder390>(XMLUni::fgIBM037EncodingString));
+       gMappings->put((void*)XMLUni::fgIBM037EncodingString2, new ENameMapFor<XMLEBCDICTranscoder390>(XMLUni::fgIBM037EncodingString2));
+
+
+       //hhe
+       gMappings->put((void*)XMLUni::fgIBM1047EncodingString, new ENameMapFor<XMLIBM1047Transcoder390>(XMLUni::fgIBM1047EncodingString));
+       gMappings->put((void*)XMLUni::fgIBM1047EncodingString2, new ENameMapFor<XMLIBM1047Transcoder390>(XMLUni::fgIBM1047EncodingString2));
+
+       //
+       //  Add in our mappings for IBM037 with Euro update, i.e. IBM1140. It
+       //  has alias IBM01140, the one suggested by IANA
+       //
+       gMappings->put((void*)XMLUni::fgIBM1140EncodingString, new ENameMapFor<XMLIBM1140Transcoder390>(XMLUni::fgIBM1140EncodingString));
+       gMappings->put((void*)XMLUni::fgIBM1140EncodingString2, new ENameMapFor<XMLIBM1140Transcoder390>(XMLUni::fgIBM1140EncodingString2));
+       gMappings->put((void*)XMLUni::fgIBM1140EncodingString3, new ENameMapFor<XMLIBM1140Transcoder390>(XMLUni::fgIBM1140EncodingString3));
+       gMappings->put((void*)XMLUni::fgIBM1140EncodingString4, new ENameMapFor<XMLIBM1140Transcoder390>(XMLUni::fgIBM1140EncodingString4));
+
+       //
+       //  Add in our mappings for Windows-1252. We don't have any aliases for
+       //  this one, so there is just one mapping.
+       //
+       gMappings->put((void*)XMLUni::fgWin1252EncodingString, new ENameMapFor<XMLWin1252Transcoder390>(XMLUni::fgWin1252EncodingString));
+    } // use new intrinsics
+    else // use old intrinsics
+    {
+       //
+       //  A stupid way to increment the fCurCount inside the RefVectorOf
+       //
+       for (unsigned int i = 0; i < XMLRecognizer::Encodings_Count; i++)
+           gMappingsRecognizer->addElement(0);
+
+       //
+       //  Add in the magical mapping for the native XMLCh transcoder. This
+       //  is used for internal entities.
+       //
+       gMappingsRecognizer->setElementAt(new ENameMapFor<XMLChTranscoder>(XMLUni::fgXMLChEncodingString), XMLRecognizer::XERCES_XMLCH);
+       gMappings->put((void*)XMLUni::fgXMLChEncodingString, new ENameMapFor<XMLChTranscoder>(XMLUni::fgXMLChEncodingString));
+
+       //
+       //  Add in our mappings for ASCII.
+       //
+       gMappingsRecognizer->setElementAt(new ENameMapFor<XMLASCIITranscoder>(XMLUni::fgUSASCIIEncodingString), XMLRecognizer::US_ASCII);
+       gMappings->put((void*)XMLUni::fgUSASCIIEncodingString, new ENameMapFor<XMLASCIITranscoder>(XMLUni::fgUSASCIIEncodingString));
+       gMappings->put((void*)XMLUni::fgUSASCIIEncodingString2, new ENameMapFor<XMLASCIITranscoder>(XMLUni::fgUSASCIIEncodingString2));
+       gMappings->put((void*)XMLUni::fgUSASCIIEncodingString3, new ENameMapFor<XMLASCIITranscoder>(XMLUni::fgUSASCIIEncodingString3));
+       gMappings->put((void*)XMLUni::fgUSASCIIEncodingString4, new ENameMapFor<XMLASCIITranscoder>(XMLUni::fgUSASCIIEncodingString4));
+
+
+       //
+       //  Add in our mappings for UTF-8
+       //
+       gMappingsRecognizer->setElementAt(new ENameMapFor<XMLUTF8Transcoder>(XMLUni::fgUTF8EncodingString), XMLRecognizer::UTF_8);
+       gMappings->put((void*)XMLUni::fgUTF8EncodingString, new ENameMapFor<XMLUTF8Transcoder>(XMLUni::fgUTF8EncodingString));
+       gMappings->put((void*)XMLUni::fgUTF8EncodingString2, new ENameMapFor<XMLUTF8Transcoder>(XMLUni::fgUTF8EncodingString2));
+
+       //
+       //  Add in our mappings for Latin1
+       //
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString2, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString2));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString3, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString3));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString4, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString4));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString5, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString5));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString6, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString6));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString7, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString7));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString8, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString8));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString9, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString9));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString10, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString10));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString11, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString11));
+       gMappings->put((void*)XMLUni::fgISO88591EncodingString12, new ENameMapFor<XML88591Transcoder>(XMLUni::fgISO88591EncodingString12));
+
+       //
+       //  Add in our mappings for UTF-16 and UCS-4, little endian
+       //
+       bool swapped = false;
+
+       #if defined(ENDIANMODE_BIG)
+       swapped = true;
+       #endif
+       gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUTF16Transcoder>(XMLUni::fgUTF16LEncodingString, swapped), XMLRecognizer::UTF_16L);
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16LEncodingString,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16LEncodingString
+               , swapped
+           )
+       );
+
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16LEncodingString2,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16LEncodingString2
+               , swapped
+           )
+       );
+
+       gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUCS4Transcoder>(XMLUni::fgUCS4LEncodingString, swapped), XMLRecognizer::UCS_4L);
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4LEncodingString,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4LEncodingString
+               , swapped
+           )
+       );
+
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4LEncodingString2,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4LEncodingString2
+               , swapped
+           )
+       );
+
+       //
+       //  Add in our mappings for UTF-16 and UCS-4, big endian
+       //
+       swapped = false;
+       #if defined(ENDIANMODE_LITTLE)
+       swapped = true;
+       #endif
+       gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUTF16Transcoder>(XMLUni::fgUTF16BEncodingString, swapped), XMLRecognizer::UTF_16B);
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16BEncodingString,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16BEncodingString
+               , swapped
+           )
+       );
+
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16BEncodingString2,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16BEncodingString2
+               , swapped
+           )
+       );
+
+       gMappingsRecognizer->setElementAt(new EEndianNameMapFor<XMLUCS4Transcoder>(XMLUni::fgUCS4BEncodingString, swapped), XMLRecognizer::UCS_4B);
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4BEncodingString,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4BEncodingString
+               , swapped
+           )
+       );
+
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4BEncodingString2,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4BEncodingString2
+               , swapped
+           )
+       );
+
+       //
+       //  Add in our mappings for UTF-16 and UCS-4 which does not indicate endian
+       //  assumes the same endian encoding as the OS
+       //
+
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString2,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString2
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString3,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString3
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUTF16EncodingString4,
+           new EEndianNameMapFor<XMLUTF16Transcoder>
+           (
+               XMLUni::fgUTF16EncodingString4
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4EncodingString,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4EncodingString
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4EncodingString2,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4EncodingString2
+               , false
+           )
+       );
+       gMappings->put
+       (
+   		(void*)XMLUni::fgUCS4EncodingString3,
+           new EEndianNameMapFor<XMLUCS4Transcoder>
+           (
+               XMLUni::fgUCS4EncodingString3
+               , false
+           )
+       );
+
+       //
+       //  Add in our mappings for IBM037, and the one alias we support for
+       //  it, which is EBCDIC-CP-US.
+       //
+       gMappingsRecognizer->setElementAt(new ENameMapFor<XMLEBCDICTranscoder>(XMLUni::fgEBCDICEncodingString), XMLRecognizer::EBCDIC);
+       gMappings->put((void*)XMLUni::fgIBM037EncodingString, new ENameMapFor<XMLEBCDICTranscoder>(XMLUni::fgIBM037EncodingString));
+       gMappings->put((void*)XMLUni::fgIBM037EncodingString2, new ENameMapFor<XMLEBCDICTranscoder>(XMLUni::fgIBM037EncodingString2));
+
+
+       //hhe
+       gMappings->put((void*)XMLUni::fgIBM1047EncodingString, new ENameMapFor<XMLIBM1047Transcoder>(XMLUni::fgIBM1047EncodingString));
+       gMappings->put((void*)XMLUni::fgIBM1047EncodingString2, new ENameMapFor<XMLIBM1047Transcoder>(XMLUni::fgIBM1047EncodingString2));
+
+       //
+       //  Add in our mappings for IBM037 with Euro update, i.e. IBM1140. It
+       //  has alias IBM01140, the one suggested by IANA
+       //
+       gMappings->put((void*)XMLUni::fgIBM1140EncodingString, new ENameMapFor<XMLIBM1140Transcoder>(XMLUni::fgIBM1140EncodingString));
+       gMappings->put((void*)XMLUni::fgIBM1140EncodingString2, new ENameMapFor<XMLIBM1140Transcoder>(XMLUni::fgIBM1140EncodingString2));
+       gMappings->put((void*)XMLUni::fgIBM1140EncodingString3, new ENameMapFor<XMLIBM1140Transcoder>(XMLUni::fgIBM1140EncodingString3));
+       gMappings->put((void*)XMLUni::fgIBM1140EncodingString4, new ENameMapFor<XMLIBM1140Transcoder>(XMLUni::fgIBM1140EncodingString4));
+
+       //
+       //  Add in our mappings for Windows-1252. We don't have any aliases for
+       //  this one, so there is just one mapping.
+       //
+       gMappings->put((void*)XMLUni::fgWin1252EncodingString, new ENameMapFor<XMLWin1252Transcoder>(XMLUni::fgWin1252EncodingString));
+    } // use old intrinsics
 
 }//end initTransService()
 
diff --git a/src/xercesc/util/Transcoders/Uniconv390/XML256TableTranscoder390.hpp b/src/xercesc/util/Transcoders/Uniconv390/XML256TableTranscoder390.hpp
index 49a788d2ff2ee8fbf393de3d034931cf6501bef2..e2a379540323420b60f253116bbf6d2ea9f4127a 100644
--- a/src/xercesc/util/Transcoders/Uniconv390/XML256TableTranscoder390.hpp
+++ b/src/xercesc/util/Transcoders/Uniconv390/XML256TableTranscoder390.hpp
@@ -56,13 +56,16 @@
 
 /*
  * $Log$
+ * Revision 1.2  2004/04/22 22:46:46  neilg
+ * not all 390 processors support the new transcoding instructions; this patch makes Xerces work there as well.  Thanks to Steve Dulin
+ *
  * Revision 1.1  2004/02/06 15:02:11  cargilld
  * Intrinsic transcoding support for 390.
  *
  */
 
-#ifndef XML256TABLETRANSCODER_HPP
-#define XML256TABLETRANSCODER_HPP
+#ifndef XML256TABLETRANSCODER390_HPP
+#define XML256TABLETRANSCODER390_HPP
 
 #include <xercesc/util/TransService.hpp>
 
diff --git a/src/xercesc/util/Transcoders/Uniconv390/XML88591Transcoder390.hpp b/src/xercesc/util/Transcoders/Uniconv390/XML88591Transcoder390.hpp
index 5f3ce444704dbdd62b05fce5a6dc83b760b5ca7c..836348a98c6fa263c5baaa46f42b7c9a77372f08 100644
--- a/src/xercesc/util/Transcoders/Uniconv390/XML88591Transcoder390.hpp
+++ b/src/xercesc/util/Transcoders/Uniconv390/XML88591Transcoder390.hpp
@@ -56,13 +56,16 @@
 
 /*
  * $Log$
+ * Revision 1.2  2004/04/22 22:46:46  neilg
+ * not all 390 processors support the new transcoding instructions; this patch makes Xerces work there as well.  Thanks to Steve Dulin
+ *
  * Revision 1.1  2004/02/06 15:02:11  cargilld
  * Intrinsic transcoding support for 390.
  *
  */
 
-#ifndef XML88591TRANSCODER_HPP
-#define XML88591TRANSCODER_HPP
+#ifndef XML88591TRANSCODER390_HPP
+#define XML88591TRANSCODER390_HPP
 
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/TransService.hpp>
diff --git a/src/xercesc/util/Transcoders/Uniconv390/XMLASCIITranscoder390.hpp b/src/xercesc/util/Transcoders/Uniconv390/XMLASCIITranscoder390.hpp
index 61234b756c7c9de06dd25d905464564330289a8f..61ab3bd5306637fae1ae4e3d455b3ffec2bad2b4 100644
--- a/src/xercesc/util/Transcoders/Uniconv390/XMLASCIITranscoder390.hpp
+++ b/src/xercesc/util/Transcoders/Uniconv390/XMLASCIITranscoder390.hpp
@@ -56,13 +56,16 @@
 
 /*
  * $Log$
+ * Revision 1.2  2004/04/22 22:46:46  neilg
+ * not all 390 processors support the new transcoding instructions; this patch makes Xerces work there as well.  Thanks to Steve Dulin
+ *
  * Revision 1.1  2004/02/06 15:02:11  cargilld
  * Intrinsic transcoding support for 390.
  *
  */
 
-#ifndef XMLASCIITRANSCODER_HPP
-#define XMLASCIITRANSCODER_HPP
+#ifndef XMLASCIITRANSCODER390_HPP
+#define XMLASCIITRANSCODER390_HPP
 
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/TransService.hpp>
diff --git a/src/xercesc/util/Transcoders/Uniconv390/XMLEBCDICTranscoder390.hpp b/src/xercesc/util/Transcoders/Uniconv390/XMLEBCDICTranscoder390.hpp
index 1815735539cbead06848fad3dfe39c626ecd6d61..efe04882748dbdd480859f8aa604bed434693a79 100644
--- a/src/xercesc/util/Transcoders/Uniconv390/XMLEBCDICTranscoder390.hpp
+++ b/src/xercesc/util/Transcoders/Uniconv390/XMLEBCDICTranscoder390.hpp
@@ -56,13 +56,16 @@
 
 /*
  * $Log$
+ * Revision 1.2  2004/04/22 22:46:46  neilg
+ * not all 390 processors support the new transcoding instructions; this patch makes Xerces work there as well.  Thanks to Steve Dulin
+ *
  * Revision 1.1  2004/02/06 15:02:11  cargilld
  * Intrinsic transcoding support for 390.
  *
  */
 
-#ifndef XMLEBCDICTRANSCODER_HPP
-#define XMLEBCDICTRANSCODER_HPP
+#ifndef XMLEBCDICTRANSCODER390_HPP
+#define XMLEBCDICTRANSCODER390_HPP
 
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/Transcoders/Uniconv390/XML256TableTranscoder390.hpp>
diff --git a/src/xercesc/util/Transcoders/Uniconv390/XMLIBM1047Transcoder390.hpp b/src/xercesc/util/Transcoders/Uniconv390/XMLIBM1047Transcoder390.hpp
index 5ac8ad73c9acb91decd4c98697dd3de7a5e61204..0c8f2c607aad1c820a212dac75504715c2eab509 100644
--- a/src/xercesc/util/Transcoders/Uniconv390/XMLIBM1047Transcoder390.hpp
+++ b/src/xercesc/util/Transcoders/Uniconv390/XMLIBM1047Transcoder390.hpp
@@ -56,13 +56,16 @@
 
 /*
  * $Log$
+ * Revision 1.2  2004/04/22 22:46:46  neilg
+ * not all 390 processors support the new transcoding instructions; this patch makes Xerces work there as well.  Thanks to Steve Dulin
+ *
  * Revision 1.1  2004/02/06 15:02:11  cargilld
  * Intrinsic transcoding support for 390.
  *
  */
 
-#ifndef XMLIBM1047TRANSCODER_HPP
-#define XMLIBM1047TRANSCODER_HPP
+#ifndef XMLIBM1047TRANSCODER390_HPP
+#define XMLIBM1047TRANSCODER390_HPP
 
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/Transcoders/Uniconv390/XML256TableTranscoder390.hpp>
diff --git a/src/xercesc/util/Transcoders/Uniconv390/XMLIBM1140Transcoder390.hpp b/src/xercesc/util/Transcoders/Uniconv390/XMLIBM1140Transcoder390.hpp
index 6c6757a7bcdc9f002121fb99117203f56a066209..56d2520b58d006fde5aa3eecb36ba076661aa7e0 100644
--- a/src/xercesc/util/Transcoders/Uniconv390/XMLIBM1140Transcoder390.hpp
+++ b/src/xercesc/util/Transcoders/Uniconv390/XMLIBM1140Transcoder390.hpp
@@ -56,13 +56,16 @@
 
 /*
  * $Log$
+ * Revision 1.3  2004/04/22 22:46:46  neilg
+ * not all 390 processors support the new transcoding instructions; this patch makes Xerces work there as well.  Thanks to Steve Dulin
+ *
  * Revision 1.2  2004/02/06 18:18:09  cargilld
  * Misc 390 changes.
  *
  */
 
-#ifndef XMLIBM1140TRANSCODER_HPP
-#define XMLIBM1140TRANSCODER_HPP
+#ifndef XMLIBM1140TRANSCODER390_HPP
+#define XMLIBM1140TRANSCODER390_HPP
 
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/Transcoders/Uniconv390/XML256TableTranscoder390.hpp>
diff --git a/src/xercesc/util/Transcoders/Uniconv390/XMLUTF8Transcoder390.hpp b/src/xercesc/util/Transcoders/Uniconv390/XMLUTF8Transcoder390.hpp
index 3f1454b96ec14f9770992abe90c65e01a0862c57..81ca9769d795f71847f9dc12dbdb8238bad60c98 100644
--- a/src/xercesc/util/Transcoders/Uniconv390/XMLUTF8Transcoder390.hpp
+++ b/src/xercesc/util/Transcoders/Uniconv390/XMLUTF8Transcoder390.hpp
@@ -56,13 +56,16 @@
 
 /*
  * $Log$
+ * Revision 1.3  2004/04/22 22:46:46  neilg
+ * not all 390 processors support the new transcoding instructions; this patch makes Xerces work there as well.  Thanks to Steve Dulin
+ *
  * Revision 1.2  2004/02/06 18:18:09  cargilld
  * Misc 390 changes.
  *
  */
 
-#ifndef XMLUTF8TRANSCODER_HPP
-#define XMLUTF8TRANSCODER_HPP
+#ifndef XMLUTF8TRANSCODER390_HPP
+#define XMLUTF8TRANSCODER390_HPP
 
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/TransService.hpp>
diff --git a/src/xercesc/util/Transcoders/Uniconv390/XMLWin1252Transcoder390.hpp b/src/xercesc/util/Transcoders/Uniconv390/XMLWin1252Transcoder390.hpp
index 2c55e522df34826fee2be88a3e5682c973aeb1c5..30c09db6e30031f87c3def664a221adb580cd594 100644
--- a/src/xercesc/util/Transcoders/Uniconv390/XMLWin1252Transcoder390.hpp
+++ b/src/xercesc/util/Transcoders/Uniconv390/XMLWin1252Transcoder390.hpp
@@ -56,13 +56,16 @@
 
 /*
  * $Log$
+ * Revision 1.2  2004/04/22 22:46:46  neilg
+ * not all 390 processors support the new transcoding instructions; this patch makes Xerces work there as well.  Thanks to Steve Dulin
+ *
  * Revision 1.1  2004/02/06 15:02:11  cargilld
  * Intrinsic transcoding support for 390.
  *
  */
 
-#ifndef XMLWIN1252TRANSCODER_HPP
-#define XMLWIN2152TRANSCODER_HPP
+#ifndef XMLWIN1252TRANSCODER390_HPP
+#define XMLWIN2152TRANSCODER390_HPP
 
 #include <xercesc/util/XercesDefs.hpp>
 #include <xercesc/util/Transcoders/Uniconv390/XML256TableTranscoder390.hpp>