2016-10-06 2 views
0

Nous effectuons un programme de modernisation hérité VSAM/Mainframe à JAVA. L'un des modules du système hérité génère un fichier et le fichier est transféré par FTP par st vers Microsoft Windows Server. Le fichier contient des symboles spéciaux] ¬ |! [¢^qui sur FTP sont traduits en Ù^|!> Μ.FTP caractères spéciaux MF vs Java

Cependant, lorsque nous faisons la même fonctionnalité en Java via Apache Commons FTP Client, les caractères spéciaux sont conservés tels quels] ¬ |! [¢ ^. Aucune traduction n'a eu lieu. L'exigence est de garder la traduction telle quelle, car le module en aval ne sera pas mis à niveau dans un proche avenir.

Quelqu'un at-il fait face à ce problème sur la façon dont Java Side peut-il faire cette traduction ce que Mainframe est capable de réaliser pendant FTP?

ftp = new FTPClient(); 
ftp.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out))); 
int reply; 
ftp.connect(host); 
reply = ftp.getReplyCode(); 
if (!FTPReply.isPositiveCompletion(reply)) { 
    ftp.disconnect(); 
    throw new Exception("Exception in connecting to FTP Server"); 
} 
ftp.login(user, pwd); 
ftp.site("SBD=(IBM-1140,ISO8859-1)") //not working ftp says not recognised 

Le moment où il exécute le code du site (networkpage, characterpage), il ne dit pas recognized.The SBD est la commande site ZOS, tout le monde connaît le client ftp java correspondant.

+0

Quel est ce JBFTP? Je ne trouve aucune référence dans IBM Knowledgecentre. –

+0

@BillWoodger excuses pour mes connaissances limitées dans VSAM en fait c'est une étape EXEC = FTP –

+0

Parlant comme un vieux mainframe IBM, le problème ici est la traduction d'EBCDIC en ASCII. Java utilise Unicode, qui est un sur-ensemble des deux et a donc une meilleure cartographie que l'ancien système. Vous devrez faire explicitement la traduction vous-même. Cependant, puisque vous n'avez posté aucun code, nous ne pouvons pas vraiment vous aider. –

Répondre

0

J'ai eu un problème similaire. Ainsi, au lieu d'utiliser ftp.site i utilisé

ftp.sendCommand("site sbdataconn=AAAA.BBBB.CCC"); 

AAAA.BBBB.CCC est le jeu de données mainframe avec FB, Lrecl 256 contenant la référence de traduction.

Modifier l'instruction ftp pour

ftp.sendCommand("site sbdataconn=(IBM-1140,ISO8859-1)"); 
+0

Super que cela a fonctionné pour vous. Mais sur votre instruction, j'ai donné ftp.sendCommand ("site sbdataconn = (IBM-1140, ISO8859-1)"); mais il fournit encore 500 'SITE': la commande n'est pas comprise. Donc dans mon cas ça ne marche pas. –

+0

Essayez d'utiliser "ftp.site (" filetype = seq ");" avant d'envoyer l'instruction sbdataconn. – Dinesh