When answering a question please:. Read the question carefully. Understand that English isn't everyone's first language so be lenient of bad spelling and grammar. If a question is poorly phrased then either ask for clarification, ignore it, or edit the question and fix the problem. Insults are not welcome. Don't tell someone to read the manual.
Chances are they have and don't get it. Provide an answer or move on to the next question. Let's work to help developers, not make them feel stupid.
Syntactically, your command is correct. The error occurred while the server was trying to call the program. The text for message CEE9901 is: Message.: Application error.
&1 unmonitored by &2 at statement &5, instruction &3. Cause.: The application ended abnormally because an exception occurred and was not handled. The name of the program to which the unhandled exception is sent is &6 &8 &12. The program was stopped at the high-level language statement number(s) &11 at the time the message was sent.
If more than one statement number is shown, the program is an optimized ILE program. Optimization does not allow a single statement number to be determined.
If.N is shown as a value, it means the real value was not available. Recovery.: See the low level messages previously listed to locate the cause of the exception. Correct any errors, and then try the request again. So, at this point, you need to examine the iSeries job log. To do this, you need to find your job among the different FTP jobs out there.
Execute this command (if you have the authority): WRKACTJOB JOB(QTFTP.) Find the job with the Current User set to the login you used for FTP. Then examine the job log of that job.
You will likely see the real error that caused the CEE9901 to generate. If you do not have authority to the WRKACTJOB command, an alternative is to print your job log and look at the resulting spooled file.
Use these FTP commands: quot rcmd CHGJOB LOG(4 00.SECLVL) LOGCLPGM(.YES) quot rcmd DSPJOBLOG OUTPUT(.PRINT) Then look in your spooled files for the QPJOBLOG. It should go to the spooled files of whichever user you logged into FTP with. This AS/400 command (from the green screen) will help you find it: WRKSPLF SELECT(.CURRENT.ALL.ALL QTFTP.) Without seeing the job log, I can't be certain of the cause. However, most errors of this type, in my experience, are caused by missing libraries in your library list. You may have to first execute some ADDLIBLE commands using the quot rcmd FTP command.
Like this: quot rcmd addlible mypgmlib quot rcmd addlible mydatalib Followed by: quot rcmd call mylib/mypgm. @TracyProbst I'm able to call the CL commands using quot rcmd. Here i have one small problem. In the i am trying to copy the spooled file to one of my work library using CPYSPLF FILE(QPDSPSTS) TOFILE(ICIWRKVN1/DSPSYSSTS) command. If i use this command manually its getting executed as expected. But, in remote session it is trying to execute above command and hitting error 'cannot find job name QPDSPSSTS' in QTCP job log.Originally 'QPDSPSSTS' spooled file will be created with another user name.
How can i execute that command correctly using Quot rcmd – Nov 15 '16 at 13:18.
Is there any way in which i can trap the job when it is submitted from java and then do a STRSRVJOB on this job and then debug it as we do for batch debugging? I think you should be able to do that; I've done so before with.Net web services that originate from outside the i and call an OS/400 program or stored procedure. The hard part is finding the specific job that the system will use to process the request to run the program.
Many of these are QZDASOINIT jobs which run in the QUSRWRK subsystem, for example. If you could find the right job, perhaps through trial and error by seeing which job gets your request when you run it the first time, you could try initiating a STRSRVJOB on that job, running STRDBG for the program you want to debug, and then running your Java application.
But I am not familiar with where Java processes run - which subsystem and job names, etc. Hopefully, some other readers will be.
Or, what about just calling your program by itself from a regular interactive session (after setting up via STRDBG), and passing it the same parameters that the Java class does? If so, then you should be able to achieve the same thing. Regarding why your program didn't stop at the breakpoint - are you sure you're servicing the right QZDASOINIT job? There are usually several of these that are active simultaneously, and although you can service any one of them and start the debug command, if the program being debugged is never called by the job you're servicing, it won't break. So, you'll want to look at the job log to make sure that it's servicing your request at that particular time.
It can be hard to get the timing right, depending on how many other incoming requests your system is handling. Any one of those jobs could get the call to service your request, and it may not necessarily be the same one each time. Hi all, Actually i could not try this out for some days as i was caught in some other work. But as soon as i found your post i just gave it a try. Game mar heaven pc.
I still get some problem, this time when i give the sbreak command on the debug line, which is giving me a syntax error. The format which i typed is: sbreak 49 (where 49 is the line no at the left most column of the screen which the debugger refers to in the program) Now this seems to be the best solution of all, n i think im now caught just 1 step away from getting the desired result.
Ds on psp. Aug 04, 2011 download DSONPSP Beta 7 WIP per psp. DSonPSP beta 6 - Kingdom Hearts 358-2 Days (J). DSONPSP based on DESMUME core v9 by yoshihiro ltbrgtltbrgtChangelogltbrgt-SpeedUP againltbrgt-use L R for touch the screen ltbrgt-Cursor added with 2 colors Black o.
Anyways thanks Cwc for providing me the link to this information. Hey guys, Finally it has worked for me. Its not through the SEP method but through the conventional method of identifying the job and holding it. I will try on the other thing as well and let you all know if that works. This is what i did to make the java to AS400 debugging work: 1) In the java application after the connection is established to the AS400 system, set a breakpoint before the actual program to be debugged is called.
What Is As400 Program
2) When the java program stops at this breakpoint, get the job named QZRCSRVS in your AS400 system. This is a Prestart job which is used by the AS400 system for a remote proram call.
(There are different types of PJs for different purposes. For eg, the QZDASOINIT job which most of them refer to is a PJ which is used for direct file updations on an AS400 s/m by a java application and not for program calls. You can know more about PJs from the ibm site at this link: Trap your exact QZRCSRVS job which your java program has called. Again if you are using a java IDE, you can watch in the 'Variables' window for getting the job string directly (We are using jt400.jar for AS400 connectivity.
If you are using this you can check in the Command Call object to get the actual job string in the 'Variables' window) before the program is called with which you can actually do a STRSRVJOB directly without the need to identify the exact job from your AS400 system. You can get the job string in the needed form (job number/user/job name). 3) Do a STRSRVJOB with the obtained job string. 4) Do STRDBG on the actual program and set the breakpoint. 5) Release the breakpoint from the java application and the program will stop at the desired breakpoint.:) Again thank you all for providing all the suggestions throughout.
As400 Program Status Data Structure
One way to expose the business logic that is found in enterprise AS400 programs is via the creation of web services. If you are a skilled java programmer, you can begin to rewrite your AS400 programs in java and build it as RESTful webservices.
For this you can always make use of the jt400 AS400 java library to access native AS400 resources. Another approach will be to “expose” your existing AS400 programs via HTTP. In this post, I will show you a very simple way of calling your RPG program using the AS400’s HTTP server.
But before I go any further, I’d like to give thanks to Mr Scott Klement on whose work this example is based. Here’s a shout out for you Mr Scott! First create an RPG program that will return “Hello World”. Create this in a new library that will be “exposed” to the web later. For this one, I’ve created MYTESTLIB/TEST.
Comments are closed.
|
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |