how to get number of records of an adabas file using natural or direct call??
You could issue a FIND NUMBER specifying a search-range including all records.
But beware, for large files that’ll be expensive.
There’s more than one way to do it:
The fist way is like Wolfgang Winter said: A FIND NUMBER including all records. But maybe you won’t get all records because of NULL-Value supression in the descriptor.
Another way is:
- Use an empty view (i.e. with no fields) for the regarding file.
- make a read physical.
- use the internal field *COUNTER after the read.
–> should always work (even if no suitable descriptor is available)
–> uses less memory (doesn’t create ISN-Lists like FIND NUMBER)
–> can be very time consuming
–> Maybe makes many I/Os to disk
Here’s an example:
define data local * 01 view1 view of ddm_name * end-define * label-view1. read view1 end-read display *COUNTER(label-view1.) * end
Maybe there’s a third way if you got a special Descriptor with less possilbe values. A good example is a logical field with two possible values (TRUE OR FALSE):
define data local * 01 view2 view of ddm_name 02 yes_no_field (L) * end-define * label-view2. histogram view2 for yes_no_field #sum := #sum + *NUMBER(label-view2.) end-histogram display #sum * end