2017-08-11 105 views
0

我已經創建了基於cobol字帖的佈局。使用Record Editor/Jrecord解壓縮COMP-3數字

佈局快照:

enter image description here

我試圖加載數據也選擇相同的佈局,它給了我一些列錯誤的結果。我嘗試使用所有二進制數字類型。

  1. CLASS-ORDER-EDGE
  2. DIV-NO-EDG
  3. OFFICE-NO-EDG
  4. REG-AREA-NO-EDG
  5. CITY-NO-EDG
  6. 全國縣NO-EDG
  7. BILS-COUNT-EDG
  8. REV量電流EDG
  9. 用法-QTY-EDG
  10. GAS-CCF-EDG

結果快照 enter image description here

輸入文件可以在下面找到附着

enter link description here

https://drive.google.com/open?id=0B-whK3DXBRIGa0I0aE5SUHdMTDg

預期輸出:

enter image description here

相關線程 Unpacking COMP-3 digit using Java

回答

0

第一個問題,你曾經做過一個EBCDIC - > ASCII轉換的文件!!!!

EBCDIC - > ascii轉換也會嘗試並轉換二進制字段以及文本。

例如:

Comp-3 value hex  hex after Ascii conversion 

400   x'400c'  x'200c'  x'40' is the ebcdic space character 
              it gets converted to the ascii 
              space character x'20' 

你需要做的二進制傳輸,保持文件EBCDIC:

  1. 檢查文件大型機上,如果它有一個RECFM = FB你可以做一個轉移
  2. 如果文件是RECFM = VB請確保你轉移了RDW(Recor d描述符字)(或將VB文件複製到大型機上的FB文件)。

其他景點:

你將有更新RecordEditor/JRecord

  • 的字體將需要EBCDIC(cp037美國EBCDIC;對於其他的查找)
  • FileStructure/FileOrganisation需要更改(固定長度/ VB)

最後

  • BILS-COUNT-EDG要麼是9個字符長或在85列開始(和是8個字節長)。
  • 你應該包括在文本不是複製一個畫面的Xml
  • 在RecordEditor如果右鍵點擊>>>編輯記錄。它會顯示字段值,原始文本和十六進制。這對於查看發生了什麼很有用
  • 您似乎無法接受許多答案;答案能否解決您的問題並不重要;問題的答案是否正確。
+0

嗨布魯斯,我有一個COBOL格式化的輸入文件。 txt格式,由大型機系統FTP'ed。在該文件中,所有列都從EBCDIC轉換爲ASCII,但從Class-Order到County-No的列很少,最後四列仍爲EBCDIC格式.st –

+0

如果文件爲F100BR.EDGEOUT.DET2SUM。問題中的F2017JUL_new.txt。 comp-3字段已被EBCDIC - > Ascii破壞。 –

+0

是的,它是針對同一個輸入文件和最近幾天發佈的同一個副本。但是我們有一個輸出文件,它來自於Mainframe生成的同一個輸入文件,它具有這些列的值並且也在。我們的客戶提供的txt格式,因爲他們沒有大型機系統。 –