2013-06-05 2 views
1

Я компилирую программу COBOL как DLL в zOS, используя параметры компилятора PGMN (LM), DLL, EXPORTALL Когда я это делаю, это также заставляет компиляцию быть NODYNAM. В этом контексте есть ли еще какой-то другой парм, который я могу использовать, чтобы заставить CALLS использовать другие подпрограммы, чтобы быть динамическими (то есть разрешенными во время выполнения). Я знаю, что я могу использовать подход с именем имени CALL для выполнения этого, но я не могу сделать это с помощью системных подпрограмм, таких как DSNELI, интерфейс вызова DB2.DLL zOS dynamic

Имеет ли значение параметр IMPORT?

Спасибо!

ответ

1

Все DLL должны быть выполнены NODYNAM. Этого нельзя избежать. Как вы указали, используя NODYNAM, не исключает возможности динамических вызовов программ с использованием подхода CALL var-name. Пока вы используете динамические вызовы для локально разработанных процедур, вы будете поддерживать все преимущества, связанные с отсутствием статических связанных модулей в ваших программах.

Не заботьтесь о статических связанных системных модулях, таких как CALL 'DSNELI'. Это программы-заглушки , которые будут динамически загружать соответствующий языковой интерфейсный модуль при времени выполнения. См. Universal Language Interface.

+0

Да, использование DSNULI вместо DSNELI привело к тому, что в процессе выполнения было задействовано правильное средство привязки DB2 DB2. Согласно этой странице есть накладные расходы на производительность, но, надеюсь, это будет одно время в самом первом выражении SQL. – ChuckLeviton

+0

@ChuckLeviton Я считаю, что наибольший накладной удар будет на первом вызове, как и на любую другую динамически разрешенную ссылку. После этого накладные расходы должны быть незначительными. – NealB

+0

Только то, что я хотел услышать, спасибо! – ChuckLeviton

1

Вообще говоря, вы хотите, чтобы вызовы этих системных процедур были статическими. Подпрограммы, как правило, являются заглушками, которые определяют «реальную» рутину во время выполнения.

+0

DLL - новинки для нас. В нашем магазине все наши пакетные программы скомпилированы с DYNAM. Это означает, что вызовы системных процедур также разрешаются во время выполнения, что имеет некоторые положительные последствия для нас, что мы хотели бы продолжать использовать при использовании DLL. – ChuckLeviton

+0

И эти системные рутинные вызовы будут по-прежнему решаться во время выполнения, как я уже сказал. – cschneid

+0

Обработчик DLL должен быть статическим. Но он будет действовать как DYNAM, поскольку он загружает модули DLL. – zarchasmpgmr

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