On 03-Jan-2014 12:20 -0800, Jerry Draper wrote:
After we upgrade to V7R1 we found that a number of old routines that
used a combination of this will err out (see error below):

≥ CPYTOIMPF (failure occurs here)

A Retry after some minutes allows the job to complete normally.

So the failing request apparently uses the /QDLO file system [as inferred from Change Document Description (CHGDOCD) that precedes it, and the messages noted later]? If so, then using the root file system to output to a stream file (STMF) vs output to a *DOC [in the old-style 8.3 PC document folder file system] would avoid that error... and avoid all the other restrictions and requirements of the DLO vs STMF.

If we put a DLYJOB DLY(120) after the RUNSQLSTM it completes normally.

Because a hard-coded wait is both possibly excessively long and possibly too short avoid encountering the exception, it is IMO a poor implementation as an attempt to circumvent. A routine that polls on a shorter timed-wait, each time interrogating the existence of secondary threads, would seem a more timely /solution/.

Of course a true /solution/ would probably require a QAQQINI option to tell the query processor not to implement that way; i.e. a means to tell the Query Engine to expunge the secondary [system] threads when the query closes, instead of them hanging about [for an unstated amount of time] awaiting possibly more work.

The error has to do with the multi-threaded environment implemented
in V7R1. There is no "fix" for this. Welcome to multi-threading.

Apparently the following is some document\reply sent to you, in response to an inquiry.? Perhaps from IBM? Is there an IBM Technical Document to document the new behavior? An APAR [there should be one; if that response was from a PMR reported to IBM, demand they open an APAR so the /closure/ of the APAR is a clear indication both of their awareness of the issue and their response to customers about what was the resolution]. An entry in the Memo to Users (MTU) for the IBM i 7.1? If documented anywhere by IBM, hopefully with the source-code for an awaitQueryThreadsNoMore() routine... or identification of the PTF that provides the new command to Delay for Query Threads (DLYQRYTHD) for as long as the WAIT() parameter suggests before the command terminates issuing an exception that the condition was not met prior to the allowed\specified wait-time being exceeded.


When running SQL or using user defined functions, the system will
often spawn multiple threads to complete the request. At R710, these
threads are left open longer to improve the performance of future
calls to the same function or statement. This can cause failures if
the job the runs any function or command that can not be ran in a job
with multiple threads. Some examples these errors include:

msgCPE3524 Message . . . . : Function not allowed.
Cause: Function is not allowed in a job that is running with
multiple threads.
msgCPF180B Message . . . . : Function &1 not allowed.
Cause: Function &1 is not allowed in a job which has multiple
msgCPFA0D4 Message . . . . : File system error occurred.
Error number 3524

Since they were written in symptom kwd form, adding: errno3524 and rc3524 for return code, and the non-kwd form for each message CPE3524 CPF180B CPFA0D4 making them capable of being searched otherwise.

This thread ...


Return to Archive home page | Return to MIDRANGE.COM home page