在我看來,你的界面文件定義不正確。 「COBOL」文件只能是文本數據。如果有符號,應該有一個實際的+/-,如果帶有小數位,則爲實際的小數點。或者,對於小數位,「縮放因子」是可能的,並且對於浮點數據的文本表示是必需的。
您有一個「隱含的」小數點。看來你使用的方法不能正確理解這一點。如果它給你.123456,那麼它根本不起作用。如果它不適用於隱含的小數位,它可能不適用於其他定義。
最安全的是切換方法。其次最安全的是修復您正在使用的方法。接下來最安全的是,在收到結果後,自己進一步解析定義,以確定隱含的小數位的位置,並做一些愚蠢的事情,比如乘以十的正確冪。
請記住,在這最後兩個,你可能仍然會遇到其他問題。如果cb2java使用文本數據但不可靠,否則爲什麼繼續使用它?
cb2java的文檔說的是什麼?也許這有幫助嗎?系統設計和數據設計和程序規範說了什麼?
在COBOL是微不足道的產生所有的數據爲「文本」,並接收所有數據爲「文本」,並把它變成了格式要求的COBOL系統。通過糟糕的設計,你一直在做額外的工作。
如果你不能得到的文件改變了,我建議的JRecord。即使文件已更改,JRecord似乎也是更好的選擇。
是的,你已經得到了你完成的代碼,但在設計的時候是有過錯的,這些事情發生。至少將這些信息反饋給設計過程,以免再次發生。
如果你只是爲了保存你的代碼而修補某些東西,你會遇到一些更難以理解和維護的東西,哪些更容易出錯。
沿途的某個地方沒有一個概念驗證,而你是受過損害的人。沒有知道它的工作原理,文件的代碼不應該已經啓動。我希望你沒有多個文件。如果是你正在做的POC,切換到JRecord應該沒有問題,所以我猜測它不是。
也許你會對文檔感到幸運。除此之外,它的好處在於改進了設計過程和您的經驗,這意味着您將來不會再犯類似的錯誤操作。
我的過程是通過ASCII將txt文件轉換爲字節。然後,我可以使用parseData(byte [] arg0)通過佈局文件將它們解析爲適當的結構。到現在爲止,它只是不能用小數點。我會嘗試JRecord。謝謝你的建議人。 – WangMango