2015-01-05 2 views
1

У меня есть копия книги, как:Получить имена полей во время выполнения программы

01 MY-STRUCTURE. 
    05 STRUCTURE-NAME PIC X(20). 
    05 STRUCTURE-DATE PIC X(8). 
    05 STRUCTURE-LIB PIC 9(3). 

Как я могу получить имя моих полей?

Я хочу иметь программу, которая может получить любую тетрадь и динамически писать ее поля и значения.

Я хочу, чтобы записать его в выходной файл, например так:

"STRUCTURE-NAME-> TOTO" 
    "STRUCTURE-DATE-> 19780301" 
    "STRUCTURE-LIB -> 123" 
+0

Чтобы уточнить: у вас есть программа COBOL «C», и вы хотите, чтобы «C» мог выводить любой член или любую структуру, которую он содержит? (Как вы указали требования, вы можете попросить «C» вывести содержимое произвольной структуры, в которой он НЕ содержится, откуда бы получить такие экземпляры структуры?) –

+0

Какой компилятор и ОС вы используете? Чего вы пытаетесь достичь на самом деле? –

+0

Как сказал Билл: «Что вы пытаетесь достичь?». В принципе, вы можете написать парсер для cobol-Copybooks, использовать существующий парсер (например, файловую поддержку на мэйнфрейме или cb2xml), используя комбо-комбо-комбо для отображения макета записи в файле. –

ответ

-2

У меня есть два возможных решения:

  1. Вы сохранить имена полей копии в внутренней таблицы , И secuential читает таблицу для записи вашего вывода.
  2. Динамическое распределение, сложнее, но это возможно. Вы назначаете копию в своей программе с помощью bpxwdyn (подпрограмма IBM).

    Вы создаете подпрограмму с именем копии, длину фиксированную (80), имя библиотеки копий и выделяете эту копию в подпрограмме. Затем вы можете заполнить внутреннюю таблицу своими данными.

Например:

http://mainframe-tips-and-tricks.blogspot.com.es/2011/12/cobol-sample-program-for-dynamic-file.html

+0

Я хочу, чтобы песочная копия в моей подпрограмме. Не может работать :( – Rockley

0

В мире г/OS, в зависимости от уровня вашего компилятора, вы можете использовать отладочную информацию, генерируемый компилятором, чтобы сделать самоанализ ваших имен. Для этого вам нужно будет сохранить ADATA во время компиляции.

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