Данные ПОЛЬЗОВАТЕЛЯ неправильно переносятся в другие файлы катушек

#ibm-midrange #rpg

Вопрос:

У меня есть программа RPG, которая выполняет приведенную ниже команду через QCMDEXC:

 OVRPRTF FILE(QSYSPRT) HOLD(*YES) SAVE(*YES) USRDTA(OWNERUPD)
 

Программа также выполняет DLTOVR FILE(QSYSPRT) команду через QCMDEXC. Проблема в том, что DLTOVR, похоже, иногда выходит из строя, и в результате USRDTA файлов катушек из программ, выполняемых впоследствии, отображается как «OWNERUPD».

Чтобы устранить эту проблему, я попытался изменить область действия OVRPRTF на *CALLLVL. Также применил то же изменение области действия к DLTOVR. Кажется, это работает нормально. ПЕРЕОПРЕДЕЛЕНИЕ теперь, похоже, влияет только на программу, генерирующую катушку. Но мой вопрос в том, будут ли какие-либо «скрытые» опасности при внесении этого изменения?

Если да, то каков был бы лучший подход?

Комментарии:

1. Я нахожу переопределения головной болью. Мое решение состоит в том, чтобы запустить все программы и сервисные программы в одной и той же группе активации с именем.

Ответ №1:

Если *CALLLVL бы это имело значение, казалось бы, вы работаете в реальной группе активации ILE, а не в группе активации по умолчанию OPM (RPGIII) (DAG).

Другим вариантом было бы использовать ACTGRP(*NEW) программу ILE RPG и уйти OVRSCOPE(*ACTGRPDFN) . Вам даже не понадобится DLTOVR в качестве группы активации, и переопределение исчезнет, когда программа вернется.

Однако использование ACTGRP(*NEW) не является хорошей идеей, если программа вызывается в цикле.

Последний вариант, используйте ACTGRP(<something>) и OVRSCOPE(*ACTGRPDFN) , чтобы программа и переопределение находились в определенной группе активации, отличной от любой группы активации, в которой работают остальные ваши программы. (Скорее всего, QILE по умолчанию, что в первую очередь является плохим выбором и полностью отличается от OPM DAG.)

В принципе, другие ваши варианты требуют понимания того, как работают группы активации ILE.

Комментарии:

1. Не могли бы вы, пожалуйста, сказать мне, возникнут ли какие-либо проблемы с использованием *CALLLVL?

2. все должно быть в порядке, если вы удалите его, когда закончите.