× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Larry,

CCSID of input XML - 1252

Here are the relative sections of code.  If I miss something let me know.

XML open:          XMLDesc = ifsOpen(%TrimR(InPath) :TxtRd);

PDF output file open: 
        PDFDesc = ifsOpen(%TrimR(OutPath) :TxtWrt + ', codepage=1252'); // old 
= 850
                                                                            
        // Close and reopen the file.  This is required to perform translation  
    
        // from our current job CCSID into the ascii codepage.  THIS IS 
REQUIRED!   
        RtnCd = ifsClose(PDFDesc);                                              
    
        PDFDesc = ifsOpen(%TrimR(OutPath) :TxtWrt);                             
    

Base64 decoding (archived code from Beppe Costagliola):
     p DecBase64       b                   Export                               
     d DecBase64       pi                                                       
     d  InStr@                         *   Value                                
     d  InStrLen                     10u 0 Const                                
     d  OutStr@                        *   Value                                
                                                                                
     d Input           s              4a   Based(InStr@)                        
     d Output          s              3a   Based(OutStr@)                       
                                                                                
      // Set of characters worked on as a group.  Equates to 3 decoded 
characters
     d ChrGrp          s             10i 0 Dim(4)                               
                                                                                
      // Equivalent of C placing character value into an integer field          
     d Char            ds                                                       
     d  ChrInt                        3u 0                                      
     d  ChrAlpha                      1a   Overlay(ChrInt)                      
                                                                                
      // Offsets to the input and output strings                                
     d iPos            s             10i 0                                      
     d oPos            s             10i 0                                      
                                                                                
      // Miscellaneous variables                                                
     d Ctr             s             10u 0 Inz(1)                               
     d Iterations      s             10u 0                                      
                                                                                
      /Free                                                                     
                                                                                
         // Reduce length to number of iterations                               
         Iterations = InStrLen / 4;                                             
                                                                                
         // Decode input string                                                 
         DoW Ctr <= Iterations;                                                 
           iPos = 1;                                                            
           oPos = 1;                                                            
                                                                                
           // Convert characters to Base64 integers                             
           ChrGrp(1) = MimeDecode(%subst(Input: iPos: 1));                      
           ChrGrp(2) = MimeDecode(%subst(Input: iPos + 1: 1));                  
           ChrGrp(3) = MimeDecode(%subst(Input: iPos + 2: 1));                  
           ChrGrp(4) = MimeDecode(%subst(Input: iPos + 3: 1));                  
                                                                                
           // Decode integer values to get original character values and place  
           // into output string                                                
           ChrInt = %bitand ((ChrGrp(1) * 4 + %Int(ChrGrp(2) / 16)):255);       
           %subst(Output: oPos: 1) = ChrAlpha;                                  
                                                                                
           ChrInt = %bitand ((ChrGrp(2) * 16 + %Int(ChrGrp(3) / 4)):255);       
           %subst(Output: oPos + 1: 1)  = ChrAlpha;                             
                                                                                
           ChrInt = %bitand ((ChrGrp(3) * 64 + ChrGrp(4)):255);                 
            %subst(Output: oPos + 2: 1)  = ChrAlpha;                            
                                                                                
            // Move to next section of the strings                              
            InStr@ += 4;                                                        
            OutStr@ += 3;                                                       
                                                                                
            // Increment counter                                                
            Ctr += 1;                                                           
          EndDo;                                                                
                                                                                
          // Terminate the output string                                        
          Output = x'00';                                                       
                                                                                
      /End-Free                                                                 
                                                                                
     p DecBase64       e                                                        
                                                                                
      
//-------------------------------------------------------------------------
      // MimeDecode - Convert character to decimal representation               
      
//-------------------------------------------------------------------------
     p MimeDecode      b                                                        
     d MimeDecode      pi            10i 0                                      
     d  CharIn                        1a   Const                                
                                                                                
      // Characters represented in Base64 character set                         
     d tbBase64        s             65A   Inz('ABCDEFGHIJKLMNOPQRSTUVWXYZ-     
     d                                     abcdefghijklmnopqrstuvwxyz-          
     d                                     0123456789+/=')                      
                                                                                
      /free                                                                     
                                                                                
        return %scan(CharIn: tbBase64) - 1;                                     
                                                                                
      /end-free                                                                 
                                                                                
     p MimeDecode      e                                                        


Rick

Privileged and Confidential.  This e-mail, and any attachments there to, is 
intended only for use by the addressee(s) named herein and may contain legally 
privileged or confidential information.  If you have received this e-mail in 
error, please notify me immediately by a return e-mail and delete this e-mail.  
You are hereby notified that any dissemination, distribution or copying of this 
e-mail and/or any attachments thereto, is strictly prohibited.


As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.