2016-10-06 87 views
0

我們正在做一個遺留現代化程序VSAM/Mainframe to JAVA。 傳統系統的其中一個模塊會生成一個文件,並將文件通過st到Microsoft Windows服務器進行FTP。該文件包含特殊符號]¬|![¢^在FTP上被轉換爲Ù^ |!>μ。FTP特殊字符MF vs Java

但是,當我們通過Apache Commons FTP Client在Java中執行相同的功能時,特殊字符會保留原樣] ||| [¢^。沒有翻譯發生。要求將翻譯保持原樣,因爲下游模塊在不久的將來不會升級。

任何人都面臨這個問題,如何在Java端我們可以做這個翻譯什麼大型機能夠在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 

它執行站點代碼(networkpage,characterpage)它說沒有recognized.The SBD是隔離區的現場指揮的那一刻,任何人都知道相應的Java FTP客戶端。

+0

這是什麼JBFTP?我在IBM Knowledgecentre中找不到任何對它的引用。 –

+0

@BillWoodger對我在VSAM中有限知識的道歉實際上是它的一個步驟EXEC = FTP –

+0

作爲一個老的IBM大型機人員,這裏的問題是從EBCDIC到ASCII的轉換。 Java使用Unicode,這是兩者的超集,因此比舊系統具有更好的映射。你需要自己明確地做翻譯。但是,由於您沒有發佈任何代碼,我們無法真正幫助您。 –

回答

0

我有類似的問題。所以,代替使用ftp.site我用

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

AAAA.BBBB.CCC是大型機數據集FB,LRECL 256含有翻譯參考。

更改FTP語句

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

很好,它爲你工作。但根據你的指令,我給了ftp.sendCommand(「site sbdataconn =(IBM-1140,ISO8859-1)」);但它仍然提供500'站點':命令不明白。所以在我的情況下,它不工作。 –

+0

嘗試使用「ftp.site(」filetype = seq「);」在發送sbdataconn指令之前。 – Dinesh