The query language reflects all of the system functional requirements discussed in the preceding chapter, because it is the interface between the user of the file system and the automated search and storage components of the system. Hence, all of the design capabilities that are built into the file system by virtue of its structure must be made available to the user through the medium of the query language. It is important to realize that most users of an information system will probably be aware of the information structure of the files (i.e, whether it’s hierarchic, whether it’s associative, etc.), but they may be disinterested in the file organization (i.e., whether the lists are threaded or inverted, or whatever other means of file partitioning are employed). Furthermore, command of the greater capabilities that are designed into the system, by virtue of sophisticated DASDs, consoles, communications, processors, and advanced techniques can only be exercised by the nonprogrammer user through a properly designed task oriented query language. This represents a considerable design challenge, because the nonprogrammer user has certain traditional thought processes regarding file handling, which are not, in general, compatible with the way in which the computer has organized its files internally.