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.
Advantages:
→ should always work (even if no suitable descriptor is available)
→ uses less memory (doesn’t create ISN-Lists like FIND NUMBER)
Disadvantages:
→ 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