Strano che tu abbia avuto questo problema solo ora !!!
per la conversione sembra tutto ok,
immagino che tu abbia in ELTE-01 la stringa in input, e ELTE-02 quella convertita,
ed IND-1 l'indice di input, IND-2 quello di output,
hai messo solo un pezzo di codice, quindi capire per bene, non è facile !!!
[/quote]
Sono le stringhe in input e output (fa il test sul singolo carattere, e eventualmente lo converte). L'XML mi esce corretto col simbolo € (altrimenti non me lo aprirebbe e darebbe errore già in fase di visualizzazione). L'errore 0200 testando col programma AE me lo dà proprio sul carattere €. Boh! Per il momento ho risolto (scritto EURO), e me lo passa (c'erano anche altri caratteri speciali e me li passava). Resta la curiosità.
WORKING-STORAGE SECTION
03 IND-1 PIC 9(4) COMP-5.
03 IND-2 PIC 9(4) COMP-5.
03 IND-3 PIC 9(4) COMP-5.
03 ELTE. *> CONVERSIONE TESTO PER CARATTERI SPECIALI
05 ELTE-01 PIC X OCCURS 1400.
03 ELTF.
05 ELTE-02 PIC X OCCURS 1400.
---------------
e la conversione
CONV-T.
MOVE "TEXT" OF DB-GR2 TO ELTE
MOVE 1 TO IND-1 MOVE 0 TO IND-2 IND-3
PERFORM UNTIL IND-1 > 1400 *> 1400
*** TOGLIE DOPPIO SPAZIO
IF ELTE-01(IND-1) = SPACE
MOVE IND-1 TO IND-3
ADD 1 TO IND-3
IF ELTE-01(IND-3) = SPACE
ADD 1 TO IND-1
END-IF
END-IF
**************************************
ADD 1 TO IND-2
MOVE ELTE-01(IND-1) TO ELTE-02(IND-2)
IF ELTE-01(IND-1) = "&"
MOVE "&" TO ELTE-02(IND-2)
ADD 1 TO IND-2
MOVE "a" TO ELTE-02(IND-2)
ADD 1 TO IND-2
MOVE "m" TO ELTE-02(IND-2)
ADD 1 TO IND-2
MOVE "p" TO ELTE-02(IND-2)
ADD 1 TO IND-2
MOVE ";" TO ELTE-02(IND-2)
END-IF
IF ELTE-01(IND-1) = "Ü"
MOVE "&" TO ELTE-02(IND-2)
ADD 1 TO IND-2
MOVE "#" TO ELTE-02(IND-2)
ADD 1 TO IND-2
MOVE "2" TO ELTE-02(IND-2)
ADD 1 TO IND-2
MOVE "2" TO ELTE-02(IND-2)
ADD 1 TO IND-2
MOVE "0" TO ELTE-02(IND-2)
ADD 1 TO IND-2
MOVE ";" TO ELTE-02(IND-2)
END-IF
[.... ecc. per i vari caratteri]
******************************************************************
ADD 1 TO IND-1
END-PERFORM
---------------------------------