Buenas tardes,
Gracias por la respuesta, he provado realizando la conversion a ASCII y
luego pasandolo a base64, me funciono bien al enviar una sola palabra, pero
lo que tengo que enviar es lo siguiente:
IDE|B503-0013283|2020-04-28|21:10:45|03|PEN||2020-04-28
REC|1|11111111|CLIENTE VARIOS|||||PE||
CAB|1001|45.25||||||||||||||[1000|8.15]||||53.40|||0101|[1000|CINCUENTITRES
Y 40/100 SOLES]|8.15|
DET|00001|878636|TEMPERA PROF X 5 ART
STUDIO|1.00|NIU|45.25|53.40|[1000|8.15|10|45.25|18.00]|45.25|||||8.15|
ADI|@@1|AS400
El texo de arriba lo debo enviar en base64 mediante un web service, el
problema es que cuando el proveedor del web service decodifica el texto en
base64 el simbolo de palotes ("|") lo ve como un signo de admiracion ("!"),
este es mi codigo:
H bnddir('BASE64R4')
FPRB64 IF E K DISK
*---------------------------------------------------------------*
/copy /BASE64/QRPGLESRC/base64_h.rpgle
*----------------------------------------------------
*- ESTRUCTURAS DE TRABAJO -
*----------------------------------------------------
D Translate PR ExtPgm('QDCXLATE')
D wbase64xml S 9999999A inz
d wwEncoded s 100000A Inz(*blanks)
d wwEncLen s 10i 0
d datautf8 s 10A INZ(*BLANKS)
d P s *
d B s *
d C s 10a
d A s 5p 0
*--------------------------------------------------------------------
* Web service logic.
*--------------------------------------------------------------------
/free
READ PRB64;
DOW NOT %EOF(PRB64);
wbase64xml = %trim(I26DTA);
A = %len(%trim(I26DTA));
EXSR RUT01;
wwEncLen = base64_encode(%addr(wbase64xml)
:%len(%trimr(wbase64xml))
:%addr(wwEncoded)
:%size(wwEncoded));
ENDDO;
*INLR=*ON;
/end-free
*---------------------------------------------------
C RUT01 BEGSR
C CALL 'QDCXLATE'
C PARM A
C PARM wbase64xml
C PARM 'QASCII' TABLE 10
C ENDSR
Por favor me pueden indicar en puedo estar fallando, el simbolo del palote
("|"), es lo unico que se envia mal el resto del texto si lo decodifica
bien.
El dom., 3 de may. de 2020 a la(s) 03:25, Alex Martínez ([email protected])
escribió:
> Estas fallando en que aG9sYQ== es 'hola' en ASCII y tu programa está
> codificado en EBCDIC
>
>
>
> El sáb., 2 may. 2020 a las 1:17, Miguel SB (<[email protected]>)
> escribió:
>
>> Buenas tardes,
>> Tengo el siguiente codigo para codificar un texto en base64, para esto
>> estoy usando servicio que encontre en la pagina
>> https://www.scottklement.com/base64/ pero no me esta retornando el valor
>> en base64 correcto:
>>
>> H bnddir('BASE64R4')
>> *---------------------------------------------------------------*
>> /copy /BASE64/QRPGLESRC/base64_h.rpgle
>> *----------------------------------------------------
>> *- ESTRUCTURAS DE TRABAJO -
>> *----------------------------------------------------
>> D wbase64xml S 9999999A inz
>> d wwEncoded s 100000A Inz(*blanks)
>> d wwEncLen s 10i 0
>> d datautf8 s 10A INZ(*BLANKS)
>>
>> /free
>> wbase64xml = 'hola';
>> datautf8 = %trim(wbase64xml);
>>
>> wwEncLen = base64_encode(%addr(datautf8)
>> :%len(datautf8)
>> :%addr(wwEncoded)
>> :%size(wwEncoded));
>> *INLR=*ON;
>> /end-free
>>
>> Lo que estoy enviando es la palabra "hola" para que retorne su
>> codificacion en base64, pero el codigo que muestro me retorna es:
>> iJaTgUBAQEBAQA==
>> cuando lo correcto es que retorne: aG9sYQ==
>> Por favor me pueden indicar donde estoy fallando, este codigo lo hice
>> tomando como referencia un ejemplo que esta en este foro:
>> https://code400.com/forum/forum/iseries-programming-languages/rpg-rpgle/145104-ibm-base64-api-in-rpg-apr_base64_decode-procedure
>> Otro punto que no entiendo es el uso de %addr, no se porque tengo que
>> enviar asi el texto que quiero convertir.
>>
>> Gracias por las respuestas
>>
>> ____________________________________________________
>> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
>> Forum.Help400 © Publicaciones Help400, S.L.
>
> ____________________________________________________
> Únete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
> Forum.Help400 © Publicaciones Help400, S.L.
____________________________________________________
�nete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 � Publicaciones Help400, S.L.