Question How to redeem field recorded?

Cecil

19+ years progress programming and still learning.
Something New. Since you are using Windows you might be able to utilise .NET system calls. Once again it's not perfect and I sure it can be all handled in memory rather than reading and writing to disk all the time but I not sure how.

This code is not using the is using the ZLIB library.

Code:
USING System.IO.*             FROM ASSEMBLY.
USING System.IO.Compression.* FROM ASSEMBLY.

PROCEDURE UnpackifyV2:

    DEFINE INPUT-OUTPUT PARAMETER ENCODEDSOURCE AS LONGCHAR CASE-SENSITIVE NO-UNDO.
  
    DEFINE VARIABLE UNECODEDSOURCE              AS Memptr     NO-UNDO.
    DEFINE VARIABLE GZIPFilename            AS CHARACTER   NO-UNDO.
    DEFINE VARIABLE newFileName             AS CHARACTER   NO-UNDO.
    DEFINE VARIABLE currentFileName         AS CHARACTER   NO-UNDO.
  
    /*** .NET stuff ***/
    DEFINE VARIABLE originalFileStream      AS  FileStream  NO-UNDO.
    DEFINE VARIABLE decompressedFileStream  AS  FileStream  NO-UNDO.
    DEFINE VARIABLE fileToDecompress        AS  FileInfo    NO-UNDO.
    DEFINE VARIABLE decompressionStream     AS  GZipStream  NO-UNDO.
  
    Set-SIZE(UNECODEDSOURCE) = 0.

    GZIPFilename = SUBSTITUTE('&1unpackify_&2.blob',
                              SESSION:TEMP-DIR,
                              THIS-PROCEDURE:UNIQUE-ID).

    /** First Stage Decode the data to memptr**/
    UNECODEDSOURCE = BASE64-DECODE(ENCODEDSOURCE).
      
    /** THE MAGIC! I don't know why but we have to drop the first four bytes starting at the 5th byte.**/
    /** Compress GZIP files start with 0x1F 0x8B 0x08**/
    COPY-LOB FROM UNECODEDSOURCE STARTING AT 5 TO FILE GZIPFilename.
  
    /** Memory Clean up.**/
    Set-SIZE(UNECODEDSOURCE) = 0.
  
    fileToDecompress    = NEW FileInfo(GZIPFilename).
    originalFileStream  = fileToDecompress:OpenRead().
    currentFileName     = fileToDecompress:FullName.
  
    /*newFileName     = SUBSTRING(currentFileName, 1, (currentFileName:Length - currentFileName:Extension:Length)). */
  
    newFileName = currentFileName + '.xml'.
  
    decompressedFileStream = File:Create(newFileName).

    decompressionStream = NEW GZipStream(originalFileStream, CompressionMode:Decompress).

    decompressionStream:CopyTo(decompressedFileStream).
  
    decompressedFileStream:Close().
    originalFileStream:Close(). /** Must Close the stream.**/
  
    DELETE OBJECT decompressionStream.
    DELETE OBJECT fileToDecompress.
      
    IF SEARCH(newFileName) NE ? THEN
    DO:
        COPY-LOB FROM FILE newFileName TO OBJECT ENCODEDSOURCE.
        OS-DELETE VALUE(newFileName).
    END.
  
    /** Delete the temporary Blob file**/
    OS-DELETE VALUE(GZIPFilename).

    RETURN.
END PROCEDURE.


/** Main Block**/

DEFINE VARIABLE OracleDBblbField AS LONGCHAR CASE-SENSITIVE NO-UNDO.

OracleDBblbField = 'CxwAAB+LCAAAAAAABADtvQdgHEmWJSYvbcp7f0r1StfgdKEIgGATJNiQQBDswYjN5pLsHWlHIymrKoHKZVZlXWYWQMztnbz33nvvvffee++997o7nU4n99//P1xmZAFs9s5K2smeIYCqyB8/fnwfPyIeT9v8ZV1N03eLctl89tG8bVeP7t69uroar6q6zcrzoplm5bhYno8n9V1q/VF6mddNVn320e54595HR49P3uTv8fbRY/rjpM3Ts9lnH9Gr9+7v7uzu7H+6f+/+3sN7Ozs7u/d27j+gH/Trzt6D/Xuf7tL/7t9/cG9vr9d1McuPHk+/enZ07/7ju/j5eHry5si+QJ/Rn49Pnn358ug+wX98l399vMzaL1dHL1+dvn5zfHL8Zfr0NH19+uonz0741zevjl+8fvnlqzen6XGKJk9On5+enH1x+uLNl+nZi6dfvX7z6vFdgfH4vKpfZhdHBFp/e7yoZkf3Hzy+i5+Pm7wu8qPdx3fll8dLwocHRQCA2mx+uiiO9mi02/S/nf03uw8e7T98dH//8V356nG7OlusAEF+ob/p40Y+4N8eT5/+JPrHD/r2eDGRL/EL/U0kPtrB3/jl8YqmGmDpE/PrY6IpOODoi2zZ1tly/CJvf3+i75jamK8eT79YL9H43v393f0dwt588Pid/gJqnj0lGp2mL199xb88vmu+fPzVM/x4/fLxXfkNVMrKo51dphP9Rpi+zutLQZV/4z7Plp0+8QH3iV8G++RWXz3DD+mTP8D7z4oFAQSHHQhAfMAA8cuT41dfnb46EyD8zVfP8EOA8Ad13hZ1BhLrb4/bapHt3JOfjD9+yg98fFeYtFqsaJTvTrI6mx7PjgjXV6efH1NP5hP9jsZ+dPLli588fXFy9uWL4+emBT5//A60+/wrfo/JeF6u31X0+Zd1cXG0A3LKr8SO5ptJc/TF6auT46fj9OTL56dvjp8ep9up9p+++PLVF8fP7z57dUpEPPnyiyfjZ8dPzr5MT86On6d37+7+5JfP05PtZ/TVi2cE4PjVG5KJL9LjF6e/95d30RuBJ0LK6PJF0ZK4vXj5naNQoEnw8OHjs9Oj+5/u7dBsfvpwd5c+pg8ev3tRLfKj4xdPv3x19uLbx07+jumT4/T5m6cYLjd6/O4ZManXlhD6/Pg1fc2fP86Xs7w+ZSzePb+oj45/Mv3Ol8c/8dXZFxgAifKLN2cvvhyluwfUN7d4vKyrI/4Tvzx+9yQravqFiPOTX6avvnz65U+eHb86+5Ja6zfMRSFPCv8McyOR5PTl0e5DosSnn4IW9BcxlnIVQXyZQaJ37oMl+ffH7/jHk1fHr8/AAfLhebUkXXJwjwDtEV2hcuiDx3e9Ud+VKajzhZmHg72H90FzzMOnnXm4f//ggObhoT8PX70+e3GcHj8nXXf8/PTzV6Qa79LfJ18RqVPSiM9PvvzyeWc+Iu8c2zkxWO/tPdx7+GDXYM1Iv8oZCCbi1VfHNFevT9Pnp2dvTkdpuh9M0X53hr7zNH3y5YvPz778yeMXZ9/M9Nzfebj7AdNz1xsS2bgXzyD28+wyP4KN23kYTsX9+zvUIT/7Bzu79/c+fXB/f59tFr9DekNhvCes3d3dB5/u7z98CFb7QFh7u3v094OD/U/vfzCse7sP9vZ2Hzx8EIN1lzl2ljdGf+zs3yey3PsUgPCC5du9nU8Jq4NP92mYPt9++2X6jLjwBSsuteavU5miUIcIQ+7u7z58cOCJEc/eU8ZAdMfz4y9OSVeS9KcviKm/9Nnxwf0uPx4/f/nt4588e/781PgIZ8d9tvQMj7JlYHKEFXc+pcEzZh/GijKYu0LVy5e1/Hwjv9C8jNGF+fvx5at86j7FH49PKngcQjaxED95/PzLV5aSl9xA35DGd+VH/82Xp6+/7Ly4//DT8cHGV4+fnn5x+p7dvaRJ+5w1tv/WvfHeDT3x0E6/eM/eTo7fvOcbT09fvzw++XYXwZteO3vzvnT//NXZ6/d8hXBji/qer4lf8Z4vOQ/ofd768qs3r768zbDuGoYv8NfZyRevCdDrNzs7/OOIpYt+Pr58cuK4nn5/vOK2u3v8ifzx+JJ/fKqt5LO7Cu2u/sn9ILZ5k7+o6oX8ntUX5AtefpHXU7Iw+/t7wob8N5xxwnFGHHsCH8b8ST7buj3J2qPPT1+x/6d/AuBPINxZFjP2nOU38py/YCCvvyR199WbL+FB45PHv0i63+fRAXP9gNXuT8gP/aTJL+A1NOR6XxztQx3Lr4/f4d/jEwRIn3/1SjwycggIK/56ebyqyqMTslykqdOnJ/fv39uDDZXPOwN3I78r/VUz0oyviA9OjsRK0HNwf/eA9L18+nhGFLl08RFZdPnkcVm17GzzT8KXQd31yc9/tMQjr4sLCtbWdSxKvbo3ruqLu7BXd3ce3qUGs6a4+PGP5K18drY8J7gn2bJaFhTIFj/I2qJafpG382qWHpcXVV2080UM5JtXgLp799XpyTaB3Z7u7i+38cnOvd37H9310LoNtC6CFAVvN/NsF4Be5ed5nS+nefrVq7PPPvrx9w2qjx6/obCvofh10Xi/vx9C+fIyL6tVPttuzLiA2y2h3Uisuz6KT4sLkuyvQzZDMoHwk1m5puD43uKr37t98OXFsnpSXn/19Ivll99+eX7+9JPq+LPHd/2WxJWG1PS7zyB2LqXh7/17313+5OLgO1n25qfPZz+1an7qq+erfeLHh/Mf/OTD7+4uftHssrxb/j5v5l/U955cHu+8unj23YPTy2fFt3/i4jtvq/LJvVX9/OrVt19cziavF8/K+d6zT+//YPXiwZOrs0nz9PnFV59PX//E7/X0+U9O9i+a2YOn1Qtyi776tLz7fHH23R9cPNu7+H32F8vvvs5/0cH9V3s/eVatfp9Pnj55/pO/10/s33v9nby4++Dey/n093r1+3wmA/GQf/x75dcyqt+bHOKnGeQLv53kdVuckxSQTH1xdvb586cnJ09evb44vjp7cnxxdvbd2fLly3vN6YMfnF49/Ynf5zu/V/VTZ/PL6Yvjnzh99uQnjq/ePD19/sXx28+Pd786fTL/4uQnyrN3pz84fvXk4sVPPjmu3py8LZ9+dbJ7Ml08+0H23at3v9fT44V898Wbb+++ePbV22dvfuL1k6c/9Xt/Zyf77k+tfp+9Z28n974zPzt9tfqpvXLn9/nu1cXsp0+vvj2fvvjizfEVhXp7X7w523nxg7MffJc/Ow0/++mTJ5++J07Pnh6/lu+aNyfX82dvXj85Iby+/Imdg9UXry6unl38Pk9/8id+4vnp1cHVF0+P6f+n/P8v3xzvfPH04ob3f+Lq1L7fVK++2rn4ifI7T968ffHy93pz+tUXT84Yz5N3Xzz/vU5/8sXZ6Xde/8RX95++uX77IXAXNGqGe/zuixnBO32z+53vvHk7f3L27BXgv/nq9OHrnzx9hs+fnJ2+++rV6enVxU8ddOf4Cc3x04vfZ+f4i7PPv3Ncff7k+OzpYvLk95p898lPfv6d/NnZT7y4fr6z/OQn3l29+am8err/ZLJz0E6Of/D8J37ve598sv/J/uXlJ6+/+kX125e7n997/sUX+/nJu3ef/KLTbxdFsXg5L69env4+P/jpn/rug28/f1lMP917sf69Jp9/+lMnP/n2B9nvnS8p+vyJz5s3n+SLL6+/O3v+e/+i2ZNfdPDpq+XFwSfPV3s/eX//1U989eDzi4OfuvpFV69+r92Ln/r84tvrnZ3j+t13Hl4eX3zx5Pj485++uHh+j3j75OAHx1+Cnt/+iYMnx+cHp8SDJ0/y46tv/wTR8dVO+eTJ73P17Pj3Ofu9rn4fGvdX3yYZ+PzkpPmcUg3Pnlx9cfrFkwPQdHZ29RO/zxdPsuNnz2cXv+jZ5f3mF2Xr4y93dz59+JO/1/VP/VT1U5c/OSV6fcp9EWEvJmdXF9knTz5/O3vy6u0TmqNXL796W1JY/OzpT/zkd779Ez/5xfondh6+eP72O6+rpzufP/nuky+Of+KL0+rpT7z54qfPiNd+4t2Xb36fvS+efnX14gdvd794+vvsy+fHkf+f7n3x01/tvXjzEz948ezFm6+evfiJ6sm+gXlSPfnqzenud17+xNufpPk/uHjzVflTP/HVd5589ytir9PFxec/8fs8+31Or54cX315cfrkiy9fPP19dr74wVfXX775AvDfffGDk4tnV6ZNfvF0/sUXPRyeTYVOx69oFPtXb45/n8+5/cXp51+cEvV8Gl+cfvfF5/Od2bePP31+/fDe7N50/fvs/eT17PNykX33xfynPn/4NvvubDX7/FnzfPHicvL6fjEtHl7/1O/95HJK+oF0xWpy/fDt9PMvri7Oj7nfb1+9Jh1w8uT+myffqU7zi1e/z089zb79amf6tLp8Tj3Mru//dKBv9qyuob4fts8X37l+fu875fTzh8SEry6ni/Ly+d67n6Z+f0Dvzad7z376p779+7wjfK4nT588rU4/v3i5//s8tH1w204f9774OrDfVM8+v3iz/1MvHP6ddxflT08//8717/N7v1hNTu4vJ/d+n/Xvszy7nHxOgrn7ooSO+31e9+jV/D73zujvn8R7899n79XeF6/v//R0cUU6YOrxPMn/2ee/F/Hyt794euU+/8Hxk/lPP6lm33519WVxcDnZe/GD6cltaKr4fPfFW+j0V1eOD744/r0+/3Lvvfngp3+f774qs+8++0EH9nr6dFZ8cbzz+cnrX/T567PJvaesy746Pt4nu/YTJ4v7+6uf/vbrn5pefvv5xdXnz5u7ef1w2f70T39x9YuO79ere/Xby+PfZ7X6dHJ/8e2Xn75aP7z7+uzs7tUXDz6vL+vpvH758Lw4eHH13dUPPr37Uz+xmN/N3q2uj3+vy4uny72zb78o94/vXjav3rx71n7793ryxar4fSa/qPlFi+arnb2f2n14/Z0X68+vz4pPX62Klw+Ozx58efbV7/Xp5/e/2s3Lhz9YTneb5btPXn77q+dPz6ZvL36vt/dftudnL+unv9fFu594ePITX91bvWh/75PvPHl2sci++Or88+/8op3Xv8/sB2dv89ez3ye/t/fk8pOfmOxc5PMfEHdc5D998NP3z37v+nR2v/wq+2R/vfPJ733/9FnxU+XB4tOnO28vs/rh3Xp5vH76xV711d3f6+SkXv5k/UXTvPnO3uryF/304jv3Xn3Z7j6tJrtF/eqi/Zxy6F8d/97X9+vJ7/X63unZT3yVF0/2fp/y5PHdrkchn4i3cdd6IM43QbylCxgtFpy6C0HLc1qoaPsLINTueFUWU0qh/P4vn//+9OrvT07ljJc25AvKXwHy+7jMyF8xNrM55UkmbdVZwbm/82jnHlZw9NvHS0Zul3NkOzv3KEW29ynFMvLx41lx8ZNYDNnoiGqjx9PXLcWCuwim5FdKI1VtcUkZqHVLnvAPslmVVum6qVL65eTNdo7UkrTgmEj6vKuEpN90BfDo/wFEEac2CxwAAA=='.

RUN UnpackifyV2 (INPUT-OUTPUT OracleDBblbField).

MESSAGE STRING(OracleDBblbField) LENGTH(OracleDBblbField)
    View-AS ALERT-BOX INFO.
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
I'm using .NET Version 4.5.
Compiling with:
10.2B08:
Code:
Could not locate element 'CopyTo' in class 
'System.IO.Compression.GZipStream'. (12927)
**  Could not understand line 50. (196)
11.3.2:
Syntax is correct.

11.4:
(editor crashes)
Code:
An unhandled exception of type 'System.IO.FileNotFoundException' 
occurred in Progress.clrbridge.dll

Additional information: Could not load file or assembly 'Progress.Messages, 
Version=11.4.0.1294, Culture=neutral,PublicKeyToken=null' or one of its 
dependencies. The system cannot find the file specified.

I'm on Win7 SP1 x64, with .NET 3.5, 4.0, and 4.5.1. It appears the 11.4 client is referencing the 4.0 installation. From event viewer:

Code:
Application: prowin32.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
Stack:
   at Progress.ClrBridge.ProMarshal.ToGCHandle(System.Object, Boolean)
   at <Module>.Progress.ClrBridge.BrgClrFromPro.convertExceptionToHandle(Progress.ClrBridge.BrgClrFromPro*, System.Exception)
   at <Module>.Progress.ClrBridge.BrgClrFromPro.createFormProxy(Progress.ClrBridge.BrgClrFromPro*, ditem*)
Code:
Faulting application name: prowin32.exe, version: 11.4.0.1294, time stamp: 0x53d2e691
Faulting module name: KERNELBASE.dll, version: 6.1.7601.18409, time stamp: 0x53159a86
Exception code: 0xe0434352
Fault offset: 0x0000c42d
Faulting process id: 0x31a8
Faulting application start time: 0x01d0045a2ce40516
Faulting application path: C:\OE\11.4\bin\prowin32.exe
Faulting module path: C:\Windows\syswow64\KERNELBASE.dll
 

Cecil

19+ years progress programming and still learning.
Worst case scenario is you might have to shell out to the OS and do something like this:

Code:
DEFINE STREAM sGZIP.
DEFINE VARIABLE XMLData     AS CharACTER   NO-UNDO FORMAT 'x(12)'.

INPUT Stream sGZIP Through 'gzip.exe --uncompress --to-stdout temp\unCompressed.gz' UNBUFFERED NO-ECHO NO-CONVERT.

REPEAT:
    PRocess events.
    Import Stream sGZIP UNFORMATTED XMLData.
    message  XMLData.
END.

INPUT Stream sGZIP CLOSE.

However I still not sure why when using the zlib library does not work correctly.

gzip.exe is avaialble from here www.gzip.org/gzip124xN.zip
 
He is losing part of the string, in this part of the code.

PHP:
    /** THE MAGIC! I don't know why but we have to drop the first four bytes starting at the 5th byte.**/
    /** Compress GZIP files start with 0x1F 0x8B 0x08**/
    COPY-LOB FROM UNECODEDSOURCE STARTING AT 5 TO FILE TempBlobFile.
 
The field in the database is information returns...


‹ í½`I–%&/mÊ{JõJ×àt¡€`$ؐ@ìÁˆÍæ’ìiG#)«*ÊeVe]f@Ì흼÷Þ{ï½÷Þ{ï½÷º;N'÷ßÿ?\fdlöÎJÚÉž!€ªÈ?~|?"OÛüe]MÓw‹rÙ|öѼmWîÞ½ºº¯ªºÍÊó¢™få¸Xž'õ]jýQz™×MV}öÑîxçÞGGOÞäïñöÑcúã¤ÍÓ³ÙgÑ«÷îïîìîìºïþÞÃ{;;;»÷vî? ôëÎÞƒý{ŸîÒÿîßpoo¯×u1ˏO¿zvtïþã»øùxzòæȾ@ŸÑŸOž}ùòè>Á|—}¼ÌÚ/WG/_¾~s|rüeúô4}}úê'ÏNø×7¯Ž_¼~ùå«7§éqŠ&ONŸŸžœ}qúâÍ—éÙ‹§_½~óêñ]ñø¼ª_fGZ{¼¨fG÷<¾‹Ÿ›¼.ò£ÝÇwå—ÇK‡E €Úl~º(Žöh´Ûô¿ý7»í?|tÿñ]ùêq»:[¬ A~¡¿éãF>àßOŸþ$úÇúöx1‘/ñýM$>ÚÁßøåñŠ¦`éóëc¢)8àè‹lÙÖÙrü"o¢ï˜Ú˜¯O¿X/ÑøÞýýÝýÂÞ|ðøþjž=%¦/_}Å¿<¾k¾|üÕ3üxýòñ]ù
TÊÊ£]¦ýF˜¾ÎëKA•ã>Ï–>ñ÷‰_ûäV_=Ãé“?ÀûÏŠ‡@|À ñË“ãW_¾: üÍWÏðC€ðuÞuëoÛj‘íÜ“ŸŒ?~Ê||W˜´Z¬h”ïN²:›ÏŽ×W§ŸSOæýŽÆ~tòå‹Ÿ<}qröå‹ãç¦>ü´ûü+~Éx^®ßUôù—uqq´rʯĎæ›IsôÅé«“ã§ãôäËç§oŽŸ§Û©öŸ¾øòÕÇÏï>{uJD<ùò‹'ãgÇOξLOÎŽŸ§wïîþä—ÏÓ“ígôÕ‹gàøÕ’‰/Ò㧿÷—wс'BÊèòEÑ’¸½xù£P Iððáã³Ó£ûŸîíÐl~úpw—>¦¿{Q-ò£ãO¿|uöâÛÇNþŽé“ãôù›§.7züî1©×–úüø5}ÍŸ?Η³¼>e,Þ=¿¨Ž2ýΗÇ?ñÕÙ ‰ò‹7g/¾¥»Ô7·x¼¬«#þ¿<~÷$+jú…ˆó“_¦¯¾|úåOž¿:û’Zë7ÌE!O
ÿs#‘äôåÑîC¢Ä§Ÿ‚ô1–rA|™A¢wîƒ%ù÷ÇïøÇ“WǯÏÀòáyµ$]rp í]¡rèƒÇw½Qß•)¨ó…™‡ƒ½‡÷AsÌçy¸ÿà€æá¡?_½>{qœ?']wüüôóW¤ïÒß'_©SÒˆÏO¾üòyg>"ïÛ91Xïí=Ü{ø`×`ÍH¿Ê&âÕWÇ4W¯OÓç§goNGiºLÑ~w†¾ó4}òå‹ÏϾüÉãgßÌôÜßy¸ûÓs×Ù¸Ï öóì2?‚ÛyNÅýû;Ô!?û;»÷÷>}pŸm¿CzCa¼'¬ÝÝÝŸîï?|Vû@X{»{ô÷ƒƒýOï0¬{»ööv<|ƒu—9v–7Fììß'²Üû€ð‚åÛ½O «ƒO÷i˜>ß~ûeúŒ¸ð+.µæ¯S™¢P‡Cîîï>|pà‰ÏÞSÆ@tÇóã/NIW’ô§/ˆ©¿ôÙñÁý.??ùíãŸ<{þüÔøgÇ}¶ô²e`r„w>¥Á3fÆŠ2˜»BÕË—µü|#¿Ð¼ŒÑ…ùûñå«|ê>ŏO*xB6±?yüüËW–’—Ü@ߐÆwåGÿÍ—§¯¿ì¼¸ÿðÓñÁÆWŸž~qúžÝ½¤Iûœ5¶ÿÖ½ñÞ
=ñÐN¿xÏÞNŽß¼çOO_¿<>ùvÁ›^;{ó¾tÿüÕÙë÷|…pc‹úž¯‰_ñž/9è}Þúò«7¯¾¼Í°î†/ð×Ùɯ Ðë7;;ü㈥‹~>¾|r⸞~¼â¶»{ü‰üñø’|ªä³»
í®þÉý ¶y“¿¨ê…üžÕä^~‘×S²0ûû{†ü7œqÂqF{ÆüI>Ûº=ÉÚ£ÏO_±ÿ§àO ÜY3öœå7òœ¿` ¯¿$u÷Õ›/áAã“Ç¿HºßçÑsý€ÕîOÈý¤É/à54äz_íC˯ßáßãHŸõJ<2r+þzy¼ªÊ£²\¤©Ó§'÷ïßÛƒ
•Ï;w#¿+ýU3ÒŒ¯ˆNŽÄJÐsp÷€ô½|úxF¹tñYtùäqYµìlóO—AÝõÉÏ´Ä#¯‹
ÖÖu,J½º7®ê‹»°WwwÞ¥³¦¸øñä|v¶<'¸'Ù²ZÈ?ÈÚ¢Z~‘·ój–—U]´óEä›W€º{÷ÕéÉ6Ýžîî/·ñÉνÝûÝõк
´.‚o7ól€^åçy/§yúÕ«³Ï>úñ÷
ª¿¡°¯¡øuÑx¿¿Bùò2/«U>Ûn̸€Û-¡ÝH¬»>ŠO‹’ì¯C6C2ð“Y¹¦àøÞâ«ß»}ðåŲzR^õô‹å—ß~y~þô“êø³Çwý–Ä•†Ôô»Ï v.¥áïý{ß]þäâà;Yöæ§Ïg?µj~ê«ç«}âLJóüäÃïî.~Ñì²¼[þ>oæ_Ô÷ž\Zxö݃ÓËgÅ·ââ;o«òɽUýüêÕ·_\Î&¯ÏÊùÞ³Oïÿ`õâÁ“«³IóôùÅWŸO_ÿÄïõôùONö/šÙƒ§Õr‹¾ú´¼û|qöÝ\<Û»ø}öËï¾ÎÑÁýW{?yV~ŸOž>yþ“¿×Oìß{ý¼¸ûàÞËùô÷zõû|&ñü{å×2ªß›â§ä¿äu[œ“L}qvöùó§''O^½¾8¾:{r|qvöÝÙòåË{Í郜^=ý‰ßç;¿WõSgóËé‹ãŸ8}öä'Ž¯Þ<=}þÅñÛϏw¿:}2ÿâä'ʳw§?8~õäâÅO>9®Þœ¼-Ÿ~u²{2]<ûAöÝ«w¿×Óã…|÷Å›oï¾xöÕÛgo~âõ“§?õ{g'ûîO~Ÿ½go'÷¾3?;}µú©½rç÷ùîÕÅì§O¯¾=Ÿ¾øâÍñ…z{_¼9Ûyñƒ³|—?;
?ûé“'Ÿ¾'NÏž¿–ïš7'×ógo^?9!¼¾ü‰ƒÕ¯.®ž]ü>Oò'~âùéÕÁÕOéÿ§üÿ/ßï|ñôâ†÷âêÔ¾ßT¯¾Ú¹ø‰ò;OÞ¼}ñò÷zsúÕOÎÏ“w_<ÿ½NòÅÙéw^ÿÄW÷Ÿ¾¹~û!p4j†{üî‹Á;}³ûï¼y;röìà¿ùêôáëŸ<}†ÏŸœ¾ûêÕééÕÅOtçø ÍñÓ‹ßgçø‹³Ï¿s\}þäøìébòä÷š|÷ÉO~þüÙÙO¼¸~¾³üä'Þ]½ù©¼zºÿd²sÐNŽðü'~ï{Ÿ|²ÿÉþåå'¯¿úEõÛ—»Ÿß{þÅûùÉ»wŸü¢ÓoE±x9/¯^žþ>?øéŸúîƒo?YL?Ý{±þ½&ŸúS'?ùöÙï/)úü‰Ï›7Ÿä‹/¯¿;{þ{ÿ¢Ù“_tðé«åÅÁ'ÏW{?yÿÕO|õà󋃟ºúEW¯~¯Ý‹ŸúüâÛ띝ãúÝw^_|ñäøø󟾸x~xûäàÇ_‚žßþ‰ƒ'Çç§Äƒ'Oòã«oÿÑñÕNùäÉïsõìø÷9û½®~÷Wß&øüä¤ùœR
Ïž\}qúÅ“Ðtvvõ¿ÏO²ãgÏg¿èÙåýæeëã/ww>}ø“¿×õOýTõS—?9%z}Ê}a/&gWÙ'O>;{òê횣W/¿z[RXüìéOüäw¾ý?ùÅú'v¾xþö;¯«§;Ÿ?ùî“/Žâ‹ÓêéO¼ùâ§Ïˆ×~âÝ—o~Ÿ½/ž~uõâow¿xúûìËçÇ‘ÿŸî}ñÓ_í½xó?xñìÅ›¯ž½ø‰êɾyR=ùêÍéîw^þÄÛŸ¤ù?¸xóUùS?ñÕwž|÷+b¯ÓÅÅç?ñû<û}N¯ž_}yqúä‹/_<ý}v¾øÁW×_¾ùðß}ñƒ“‹gW¦M~ñtþÅ=žM…NǯhûWoŽŸÏ¹ýÅéç_œõ|_œ~÷ÅçóÙ·?}~ýðÞìÞtýûìýäõìór‘}÷Åü§>ø6ûîl5ûüYó|ñâròú~1-^ÿÔïýärJútÅjrýðíôó/®.Ώ¹ßo_½&pòäþ›'ß©Nó‹W¿ÏO=;ýjgú´º|N=Ì®ïÿt oö¬®¡¾¶Ïß¹~~ï;åôó‡Ä„¯.§‹òòùÞ»Ÿ¦~@ïͧ{Ï~ú§¾ýû¼#|®'OŸ<N?¿x¹ÿû<´}pÛN÷¾ø:°ßTÏ>¿x³ÿS/þwåOO?ÿÎõïó{¿XMNî/'÷~Ÿõï³<»œ|N‚¹û¢„Žû}^÷èÕü>÷ÎèïŸÄ{óßgïÕÞ¯ïÿôtqE:`êñ<ÉÿÙç¿ñò·¿xzå>ÿÁñ“ùO?©fß~uõeqp9Ù{ñƒéÉmhªø|÷Å[èôWWŽ¾8þ½>ÿrï½ùয়ï¾*³ï>ûAözútV|q¼óùÉë_ôùë³É½§¬Ë¾:>Þ'»ö'‹ûû«Ÿþö럚^~ûùÅÕçÏ›»yýpÙþôOqõ‹Žï׫{õÛËãßgµútrñí—Ÿ¾Z?¼ûúììîÕ>¯/ëé¼~ùð¼8xqõÝÕ>½ûS?±˜ßÍÞ®¯Ë‹§Ë½³o¿(÷ï^6¯Þ¼{Ö~û÷zòŪø}&¿¨ùE‹æ«½ŸÚ}xýëϯϊO_Š—ŽÏ|yöÕïõéç÷¿Ú͡?XNw›å»O^~û«çOϦo/~¯·÷_¶çg/맿×Å»Ÿxxò_Ý[½hï“ï<yv±È¾øêüóïü¢×¿Ïìgoó׳ß'¿·÷äò“Ÿ˜ì\äów\ä?}ðÓ÷Ï~ïútv¿ü*ûd½óÉï}ÿôYñSåÁâÓ§;o/³úáÝzy¼~úÅ^õÕÝßëä¤^þdýEÓ¼ùÎÞêòýôâ;÷^}Ùî>&»Eýê¢ýœrè_ÿÞ×÷ëÉïõúÞéÙO|•Oö~ŸòäñÝ®G!Ÿˆ·q×z Î7A¼¥-œºAËsZ¨hû ÔîxUSJ¡üþ/ŸÿþôêïON北6äÊ_òû¸ÌÈ_16³9åI&mÕYÁ¹¿óhçVpôÛÇKFn—sd;;÷(E¶÷)Å2òñãYqñ“XÙèˆj£ÇÓ×-Å‚»¦äWJ#UmqI¨uKžð²Y•V麩RúåäÍvŽÔ’´à˜Hú¼«„¤ßtðèÿD§6
 

Cecil

19+ years progress programming and still learning.
The field in the database is information returns...


‹ í½`I–%&/mÊ{JõJ×àt¡€`$ؐ@ìÁˆÍæ’ìiG#)«*ÊeVe]f@Ì흼÷Þ{ï½÷Þ{ï½÷º;N'÷ßÿ?\fdlöÎJÚÉž!€ªÈ?~|?"OÛüe]MÓw‹rÙ|öѼmWîÞ½ºº¯ªºÍÊó¢™få¸Xž'õ]jýQz™×MV}öÑîxçÞGGOÞäïñöÑcúã¤ÍÓ³ÙgÑ«÷îïîìîìºïþÞÃ{;;;»÷vî? ôëÎÞƒý{ŸîÒÿîßpoo¯×u1ˏO¿zvtïþã»øùxzòæȾ@ŸÑŸOž}ùòè>Á|—}¼ÌÚ/WG/_¾~s|rüeúô4}}úê'ÏNø×7¯Ž_¼~ùå«7§éqŠ&ONŸŸžœ}qúâÍ—éÙ‹§_½~óêñ]ñø¼ª_fGZ{¼¨fG÷<¾‹Ÿ›¼.ò£ÝÇwå—ÇK‡E €Úl~º(Žöh´Ûô¿ý7»í?|tÿñ]ùêq»:[¬ A~¡¿éãF>àßOŸþ$úÇúöx1‘/ñýM$>ÚÁßøåñŠ¦`éóëc¢)8àè‹lÙÖÙrü"o¢ï˜Ú˜¯O¿X/ÑøÞýýÝýÂÞ|ðøþjž=%¦/_}Å¿<¾k¾|üÕ3üxýòñ]ù
TÊÊ£]¦ýF˜¾ÎëKA•ã>Ï–>ñ÷‰_ûäV_=Ãé“?ÀûÏŠ‡@|À ñË“ãW_¾: üÍWÏðC€ðuÞuëoÛj‘íÜ“ŸŒ?~Ê||W˜´Z¬h”ïN²:›ÏŽ×W§ŸSOæýŽÆ~tòå‹Ÿ<}qröå‹ãç¦>ü´ûü+~Éx^®ßUôù—uqq´rʯĎæ›IsôÅé«“ã§ãôäËç§oŽŸ§Û©öŸ¾øòÕÇÏï>{uJD<ùò‹'ãgÇOξLOÎŽŸ§wïîþä—ÏÓ“ígôÕ‹gàøÕ’‰/Ò㧿÷—wс'BÊèòEÑ’¸½xù£P Iððáã³Ó£ûŸîíÐl~úpw—>¦¿{Q-ò£ãO¿|uöâÛÇNþŽé“ãôù›§.7züî1©×–úüø5}ÍŸ?Η³¼>e,Þ=¿¨Ž2ýΗÇ?ñÕÙ ‰ò‹7g/¾¥»Ô7·x¼¬«#þ¿<~÷$+jú…ˆó“_¦¯¾|úåOž¿:û’Zë7ÌE!O
ÿs#‘äôåÑîC¢Ä§Ÿ‚ô1–rA|™A¢wîƒ%ù÷ÇïøÇ“WǯÏÀòáyµ$]rp í]¡rèƒÇw½Qß•)¨ó…™‡ƒ½‡÷AsÌçy¸ÿà€æá¡?_½>{qœ?']wüüôóW¤ïÒß'_©SÒˆÏO¾üòyg>"ïÛ91Xïí=Ü{ø`×`ÍH¿Ê&âÕWÇ4W¯OÓç§goNGiºLÑ~w†¾ó4}òå‹ÏϾüÉãgßÌôÜßy¸ûÓs×Ù¸Ï öóì2?‚ÛyNÅýû;Ô!?û;»÷÷>}pŸm¿CzCa¼'¬ÝÝÝŸîï?|Vû@X{»{ô÷ƒƒýOï0¬{»ööv<|ƒu—9v–7Fììß'²Üû€ð‚åÛ½O «ƒO÷i˜>ß~ûeúŒ¸ð+.µæ¯S™¢P‡Cîîï>|pà‰ÏÞSÆ@tÇóã/NIW’ô§/ˆ©¿ôÙñÁý.??ùíãŸ<{þüÔøgÇ}¶ô²e`r„w>¥Á3fÆŠ2˜»BÕË—µü|#¿Ð¼ŒÑ…ùûñå«|ê>ŏO*xB6±?yüüËW–’—Ü@ߐÆwåGÿÍ—§¯¿ì¼¸ÿðÓñÁÆWŸž~qúžÝ½¤Iûœ5¶ÿÖ½ñÞ
=ñÐN¿xÏÞNŽß¼çOO_¿<>ùvÁ›^;{ó¾tÿüÕÙë÷|…pc‹úž¯‰_ñž/9è}Þúò«7¯¾¼Í°î†/ð×Ùɯ Ðë7;;ü㈥‹~>¾|r⸞~¼â¶»{ü‰üñø’|ªä³»
í®þÉý ¶y“¿¨ê…üžÕä^~‘×S²0ûû{†ü7œqÂqF{ÆüI>Ûº=ÉÚ£ÏO_±ÿ§àO ÜY3öœå7òœ¿` ¯¿$u÷Õ›/áAã“Ç¿HºßçÑsý€ÕîOÈý¤É/à54äz_íC˯ßáßãHŸõJ<2r+þzy¼ªÊ£²\¤©Ó§'÷ïßÛƒ
•Ï;w#¿+ýU3ÒŒ¯ˆNŽÄJÐsp÷€ô½|úxF¹tñYtùäqYµìlóO—AÝõÉÏ´Ä#¯‹
ÖÖu,J½º7®ê‹»°WwwÞ¥³¦¸øñä|v¶<'¸'Ù²ZÈ?ÈÚ¢Z~‘·ój–—U]´óEä›W€º{÷ÕéÉ6Ýžîî/·ñÉνÝûÝõк
´.‚o7ól€^åçy/§yúÕ«³Ï>úñ÷
ª¿¡°¯¡øuÑx¿¿Bùò2/«U>Ûn̸€Û-¡ÝH¬»>ŠO‹’ì¯C6C2ð“Y¹¦àøÞâ«ß»}ðåŲzR^õô‹å—ß~y~þô“êø³Çwý–Ä•†Ôô»Ï v.¥áïý{ß]þäâà;Yöæ§Ïg?µj~ê«ç«}âLJóüäÃïî.~Ñì²¼[þ>oæ_Ô÷ž\Zxö݃ÓËgÅ·ââ;o«òɽUýüêÕ·_\Î&¯ÏÊùÞ³Oïÿ`õâÁ“«³IóôùÅWŸO_ÿÄïõôùONö/šÙƒ§Õr‹¾ú´¼û|qöÝ\<Û»ø}öËï¾ÎÑÁýW{?yV~ŸOž>yþ“¿×Oìß{ý¼¸ûàÞËùô÷zõû|&ñü{å×2ªß›â§ä¿äu[œ“L}qvöùó§''O^½¾8¾:{r|qvöÝÙòåË{Í郜^=ý‰ßç;¿WõSgóËé‹ãŸ8}öä'Ž¯Þ<=}þÅñÛϏw¿:}2ÿâä'ʳw§?8~õäâÅO>9®Þœ¼-Ÿ~u²{2]<ûAöÝ«w¿×Óã…|÷Å›oï¾xöÕÛgo~âõ“§?õ{g'ûîO~Ÿ½go'÷¾3?;}µú©½rç÷ùîÕÅì§O¯¾=Ÿ¾øâÍñ…z{_¼9Ûyñƒ³|—?;
?ûé“'Ÿ¾'NÏž¿–ïš7'×ógo^?9!¼¾ü‰ƒÕ¯.®ž]ü>Oò'~âùéÕÁÕOéÿ§üÿ/ßï|ñôâ†÷âêÔ¾ßT¯¾Ú¹ø‰ò;OÞ¼}ñò÷zsúÕOÎÏ“w_<ÿ½NòÅÙéw^ÿÄW÷Ÿ¾¹~û!p4j†{üî‹Á;}³ûï¼y;röìà¿ùêôáëŸ<}†ÏŸœ¾ûêÕééÕÅOtçø ÍñÓ‹ßgçø‹³Ï¿s\}þäøìébòä÷š|÷ÉO~þüÙÙO¼¸~¾³üä'Þ]½ù©¼zºÿd²sÐNŽðü'~ï{Ÿ|²ÿÉþåå'¯¿úEõÛ—»Ÿß{þÅûùÉ»wŸü¢ÓoE±x9/¯^žþ>?øéŸúîƒo?YL?Ý{±þ½&ŸúS'?ùöÙï/)úü‰Ï›7Ÿä‹/¯¿;{þ{ÿ¢Ù“_tðé«åÅÁ'ÏW{?yÿÕO|õà󋃟ºúEW¯~¯Ý‹ŸúüâÛ띝ãúÝw^_|ñäøø󟾸x~xûäàÇ_‚žßþ‰ƒ'Çç§Äƒ'Oòã«oÿÑñÕNùäÉïsõìø÷9û½®~÷Wß&øüä¤ùœR
Ïž\}qúÅ“Ðtvvõ¿ÏO²ãgÏg¿èÙåýæeëã/ww>}ø“¿×õOýTõS—?9%z}Ê}a/&gWÙ'O>;{òê횣W/¿z[RXüìéOüäw¾ý?ùÅú'v¾xþö;¯«§;Ÿ?ùî“/Žâ‹ÓêéO¼ùâ§Ïˆ×~âÝ—o~Ÿ½/ž~uõâow¿xúûìËçÇ‘ÿŸî}ñÓ_í½xó?xñìÅ›¯ž½ø‰êɾyR=ùêÍéîw^þÄÛŸ¤ù?¸xóUùS?ñÕwž|÷+b¯ÓÅÅç?ñû<û}N¯ž_}yqúä‹/_<ý}v¾øÁW×_¾ùðß}ñƒ“‹gW¦M~ñtþÅ=žM…NǯhûWoŽŸÏ¹ýÅéç_œõ|_œ~÷ÅçóÙ·?}~ýðÞìÞtýûìýäõìór‘}÷Åü§>ø6ûîl5ûüYó|ñâròú~1-^ÿÔïýärJútÅjrýðíôó/®.Ώ¹ßo_½&pòäþ›'ß©Nó‹W¿ÏO=;ýjgú´º|N=Ì®ïÿt oö¬®¡¾¶Ïß¹~~ï;åôó‡Ä„¯.§‹òòùÞ»Ÿ¦~@ïͧ{Ï~ú§¾ýû¼#|®'OŸ<N?¿x¹ÿû<´}pÛN÷¾ø:°ßTÏ>¿x³ÿS/þwåOO?ÿÎõïó{¿XMNî/'÷~Ÿõï³<»œ|N‚¹û¢„Žû}^÷èÕü>÷ÎèïŸÄ{óßgïÕÞ¯ïÿôtqE:`êñ<ÉÿÙç¿ñò·¿xzå>ÿÁñ“ùO?©fß~uõeqp9Ù{ñƒéÉmhªø|÷Å[èôWWŽ¾8þ½>ÿrï½ùয়ï¾*³ï>ûAözútV|q¼óùÉë_ôùë³É½§¬Ë¾:>Þ'»ö'‹ûû«Ÿþö럚^~ûùÅÕçÏ›»yýpÙþôOqõ‹Žï׫{õÛËãßgµútrñí—Ÿ¾Z?¼ûúììîÕ>¯/ëé¼~ùð¼8xqõÝÕ>½ûS?±˜ßÍÞ®¯Ë‹§Ë½³o¿(÷ï^6¯Þ¼{Ö~û÷zòŪø}&¿¨ùE‹æ«½ŸÚ}xýëϯϊO_Š—ŽÏ|yöÕïõéç÷¿Ú͡?XNw›å»O^~û«çOϦo/~¯·÷_¶çg/맿×Å»Ÿxxò_Ý[½hï“ï<yv±È¾øêüóïü¢×¿Ïìgoó׳ß'¿·÷äò“Ÿ˜ì\äów\ä?}ðÓ÷Ï~ïútv¿ü*ûd½óÉï}ÿôYñSåÁâÓ§;o/³úáÝzy¼~úÅ^õÕÝßëä¤^þdýEÓ¼ùÎÞêòýôâ;÷^}Ùî>&»Eýê¢ýœrè_ÿÞ×÷ëÉïõúÞéÙO|•Oö~ŸòäñÝ®G!Ÿˆ·q×z Î7A¼¥-œºAËsZ¨hû ÔîxUSJ¡üþ/ŸÿþôêïON北6äÊ_òû¸ÌÈ_16³9åI&mÕYÁ¹¿óhçVpôÛÇKFn—sd;;÷(E¶÷)Å2òñãYqñ“XÙèˆj£ÇÓ×-Å‚»¦äWJ#UmqI¨uKžð²Y•V麩RúåäÍvŽÔ’´à˜Hú¼«„¤ßtðèÿD§6

Well this is just binary data represented in an ASCII format. Does not really help. So at which point does the binary GZIP compress data gets encoded into Base64? Can this information be written directly to disk with the file extension .xml.gz? Then can you open that file using WinZIP?
 

Cecil

19+ years progress programming and still learning.
Revised version of the the original procedure is now a function. I want to know if the compress data can be opened via 3rd pary compression utility like winzip?

Code:
USING net.progress.encode.gzip.Zlib.

FUNCTION UnpackToXML RETURNS LONGCHAR (INPUT ENCODEDSOURCE AS LONGCHAR ):

    DEFINE VARIABLE UNECODEDSOURCE              AS Memptr       NO-UNDO.
    DEFINE VARIABLE TempGZIPFile                AS CHARACTER    NO-UNDO.
    DEFINE VARIABLE chXMLFile                   AS CHARACTER    NO-UNDO.
    Define Variable XMLData                     AS LONGCHAR     NO-UNDO.
   
    Set-SIZE(UNECODEDSOURCE) = 0.

    ASSIGN
        chXMLFile = SUBSTITUTE('&1.unpackify_&2.xml',
                               SESSION:TEMP-DIR,
                               THIS-PROCEDURE:UNIQUE-ID)
        TempGZIPFile = chXMLFile + '.gz'.

    /** First Stage Decode the data to memptr**/
    UNECODEDSOURCE = BASE64-DECODE(ENCODEDSOURCE).
       
    /** THE MAGIC! I don't know why but we have to drop the first four bytes starting at the 5th byte.**/
    /** Compress GZIP files start with 0x1F 0x8B 0x08**/
    COPY-LOB FROM UNECODEDSOURCE STARTING AT 5 TO FILE TempGZIPFile.
   
    /** Memory Clean up.**/
    Set-SIZE(UNECODEDSOURCE) = 0.

    FILE-INFO:FILE-NAME = TempGZIPFile.

    MESSAGE SUBSTITUTE('See if you can open this GZip file &1 using WinZip / WinRAR / 7-ZIP',
                       QUOTER(FILE-INFO:Full-pathname))
        View-as Alert-box Info.

    Zlib:getInstance():uncompressFile(TempGZIPFile, chXMLFile , true).
       
    IF SEARCH(chXMLFile) NE ? THEN
    DO:
        COPY-LOB FROM FILE chXMLFile TO OBJECT XMLData.
        OS-DELETE VALUE(chXMLFile ). 
    END.
       
    /** Delete the temporary GZIP file**/
    /* OS-DELETE VALUE(TempGZIPFile).*/
   
    RETURN XMLData.
END FUNCTION.

/** Main Block**/

DEFINE VARIABLE OracleDBblbField AS LONGCHAR CASE-SENSITIVE NO-UNDO.

/** Orignall Base64 encoded String.**/

ASSIGN
    OracleDBblbField = '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'.
    OracleDBblbField = UnpackToXML(INPUT OracleDBblbField). /** Decode the Base64 String then Uncompress binary data.**/

MESSAGE 'Length:' LENGTH(OracleDBblbField) SKIP
        'XML:' STRING(OracleDBblbField)
    View-AS ALERT-BOX INFO.
 

Cecil

19+ years progress programming and still learning.
He is losing part of the string, in this part of the code.

PHP:
    /** THE MAGIC! I don't know why but we have to drop the first four bytes starting at the 5th byte.**/
    /** Compress GZIP files start with 0x1F 0x8B 0x08**/
    COPY-LOB FROM UNECODEDSOURCE STARTING AT 5 TO FILE TempBlobFile.


Try this:

Code:
COPY-LOB FROM UNECODEDSOURCE  TO FILE TempGZIPFile.
 

Cecil

19+ years progress programming and still learning.
The format of field is BLOB.
How is OpenEdge ABL accessing this BLOB field when the database is Oracle? Are you using DataServers? Since the compressed data is stored in a raw GZip format we might be able to skip the step of base64 decoding.
 

Cecil

19+ years progress programming and still learning.
Compiling with:
10.2B08:
Code:
Could not locate element 'CopyTo' in class
'System.IO.Compression.GZipStream'. (12927)
**  Could not understand line 50. (196)
11.3.2:
Syntax is correct.

11.4:
(editor crashes)
Code:
An unhandled exception of type 'System.IO.FileNotFoundException'
occurred in Progress.clrbridge.dll

Additional information: Could not load file or assembly 'Progress.Messages,
Version=11.4.0.1294, Culture=neutral,PublicKeyToken=null' or one of its
dependencies. The system cannot find the file specified.

I'm on Win7 SP1 x64, with .NET 3.5, 4.0, and 4.5.1. It appears the 11.4 client is referencing the 4.0 installation. From event viewer:

Code:
Application: prowin32.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
Stack:
   at Progress.ClrBridge.ProMarshal.ToGCHandle(System.Object, Boolean)
   at <Module>.Progress.ClrBridge.BrgClrFromPro.convertExceptionToHandle(Progress.ClrBridge.BrgClrFromPro*, System.Exception)
   at <Module>.Progress.ClrBridge.BrgClrFromPro.createFormProxy(Progress.ClrBridge.BrgClrFromPro*, ditem*)
Code:
Faulting application name: prowin32.exe, version: 11.4.0.1294, time stamp: 0x53d2e691
Faulting module name: KERNELBASE.dll, version: 6.1.7601.18409, time stamp: 0x53159a86
Exception code: 0xe0434352
Fault offset: 0x0000c42d
Faulting process id: 0x31a8
Faulting application start time: 0x01d0045a2ce40516
Faulting application path: C:\OE\11.4\bin\prowin32.exe
Faulting module path: C:\Windows\syswow64\KERNELBASE.dll

Thanks for your Investigative work. I thought using .NET was going to be the answer. Is it possible if you could try the original code I published which used the zLib library to see if that works in 10.2B. Thanks.
 
In fact, I'll use this information to return in a user interface. Must seek the Oracle database xml which was recorded in a BLOB field, and this need to convert it to XML and then display to the user.
 
If I can do a FIND on the table and fetch the field, for example:

FIND FIRST tb_documento_xml NO-LOCK NO-ERROR.

The field name is: tb_documento_xml.arq_xml

he is of type BLOB.
 

Rob Fitzpatrick

ProgressTalk.com Sponsor
Is it possible if you could try the original code I published which used the zLib library to see if that works in 10.2B.
It doesn't compile:
Code:
Could not find class or interface net.progress.encode.gzip.Zlib. (12886)
**  Could not understand line 1. (196)
** Unknown Field or Variable name - Zlib. (201)
**  Could not understand line 26. (196)
 
Top