× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Hi Barbara,

I brought this up as a possible solution to Arthur's problem, but when I checked my notes, it was for a different problem. I was having a problem with a CL program that did a QSH 'ls /home' command and getting errno 3489.

When I googled it (with site:midrange.com), I found this:

> This sounds like the problem I was having a year or so ago, although it was > with V4Rx. When Qshell runs a Java program it creates a new job to run it
> in; if the subsystem it was running in already had its maximum number of
> jobs running, an error like this one occurred. (The "resource" in question
> was a job slot in a batch subsystem.)  Eventually I got tired of being
> called about this error and just did CHGSBSD MAXJOBS(*NOMAX) on all the
> batch subsystems.  This could be your problem, I suppose.
> - Paul Clapham http://archive.midrange.com/java400-l/200303/msg00060.html

Although my program didn't use java, I was running the CL program in a subsystem with maxact(1), and switching to a different subsystem solved my problem. That was back in February, and with the passage of time, the reference to Java stuck in my mind, but I forgot the part about Qshell.

So now I'm wondering about my problem back in February. If a CL program running in batch uses the QSH command, is that alone enough to start another job? Or does the actual command being executed within Qshell matter?

*Peter Dow* /
Dow Software Services, Inc.
909 793-9050
pdow@xxxxxxxxxxxxxxx <mailto:pdow@xxxxxxxxxxxxxxx> /

Barbara Morris wrote:
Jon Paris wrote:
That requirement relates to the RPG runtime not being threadsafe Bob.  So I
think it is only relevant when you are setting up an RPG procedure to be
called as a native method or when you are calling a Java method which may
subsequently call an RPG native method.

When you are simply calling Java methods I don't think it is an issue.

Thread issues can go beyond the static storage in an RPG module,
although that's all that THREAD(*SERIALIZE) protects from multi-thread
access.  I think it's a good idea to be aware of thread issues when
calling Java, and coding that keyword should raise the consciousness a
bit.  But you are right that if the called Java methods will _never_
call back to any native method, then there is no need to protect the
static storage in the module from access by multiple threads.

I do think the single threading in the job stream may be an issue though - I
think the JVM is effectively run in a separate job.

Not sure what you mean here, Jon.  If RPG calls Java using
EXTPROC(*JAVA), the JVM is in the same job as the RPG program.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.