Adabas does not build an ISN list when it processes a READ command, so there is no count of ISNs to return in *NUMBER . For a READ LOGICAL it only has to get the next ISN in the inverted list for the specified descriptor, get the data record for that ISN, and return both to the Natural program. For a READ PHYSICAL it reads the next record in the data blocks for the file and returns that record and its ISN to the Natural program. For a READ BY ISN, it returns the next record in the file in ISN sequence. A READ is basically requesting a sequential read through a file, based on the requested sequence - descriptor, physical location, or ISN.
Since a READ only processes 1 record at a time, *NUMBER could never be greater than 1. The developers of ADABAS, in their wisdom, decided that *NUMBER was not relevant for the READ statement and set its value to zero if it refers to a READ statement.
Hope that’s clear enough. “WHY” questions can sometimes get philosophical … but not tonight.
George