Tabelle di conversione definite dall'utente
Se si specifica SRVERCP=USR o USRD in una macro DFHCNV TYPE=ENTRY, è necessario fornire tabelle di conversione definite dall'utente. Il programma di conversione standard (DFHCCNV) utilizza queste tabelle, che sono disponibili per il programma di conversione sostituibile dall'utente, DFHUCNV. Inserire le tabelle di conversione definite dall'utente nell'origine della macro DFHCNV, in un punto qualsiasi dopo la macro DFHCNV TYPE=INITIAL.
SRVERCP=USR
È necessario fornire due tabelle di conversione dei caratteri, denominate ASTOEB e EBTOAS.
Ogni tabella deve avere una lunghezza di 256 byte. ASTOEB viene utilizzato per la conversione da ASCII a EBCDIC e EBTOAS per la conversione da EBCDIC a ASCII. Il valore esadecimale di un byte di carattere viene utilizzato come offset nella tabella di conversione per ottenere il valore convertito del carattere. La Figura 1 illustra questo processo.

SRVERCP=USRD
È necessario fornire le tabelle di conversione dei caratteri DBCS, denominate DBASTOEB e DBEBTOAS, nella sorgente DFHCNV. Devono trovarsi dopo la macro DFHCNV TYPE=INITIAL, altrimenti in qualsiasi punto del sorgente. Ogni tabella deve essere un elenco di 256 puntatori a quattro byte e 256 coppie di tabelle di traduzione a 256 byte. Il primo byte di un carattere DBCS viene utilizzato come indice dell'elenco dei puntatori. Utilizzando il primo byte del carattere DBCS come offset esadecimale nell'elenco, il puntatore trovato è l'indirizzo di una coppia di tabelle di traduzione da 256 byte. Il secondo byte del carattere DBCS viene utilizzato come offset in ciascuna delle due tabelle di traduzione a 256 byte per ottenere il primo e il secondo byte del carattere DBCS convertito. La Figura 2 illustra questo processo.

Considerazioni sui caratteri DBCS non validi e non definiti
In ASCII ed EBCDIC, alcuni intervalli di codici sono codici DBCS validi. Qualsiasi valore a doppio byte al di fuori di questi intervalli è un carattere DBCS non valido. Nelle tabelle di conversione fornite, i caratteri DBCS non validi vengono convertiti in X'FFFF', come definito dall'architettura della pagina di codice.
All'interno dell'intervallo di codici valido, diverse migliaia di valori a doppio byte sono definiti come caratteri DBCS effettivi. Un valore a doppio byte compreso nell'intervallo di codici valido, ma non definito come carattere DBCS, è un carattere DBCS non definito.
Le tabelle definite dall'utente devono seguire queste convenzioni per i caratteri non validi e non definiti.