× 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.


  • Subject: RE: LVLCHK *NO
  • From: watern@xxxxxxxxxxxxxx
  • Date: Fri, 1 Oct 1999 11:57:11 -0400
  • Illegal-Object: Syntax error in From: address found on firewall.cbs.fiserv.com:From: LNCBS.FISERVCBS.watern<watern@cbs.fiserv.com> ^-missing end of mailbox

Some friday afternoon musings.....

I have some thoughts on level checking,  born out of past experience,  and when 
I express them I often get the reactions that have been expressed by Dave, 
Chris and Michael already !  However,  I have experienced the advantages of 
using lvlchk(*no), and this is a discussion forum after all....   so....  here 
goes..... !

Level checking allows programs to express their concern when they are run over 
files that have changed since the program was compiled.  Of course, this is a 
natural thing for a program to want to do !  If I was a program and I'd been 
running happily for years using a file that had 15 fields and then one morning 
just as I was firing up I realised the file now had sixteen fields, I would be 
concerned - like - "hey guys, what d'you expect me to do with this sixteenth 
field ? - dont you want to change my code to do tell me what to do with it, or 
at the very least recompile me, so I know where it is and what it looks like 
when I'm dealing with all the other fields around it ? "

As the programmer/developer, I have the choice of recompiling the program or 
ignoring any level checks.  By taking the second option, I am effectively 
saying "its ok, I know the file has changed, but trust me - you dont need to 
know about it.  I would have recompiled you if it was important for you to know 
about it !"

"Trust me - I'm a programmer" doesnt have quite the same ring as "Trust me - 
I'm a doctor",  I know !  :)

When might I do this ?

Well, I can give one example from my own experience. Consider  a system where 
every physical file has one logical file created specially for updates.  It 
shares the unique access path with the physical or one other logical used for 
read-only purposes. These "update-only" logicals are created lvlchk(*yes), all 
others, including the physical, are created lvlchk(*no). When adding a new 
field to a file, the process is add the field, assign a default value, 
re-create the file & its logicals, recompile any program referencing the 
"updates-only" logical, plus any others that you know need access to the field 
you just added.

You could even use the share(*yes/*no) parameter in the same way.  Create the 
"updates-only" logical share(*no), the others share(*yes).  All interactive 
inquiry programs would then share any existing odp when opening files. Except 
for the ones that were being updated !  Big potential for performance 
improvements.

On the one site where I encountered this approach, machine performance was 
excellent due to these and other considerations that went into the design of 
the database and the programs.  The lvlchk(*no) share(*yes) approach was one 
part of an overall design philosophy.

The consequence of the lvlchk(*no) aspect of the design philosophy were  :- 

1. The only programs logged out for changes were those with genuine changes to 
functionality.
2. Fewer programs were moved between production and development.
3. Testing time was reduced.
4. The cost of implementing such changes was less than it would otherwise have 
been.
5. On those occasions when changes were made to one of the system-wide master 
files, the guy doing the implementation got home in time for Sunday lunch 
rather than supper !

The price paid for this was that it was much more important to have good 
knowledge and reliable information about the database, to know where files were 
used and updated.  If we did miss compiling a program that needed to be 
recompiled, then  "Unpredictable results would occur" .  A major disadvantage, 
I agree. But in four years there were no major catastrophes that I remember, 
and few minor ones. Certainly no more than at other sites.  

So, yes it can be dangerous, but there is a difference between using 
lvlchk(*no) to get around CPF4131 messages, and using it to purposefully design 
a system making the best of what is available within OS400.

The point I really wanted to make is that by dismissing a solution or vendor,  
based on one isolated aspect of their development standards, you could be 
missing out  a system which is well-designed, costs less to maintain, and 
performs better than one of the alternatives !   Maybe I should have just said 
that at the top !!  


Nigel Waters
----------------------------

ps...   this was the same site that had one display file with over two-hundred 
formats... but thats another story !!
(strangely enough, the display file was lvlchk(*no) too !)



Dave wrote..

>>3) What would be the most likely reason a third party vendor would use
>>LVLCHK *NO?

>The third party vendor has no confidence in the integrity of his package.


Chris  wrote..

>Return your software package for a full refund.  LVLCHK(*NO) is a BIG NO NO.
>You are correct with your understanding of LVLCHK.  If the file has been
>changed you may get decimal data errors, data placed into the wrong fields,
>all sorts of problems.  The most likely reason is laziness.  Fire that
>software vender.

Michael wrote..

> Why would a third party vendor use LVLCHK *NO?  Because if they recompile
> all of their programs they have to RETEST all of their programs, and this
> takes time and $$.  They're shortcutting their own development process at
> the expense of the client's data.




$ConflictAction: 1

+---
| This is the RPG/400 Mailing List!
| To submit a new message, send your mail to RPG400-L@midrange.com.
| To subscribe to this list send email to RPG400-L-SUB@midrange.com.
| To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner/operator: david@midrange.com
+---


As an Amazon Associate we earn from qualifying purchases.

This thread ...


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.