Используя SQL, возможно ли создать глобальную временную таблицу с идентичным идентификатором уровня формата, как у исходного файла (PF), на котором она основана? - PullRequest
0 голосов
/ 07 мая 2019

Программа A вызывает программу B. Я создаю глобальную временную таблицу на основе файла A в Prog B.

Мне нужно открыть и прочитать временную таблицу в программе A. Я использовал код операции EXTFILE в FСпецификация для компиляции Prog A.

fFILEA   if   e             disk    extfile(wrk_filnam)
f                                      usropn

/free

wrk_filnam = 'QTEMP/TEMP_TABLE'

open FILEA

/end-free

Когда я возвращаюсь в Prog A и открываю файл A, я получаю ошибку проверки уровня, поскольку временная таблица создается с новым идентификатором уровня формата.

Есть ли обходной путь?Если бы я мог сделать с CRTDUPOBJ тогда было бы здорово.

Ответы [ 2 ]

5 голосов
/ 07 мая 2019

Оператор sql DECLARE GLOBAL TEMPORARY TABLE tmptable LIKE srctable RCDFMT srcfmt создаст tmptable с тем же идентификатором уровня формата, что и srctable, если вы убедитесь, что srcfmt - это то же имя формата записи, что и оригинал.

Вы компилируете с правильным файлом, чтобы получить правильный идентификатор уровня? Вы можете использовать DSPPGMREF, чтобы узнать ожидаемый программой идентификатор уровня для каждого файла.

1 голос
/ 07 мая 2019

CRTDUPOBJ должен создать файл с тем же идентификатором уровня формата, что и исходный файл.

...