JRecordライブラリを使用して Eclipse RCP アプリケーションでメインフレーム ファイルを表示しようとしています。既に COBOL コピーブックをテキスト ファイルとして持っています。それを達成するために、
- apache commons net FTPClient API を使用してメインフレームからデスクトップにファイルを転送しています
- 今、私はテキストファイルを持っています
- 改行文字と改行文字を削除しています
- 次に、CobolIoProvider を介してそれを読み取り、AbstractLine 型の ArrayList に変換します。
しかし、いくつかの特殊文字のためにオフセットの問題があります。ここに問題があります
- ステップ #3 を実行しないと、レコード 1 からオフセットの問題が発生します。したがって、ステップ #3 を含めました。
- ステップ #3 を実行しても、最初の数千のレコードは、特殊文字に遭遇しない限り、AbstractLineReader によって正しくフォーマット (または読み取り) されているように見えます (確かではありませんが、それは私の仮定です)。
コードスニペット:
ArrayList<AbstractLine> lines = new ArrayList<AbstractLine>();
InputStream copyStream;
InputStream fis;
try {
copyStream = new FileInputStream(new File(copybookfile));
String filec = FileUtils.readFileToString(new File(datafile));
System.out.println("initial len: "+filec.length());
filec=filec.replaceAll("\r", "");
filec=filec.replaceAll("\n", "");
System.out.println("initial len: "+filec.length());
fis= new ByteArrayInputStream(filec.getBytes());
CobolIoProvider ioProvider = CobolIoProvider.getInstance();
AbstractLineReader reader = ioProvider.newIOBuilder(copyStream, "REQUEST",
Convert.FMT_MAINFRAME).newReader(fis);
AbstractLine line;
while ((line = reader.read()) != null) {
lines.add(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
ここで何が欠けていますか? メインフレームから転送されたファイルに対して行う必要がある追加の前処理はありますか?