exec SQL set option ....
на самом деле является оператором времени компиляции, а не времени выполнения, и должен быть самым первым SQL оператором, встречающимся в источнике.
В модуле * SRVPGM я часто буду иметь следующее как самая первая процедура в модуле ...
//-----------------------------------------------------------------------
// SetSqlOptions
//
// The SQL SET OPTION statement is a compile time statement
// It must be physically the first SQL statement the compiler sees
// during compilation. the options are in effect for the entire module
//
// Thus this dummy procedure that isn't ever called.
//-----------------------------------------------------------------------
dcl-proc SetSqlOptions;
exec sql set option naming =*sys, commit= *none, usrprf= *owner,
dynusrprf= *owner,datfmt= *iso, timfmt = *iso,
closqlcsr= *endactgrp, alwblk = *allread,
alwcpydta = *optimize, dlyprp = *yes;
return;
end-proc;
Итак, в главном цикле * PGM убедитесь, что SET OPTION
находится в самом начале C -спецификации.
В линейной сети вы можете сделать описанную выше процедуру самой первой в источнике.
Кроме того, какую версию и уровень PTF вы используете?