NETUL(ID:5599/net006)for Navigational Easy To Use Language Querying and browsing language References: Recently, we have developed NETUL (Navigational Easy To Use Language), which is a syntactic embodiment of the presented J and P languages for CODASYL databases. NETUL is being implemented for PSA DBMS (a restricted version of DBTG71) on computers EC RIAD or the IBM 360/370. The implementation technique is somewhat different from the technique used in LINDA. We have removed from user perception all concepts related to physical organization, such as AREA, LOCATION MODE, SEARCH KEY. Neither do we make a distinction between main storage objects and secondary storage objects; that is, we introduce no equivalent for a user working area and no kind of the GET instruction. Addresses are defined as some tuples (e.g., a record address is a pair (database-key, record-name), an item address is a triple (database-key, record-name, item-name), a set address is a triple (database-key, record-name, set-name)). As previously, the language engine contains two stacks: stack E, as defined in Section 5, and the result stack, where meanings of joins are accumulated. The result stack is used for all operations implied by the language constructs, in particular; besides the meanings of joins, it also stores the truth values of formulas and counters of loops implied by operators where, with, order by, closed by, and quantifiers. The size of stacks and the volume of their elements may vary greatly; for example, the selector [EMPLOYEE] may return, say, 100,000 addresses, while selector [EMPLOYEE where E# = ‘E765’1 returns a single address. We provide some methods of coding typical sequences of addresses (e.g., the sequence returned by selector [[EMPLOYEE] may be coded as a few symbols). In our implementation, stacks are stored in main memory; for large applications, however, it may be necessary to store them partially in secondary storage. The execution of NETUL queries (or programs) is subdivided into two stages. In the first stage a top-down, LL(1) compiler generates the intermediate code. In the second stage this code is interpreted by a special program. The intermediate code contains high-level instructions like Find the ith tuple from the list on the top of the result stack, create subordinated elements from this tuple, and push them to the top of stack E. in Transactions on Data Systems 10(3) Sept 1985 view details |