2016-05-19 3 views
1

Мне поручено написать некоторую Java для чтения данных из таблицы DB2 и записать в файл в формате с фиксированным форматом, который может быть введен в программу Cobol. Cobol макет выглядит такStringTemplate для создания компоновки Cobol

01 PERSON 
    10 FIRST-NAME PIC X(10) (i.e 10 bytes fixed width) 
    10 LAST-NAME PIC X(20) (i.e 20 bytes fixed width) 
    10 MIDDLE-INITIAL PIC X(1) 

В Java поля доступны для меня, как струны. Используя документы я придумал что-то вроде этого

class Person { 
    private String firstName; 
    private String lastName; 
    private String middleInitial; 

    Person(String inFirstName, String inLastName, String inMiddleInitial){ 
     this.firstName = inFirstName; 
     this.lastName = inLastName; 
     this.middleInitial = inMiddleInitial; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public String getMiddleInitial() { 
     return middleInitial; 
    } 

} 

, а затем в основном, я имел следующие строки кода

st = new ST("$p.firstName$ $p.lastName$ $p.middleInitial$", '$', '$'); 
    st.add("p", new Person("Ethelred", "TheUnready", "X")); 
    System.out.println(st.render()); 

Исполнительное производит этот результат

Ethelred TheUnready X 

Что я должен делать для обеспечения того, чтобы выход выглядел так

Ethelred TheUnready   X 

в то время как имя, как Джон Смит Q хотел бы так

John  Smith    Q 

Спасибо!

ответ

2

Вы могли бы сделать что-то вроде

spaces = "               " 
outLine = (firstName + spaces).substring(0,10) 
      + (lastName + spaces).substring(0,20) 
      + middleInitial; 

Есть целый ряд пакетов для записи файлов Фиксированные шириной от Java (есть поиск Sourceforge).

Есть еще несколько пакетов, которые можно использовать в Cobol прописи для чтения/записи файла:

Эти пакеты излишеством в этот случай, но полезен, если учебник более сложный.


отказ от ответственности Я написал JRecord.

+0

Это выглядит довольно просто. Поэтому вы говорите, что нет необходимости гадать с помощью StringTemplate. – ChuckLeviton

+0

Нет необходимости использовать StringTempate –

 Смежные вопросы

  • Нет связанных вопросов^_^