Communication problems can be caused by a number of factors, from the communications router to the application on the PC. While the actual configuration and maintenance of communications between client workstations and IBM i servers is beyond the scope of this guide, the information in this chapter may help you to determine the cause of your problem.
Start with these basic checks:
Can you get a 5250 terminal emulation session running under the communications router in order to sign on to the IBM i?
If you can't, then work with your communications router and its configuration options until you can. If you can't run a terminal emulation session then there is no way that you are going to get a session using LANSA Open to start and run.
- Check that the user profile you are using:
- Is defined on the IBM i.
- Is 8 characters or less in length.
- Has the password that you are using.
Check that the user profile you are using is validly defined and is authorized to use the LANSA system and partition.
Do this simple test:
- Sign on at a 5250 terminal and immediately type the command LANSA PARTITION(ppp). Can the LANSA command be found? If not, you have a basic library list problem. The job description associated with the user profile does not include the LANSA program library (usually [email protected]) in its initial library list.
- Use the DSPUSRPRF command to view the Job Description associated with the user profile and note down the associated job description. Next use the DSPJOBD command to view the job description itself. Ensure it has an initial library list which includes the LANSA program library (usually [email protected]) and the LANSA Communications Library.
- Also check that the Job Description has LOG(4 00 *SECLVL) logging, if you are trying to solve a problem. This will ensure any OS/400 job that the user profile starts will produce an OS/400 job log. This job log will almost always yield useful error information. If you request help from your LANSA vendor, always send example(s) of the job logs resulting from failed connection attempts.
Check that the partition and language code that you are using are valid.
- Make sure that the partition and language you have specified are valid.
- The partition you specify must exist in the target LANSA system on the IBM i.
- If the partition you specify is not multilingual then the language you specify must be NAT (National Language).
- If the partition you specify is multilingual then the language you specify must be a valid language defined within the specified partition.
Check that your LANSA system is correctly licensed.
Sign on to LANSA for iSeries as QSECOFR, or the LANSA system owner, and use the command LANSA REQUEST(LICENSE) to display your current licensing status.
- To use LANSA Open you need a License Type of LCE.
Check the communications subsystem on the IBM i is active.
- Make sure the subsystem QCMN is active.
- If it isn't, start it and try the connect operation again. To run communication sessions, QCMN must be active.
Check the communications router is active and correctly started on your workstation.
- Make sure that the User Id and Password have been specified.
- Make sure that the communications router you are using is started.
- Check the IBM i LU name you are specifying. Sign on to your IBM i and use the DSPNETA (Display Network Attributes) command to determine your local control point name (for example, SYDASDEV).
Check for a communication job on the IBM i
Does an OS/400 "workstation" job appear in the QCMN subsystem?
- Use the OS/400 command WRKSBSJOB QCMN, to display the active jobs in subsystem QCMN. Repeatedly use F5=Refresh, to refresh the list, as you start the communications connection from the application executing on the workstation.
Normally a job in IBM i subsystem QCMN has the same name as the associated PC workstation.
- If a job appears in the subsystem, immediately put a "5" (Work with) against it and then choose the option to display its spooled files. When it completes it should produce an IBM i job log (spool file QPJOBLOG). If it does not produce a job log then alter the job description associated with it (described previously) and attempt the operation again. Review the resulting job log backwards. Errors and escape message at the end of the job log will usually show the cause of the problem, whereas errors and escape message at the start of the job log may mislead you because they are often trapped and handled. (For example, "Program LCXP9000 not found" is not an error, it is simply an attempt to find a user exit program).
- If a job does not appear in the subsystem, use the DSPLOG command to display the IBM i system history log. Move to the end of the log and look for messages that relate to the PC workstation involved. Usually such messages will indicate the cause of (and often the solution to) basic IBM i communication configuration problems.
- If no job appears in the subsystem and there are no messages in the IBM i system history log, then you would appear to have such a fundamental connection problem between your PC and IBM i that the IBM i does not even become aware of the connection request. Proceed to review the configuration details of your communication router and use its error logging and tracing capabilities.
Check that the file or library you are trying to open exists
- Most of the error messages found in job logs are self explanatory. Trying to open a session that uses a file that does not exist on the IBM i would cause an Lce0023 return code 0x01 to be received by LANSA Open. In this case, the job log of such a job could look like this:
CPF4101 Message . . . . : File <file name> in library *LIBL not found or inline data file missing. Cause . . . . . : The file was not opened. The reason code is 03.
Possible reason codes and their meanings:
01 - The library does not exist.
02 - The file does not exist but the library does exist.
03 - The file does not exist.
The reason for that failure can be clearly identified, however, there are other errors when the cause is not so straightforward. For example:
- MCH0601 Message: Space offset &2 is outside current limit for object &1.
This could be caused by:
- The space declared in data area [email protected] not being big enough to hold the records selected. Increase the size of the value in [email protected]
- MCH0802 Message: Total parameters passed does not match number required.
This could be caused by:
- Using the *BLOCKBYRRNnnn or the *RECEIVEIMMED select option, but with *IOMXSERVER, *IOMBLOCKBYKEY and *IOMBLOCKBYRRN missing from data area [email protected]'s I/O module.
Add these keywords into data area [email protected] and recreate the I/O module.
- Other objects in the library list with same name as the I/O module.
- MCH3601 Message: Pointer not set for location referenced
This could be caused by:
- An RCLRSC command being issued directly from the application, or position 480 in data area [email protected] being set to "Y".
Either don't use RCLRSC or change position 480 of the [email protected] data area to a value other than "Y".
General Protection Fault (GPF)
A GPF usually occurs when an application tries to access a part of the memory that is already allocated. It can also occur when running out of stack space.
If you request help from your LANSA vendor, be sure to include the job log with the problem's description.