1 package net.sf.cobol2j.examples; 2 3 import net.sf.cobol2j.FileFormat; 4 import net.sf.cobol2j.FileFormatException; 5 import net.sf.cobol2j.RecordParseException; 6 import net.sf.cobol2j.RecordSet; 7 8 import org.apache.commons.logging.Log; 9 import org.apache.commons.logging.LogFactory; 10 11 import java.io.FileInputStream; 12 import java.io.FileNotFoundException; 13 import java.io.IOException; 14 15 import java.util.Iterator; 16 import java.util.List; 17 18 import javax.xml.bind.JAXBContext; 19 import javax.xml.bind.JAXBException; 20 import javax.xml.bind.Unmarshaller; 21 22 23 public class Dat2csv { 24 private static Log log = LogFactory.getLog(Dat2csv.class); 25 26 public static void main(String[] args) 27 throws FileFormatException, JAXBException, FileNotFoundException, 28 IOException, RecordParseException { 29 String xc2jfilename = args[0]; 30 JAXBContext context = JAXBContext.newInstance("net.sf.cobol2j"); 31 Unmarshaller unmarshaller = context.createUnmarshaller(); 32 Object o = unmarshaller.unmarshal(new FileInputStream(xc2jfilename)); 33 FileFormat fF = (FileFormat) o; 34 RecordSet rset = new RecordSet(System.in, fF); 35 36 Iterator fields; 37 38 while (rset.hasNext()) { 39 try { 40 fields = rset.next().iterator(); 41 42 boolean afterfirst = false; 43 44 while (fields.hasNext()) { 45 if (afterfirst) { 46 System.out.print(','); 47 } 48 49 System.out.print(fields.next().toString()); 50 afterfirst = true; 51 } 52 } catch (RecordParseException ex) { 53 displayErrorRecord(ex); 54 55 break; 56 } 57 58 System.out.println(); 59 } 60 } 61 62 private static void displayErrorRecord(RecordParseException e) { 63 StringBuffer b = new StringBuffer(); 64 b.append(e.getMessage() + "\n"); 65 b.append("Partial record. Fields values until failed field:" + "\n"); 66 67 for (Object o : e.getPartialRecord()) { 68 b.append(o.toString() + "|"); 69 } 70 71 log.error(b); 72 } 73 }