RNQ0211: Error calling program or procedure
RNQ0211 means an ILE RPG program tried to call another program or procedure and the call itself failed, so the called program never ran. It matches RPG program status code 00211. A missing program or library is the usual cause.
Other names for this code
Also written as RNX0211, status 00211, RPG status 211, %STATUS 211, error calling program RPG, RPG CALL failed.
What it means
RNQ0211 is an ILE RPG runtime message for program status 00211, which IBM's ILE RPG Reference lists as an error calling a program or procedure. The program used CALL or CALLP, and the system couldn't start the program it named. That is different from status 00202, where the called program started and then failed.
The help text gives the name of the program the call tried to reach. The system's own reason sits just above it in the job log. Most often that is MCH3401, which means the system couldn't find or resolve the object. A program that isn't in the library list, a misspelled name, or a library that isn't there in this environment all lead to it. Missing authority to the program or its library can also stop the call, and the message above RNQ0211 then points to authority.
RNQ0211 is the inquiry form, sent because the calling program didn't handle the error. The job waits for a reply on the user's screen or, in batch, usually in QSYSOPR. RNX0211 is the escape form with the same meaning, which a MONITOR group or a calling program can catch.
Common causes
- The called program isn't in any library on the job's library list, often because a job description or startup program sets a different list.
- The program name is held in a variable (CALL with a variable, or EXTPGM with a field) and the variable is blank or misspelled.
- The program was deleted, renamed or not yet moved into this environment, for example after a partial promotion.
- The user isn't authorized to the program or to the library that holds it.
- A library named on a qualified call doesn't exist on this system.
How to find the problem
- Read the job log with DSPJOBLOG and look just above RNQ0211. MCH3401 or a similar message gives the system's reason and usually the object name.
- Press F1 on RNQ0211 to see the program name it tried to call and the statement that made the call.
- Check that the program exists with
WRKOBJ OBJ(*ALL/, using the real program name.ORDENTRY) OBJTYPE(*PGM) - Run DSPLIBL in the same job, or check the job description, to see whether the library holding the program is on the list.
- If the name comes from a variable, check its value in a formatted dump (reply D) or in debug.
How to fix it
- Add the missing library to the job's library list, through the job description, the user's initial program or ADDLIBLE.
- Correct the program name, or restore or promote the missing program.
- Grant the user *USE authority to the program and *EXECUTE to its library if authority is the problem.
- Handle the failure in the caller. Use CALLP(E) and check %ERROR, or put the call in a MONITOR group with
ON-ERROR 00211. - Reply C for the waiting job, then fix the setup and rerun.
IBM documentation
IBM Display Message Descriptions (DSPMSGD). Use the documentation for your installed release.
This link opens the relevant IBM reference library or lookup instructions. Match the complete code and your installed product release; it is not a code-specific review.
Related codes
Questions
The program exists, so why do I get RNQ0211?
The job can't see it or use it. Check that its library is on this job's library list and that the user is authorized to the program and its library. The message just above RNQ0211 in the job log usually says which.
What is the difference between RNQ0211 and RNQ0202?
RNQ0211 means the call never started. RNQ0202 means the called program started, then ended in error.
Which reply should I give to an RNQ message?
C (cancel) is the safe answer when you don't know the program. D and F also cancel, but first write a dump the developers can use. G skips the rest of the current RPG cycle and resumes at its input step (*GETIN). That is a call for the program's owner to make.