Hier ist das Beispiel:
der Text: "Test mit Umlauten äöü" ergibt folgenden BASE64 Code: VGVzdCBtaXQgVW1sYXV0ZW4gw6TDtsO8

CL zum Erstellen des BASE64 Utilities
PHP-Code:
/*********************************************************************/
/*                                                                   */
/* CREATE BASUTL SERVICE-PROGRAM - BASE64                            */
/*                                                                   */
/******************                                                  */
/* R.ROSS 03.2017 *                                                  */
/*********************************************************************/

   
PGM

   DCL        
VAR(&LIBTYPE(*CHARLEN(10VALUE(MYLIB)

   
MONMSG     MSGID(CPF0000)

/*********************************************************************/
/* VERARBEITUNG                                                      */
/*********************************************************************/

   
DLTBNDDIR  BNDDIR(&LIB/BASUTL)
   
CRTBNDDIR  BNDDIR(&LIB/BASUTLTEXT('BASE64 Utilities')

   
ADDBNDDIRE BNDDIR(&LIB/BASUTLOBJ((QSYSDIR/QAXIS10HT *SRVPGM))

/*********************************************************************/
/* ENDE                                                              */
/*********************************************************************/
   
ENDE:      ENDPGM
/*********************************************************************/ 
/include BASE64
PHP-Code:
      //------------------------------------------------------------------//    
      // BASE64 - Encode String - SRVPGM(QSYSDIR/QAXIS10HT)               //    
      //------------------------------------------------------------------//    
                                                                                
         
dcl-pr encbase64bin int(10extproc('apr_base64_encode_binary');       
                 
##enc_p     like(d#enc_p)  value;    // Encoded                
                 ##src_p     like(d#src_p)  value;    // Source                 
                 ##srclen    like(d#srclen) value;    // SourceLength           
         
end-pr;                                                                
                                                                                
      
//------------------------------------------------------------------//    
      // BASE64 - Decode String - SRVPGM(QSYSDIR/QAXIS10HT)               //    
      //------------------------------------------------------------------//    
                                                                                
         
dcl-pr decbase64bin int(10extproc('apr_base64_decode_binary');       
                 
##dec_p     like(d#dec_p)  value;    // Decoded                
                 ##enc_p     like(d#enc_p)  value;    // Encoded                
         
end-pr;                                                                
                                                                                
      
//------------------------------------------------------------------//    
      // BASE64 - Variables                                               //    
      //------------------------------------------------------------------//    
                                                                                
         
dcl-s   d#enc_p     pointer;                 // EncodedPointer         
         
dcl-s   d#dec_p     pointer;                 // DecodedPointer         
         
dcl-s   d#src_p     pointer;                 // SourcePointer          
         
dcl-s   d#srclen    int(10);                 // SourceLength           
                                                                                
      //------------------------------------------------------------------// 
/include iconv
PHP-Code:
      //------------------------------------------------------------------//    
      // iconv_open                                                       //    
      //------------------------------------------------------------------//    
                                                                                
         
dcl-pr iconv_open   likeds(dsiconvextproc('QtqIconvOpen');           
                 
##trgcode   likeds(dstqopen) const;                            
                 ##srccode   likeds(dstqopen) const;                            
         
end-pr;                                                                
                                                                                
      
//------------------------------------------------------------------//    
      // iconv                                                            //    
      //------------------------------------------------------------------//    
                                                                                
         
dcl-pr iconv        extproc(*dclcase);                                 
                 
ic_hconv    like(dsiconvvalue;                               
                 
p_inbuf     pointer const;                                     
                 
in_length   uns(10) const;                                     
                 
p_outbuf    pointer const;                                     
                 
out_length  uns(10) const;                                     
         
end-pr;                                                                
                                                                                
      
//------------------------------------------------------------------//    
      // iconv_close                                                      //    
      //------------------------------------------------------------------//    
                                                                                
         
dcl-pr iconv_close  extproc(*dclcase);                                 
                 
ic_hconv    like(dsiconvvalue;                               
         
end-pr;                                                                
                                                                                
      
//------------------------------------------------------------------//    
      // Arrays iconv                                                     //    
      //------------------------------------------------------------------//    
                                                                                
         
dcl-ds  dsiconv     template qualified inz;                            
                  
ic_rtnval  int(10);                                           
                  
ic_cd      int(10dim(12);                                   
         
end-ds;                                                                
                                                                                
         
dcl-ds  dstqopen    template qualified;                                
                  
tq_ccsid   int(10inz(0);                                    
                  
tq_convalt int(10inz(0);                                    
                  
tq_subsalt int(10inz(0);                                    
                  
tq_shftalt int(10inz(1);                                    
                  
tq_inplen  int(10inz(0);                                    
                  
tq_erropt  int(10inz(0);                                    
                  
tq_reserv  char(8inz(*allx'00');                            
         
end-ds;                                                                
                                                                                
         
dcl-ds  dsconv      likeds(dsiconv)  inz(*likeds);                     
         
dcl-ds  dssrcccsid  likeds(dstqopeninz(*likeds);                     
         
dcl-ds  dstrgccsid  likeds(dstqopeninz(*likeds);                     
                                                                                
      
//------------------------------------------------------------------// 
RPGLE für das Encoding

PHP-Code:
         ctl-opt main(maindftactgrp(*nobnddir('BASUTL');
      
//------------------------------------------------------------------//
      //                                                                  //
      // Encode BASE64                                                    //
      //                                                                  //
      //-----------------                                                 //
      // R.Ross 03.2017 *                                                 //
      //------------------------------------------------------------------//
      // Prototypen                                                       //
      //------------------------------------------------------------------//

      
/include webutl/qcpysrc,iconv                   // iconv
      
/include webutl/qcpysrc,base64                  // BASE64

      //------------------------------------------------------------------//
      // Variablen                                                        //
      //------------------------------------------------------------------//

         
dcl-s   GblString   char(1000000);           // Text 1 MB

      //------------------------------------------------------------------//
      // Main                                                             //
      //------------------------------------------------------------------//
         
dcl-proc Main;

         
dcl-s   LocString   like(GblString);
         
dcl-s   LocBase64   like(GblString);

           
LocString 'Test mit Umlauten äöü';

           
LocBase64 getBase64(LocString);

         
end-proc;
      
//------------------------------------------------------------------//
      // getBASE64 Encoded String                                         //
      //------------------------------------------------------------------//
         
dcl-proc getBase64;
         
dcl-pi *n           like(GblStringrtnparm// Encoded String
                 
PiString    like(GblString);
         
end-pi;

         
dcl-s   LocString   like(GblStringinz;     // Source String
         
dcl-s   LocBase64   like(GblStringinz;     // Encoded String
         
dcl-s   Loclength   int(10);                 // StringLength
         
dcl-s   LocEnclen   int(10);                 // EncodedLength

           
LocLength = %len(%trimr(PiString));        // String-Length
           
LocString cvtData(%addr(PiString):LocLength:1208:1141);
           
LocLength = %len(%trimr(LocString));       // String-Length

           
LocEnclen encbase64bin(%addr(LocBase64): // Encode Base64
                                    
%addr(LocString):LocLength);

           if 
LocEnclen > *zero;                      // Encoded Length
              
return %subst(LocBase64:1:LocEnclen 1);// without last null
            
else;
              return *
blanks;
           endif;

         
end-proc;
      
//------------------------------------------------------------------//
      // Convert Data between CCSID's                                     //
      //------------------------------------------------------------------//
         
dcl-proc cvtData;
         
dcl-pi *n           like(GblStringrtnparm// Result
                 
PiSrc_p     pointer const;           // Source-Pointer
                 
PiSrcLen    uns(10) const;           // Source-Length
                 
PiTrgCcsid  uns(10) const;           // Target-CCSID
                 
PiSrcCcsid  uns(10) const;           // Source-CCSID
         
end-pi;

         
dcl-s   LocTarget   like(GblStringinz;     // Target
         
dcl-s   LocTrg_p    pointer inz(%addr(LocTarget));
         
dcl-s   LocTrglen   uns(10inz(%size(LocTarget));

           
DsSrcCcsid.tq_ccsid PiSrcCcsid;          // Source-CCSID
           
DsTrgCcsid.tq_ccsid PiTrgCcsid;          // Target-CCSID
           
DsConv              = *allx'00';

           
DsConv iconv_open(DsTrgCcsid:DsSrcCcsid);        // Open
           
iconv(DsConv:PiSrc_p:PiSrcLen:LocTrg_p:LocTrglen); // Convert
           
iconv_close(DsConv);                               // Close

           
return %subst(LocTarget:1:%size(LocTarget) - LocTrglen);

         
end-proc;
      
//------------------------------------------------------------------// 
Herzliche Grüße
Rainer