Level 20 Error

1420 pts.
Tags:
AS/400
RPG Program
I have created an RPG Program which reads data from one file and writes to another, based on some conditions with the help one Sub routine to write. Now when I try to compile the program, I am getting level 20 error because of which I am not able get the object. The error message is: " The source is having data but no table or array is defined". Can any one please tell me the reason, since I don't need an array here at all? Thanks!

Software/Hardware used:
AS400, RPG,CLLE,

Answer Wiki

Thanks. We'll let you know when a new response is added.
Send me notifications when members answer or reply to this question.

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Discuss This Question: 8  Replies

 
There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when members answer or reply to this question.

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy
  • philpl1jb

    Most likely:

    The compile searchs for ** in column 1 and 2 of source.  Any rows after that are considered by the compiler to be data to be loaded into compile-time arrays.

    51,365 pointsBadges:
    report
  • philpl1jb

    Please provide feedback when/how issues are resolved.

    51,365 pointsBadges:
    report
  • TomLiotta
    It would help if the message ID was supplied. Text can be useless, especially if language translation might be involved. Perhaps "**" records exist without corresponding table or array definition. -- Tom
    125,585 pointsBadges:
    report
  • Sai4AS400

    Thank you Philp
    1,420 pointsBadges:
    report
  • ToddN2000

    If you are getting level 20 errors that you know are ok and still can have the object created, you can change the default.

    To change severity level to less than 20 for objects

    Need to be signed on as QSECOFR

    chgcmd "CRTBNDRPG" and set new severity level

    15,605 pointsBadges:
    report
  • TomLiotta

    Need to be signed on as QSECOFR

    It shouldn't require a QSECOFR logon, and the vast majority of sites probably should not use QSECOFR for something like this at all. If higher authority than normal *PGMR is needed, then a more dedicated profile that has been created for such tasks should be used.

    But it's not necessary here. The compile command can simply be run with the GENLVL(20) parameter value set. Alternatively, the GENLVL(20) keyword could be specified on a H-spec. That, of course, assumes that the compile is determined to be acceptable and no additional source problems exist. It'd be better to fix the source and eliminate the error.

    Tom

    125,585 pointsBadges:
    report
  • ToddN2000

    I should have been a little more clear in my other post. Our software vendor issues a new upgrade about every 18 months. When they do this we need to make sure this error level is set globally, via the command, for us to compile their  new source. They state their code is valid even though level 20 errors exist.

    As for doing this under QSECOFR ?  There is no other profile for us that has an authority level that would allow this. Is this overkill with security? Maybe. It has bitten us in the past where "someone" changed the QSECOFR password before a long weekend, forgot it, tried logging in and disabled it after 3 attempts... No other way to get in so it involved a service call to IBM.

    Thanks for the tip Tom on adding it to the H spec. Never knew you could do that.

    15,605 pointsBadges:
    report
  • TomLiotta

    Is this overkill with security?

    Yes. The single major reason is that the QSECOFR user profile is not like other profiles that have *SECOFR UserClass capabilities. It can do things that (a) no other profile can ever do and (b) no other profile ever needs to do. These special capabilities are tied to system functions and are not related to programming from vendors. They relate to internal IBM-only functions.

    The trouble doesn't really show up when QSECOFR gets *DISABLED. The really serious problems come when the QSECOFR *USRPRF object gets damaged.

    Simply re-enabling QSECOFR is relatively easy. But if someone signs on with QSECOFR to do some fairly normal work, e.g., CHGCMDDFT, and a system problem arises that leaves QSECOFR damaged (because it was in active use), then the recovery could be a much more involved process.

    It's not a process that anyone wants to go through. It's easy to avoid by creating one or two *SECOFR profiles that would be used everywhere QSECOFR would otherwise be used. There are no vendors other than IBM who can require "QSECOFR". If one does, it's because they don't want to go through the trivial effort of removing a literal test for "QSECOFR" and replacing it with a test for whatever SPCAUT() values are actually needed.

    (Or they're doing something to your system that should not be done.)

    Tom

    125,585 pointsBadges:
    report

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to:

To follow this tag...

There was an error processing your information. Please try again later.

REGISTER or login:

Forgot Password?
By submitting you agree to receive email from TechTarget and its partners. If you reside outside of the United States, you consent to having your personal data transferred to and processed in the United States. Privacy

Thanks! We'll email you when relevant content is added and updated.

Following