|Unisys Extension||Language Constructs|
This chapter introduces REQL and its implementation.
REQL's language constructs and functions enable administrators to create project administration scripts for batch project management. Use the parameters described in this Reference Guide in conjunction with the Project Management scripts provided in the Scripts tool to create tasks like creating new projects, setting up search directories, and performing batch updates.
In addition to using the Project Management scripts, REQL is implemented in the Shell tool. The Shell tool is enabled on the User tab and is accessible from the Tools menu. It gives you an interactive command line interface for using REQL with Revolve.
Figure: 12-1 Shell Tool
REQL is the acronym for Revolve Query Language. It is comprised of language constructs and functions that enable you to perform specific administrative and analysis operations on the Revolve database. The Revolve database is created when you add and parse your system files to create a Revolve project. In fact, when you use Revolve in your system analysis and maintenance tasks you are actually using the Revolve database. Each database file represents the system file that was used to create it. Revolve database files are comprised of the following:
In COBOL source code there are programs, divisions, paragraphs, and statements. The divisions, statements, and other pieces of the source code are known as elements. Elements provide an extremely detailed representation of the source code, including the usage of variables in statements. COBOL constructs are used in many places in a program. For example, a MOVE statement can appear in several places. Each instance is stored in the database as a separate element and can be accessed with Revolve.
Attributes describe properties of a database object. For example, attributes include an element's location in the source code, the number of lines it occupies, its size, and its name. There are many different attributes in the database. For example, a variable has a name attribute but a MOVE statement does not.
Types are used to classify source code elements in the Revolve database. A paragraph has one type attribute while a COBOL statement has another type. Understanding the types stored in the Revolve database is an important part of learning to use REQL effectively.
There are many types of elements in a program. To classify and use them all is a complicated task. To reduce the complexity, REQL has adopted a consistent hierarchical naming convention. The hierarchy is known as the Type Hierarchy and it consists of a tree with the most general type at the root and more specific types lower down. For example, the name of each type consists of word segments separated by underscores with the first word segment describing the language and the other segments describing the element in more detail. For example, cobol_label_para. Moving left to right along the type name is like descending the type hierarchy. Figure 12-1 displays the hierarchy.
Figure 12-1: Type Hierarchy
The full name of the type is known as the formal name. Each type of element in the database has a formal name. Sometimes types are referred to by a partial name which contains only some of the word segments of the formal name. For example, para might be used instead of cobol_label_para.
Relationships connect database objects to one another. For example,
MOVE A TO B.
There are three objects. The MOVE statement, the usage of variable A, and the usage of variable B. The MOVE statement owns the usage of A and the usage of B. The hasa relationship, shown here, is used in REQL to denote ownership.
The previous sections have discussed some of the parts in a typical database. This section brings the concepts together to illustrate a complete database for a simple application. During a parse of source code, a representation of the elements and relationships within the code is constructed. This representation is called a Parse Tree and it is stored in the Revolve database. REQL accesses the parse tree to answer queries.
Below is a test application. Create this file in a word processing application. Be sure to indent and tab the code according to the example below. Save the file as TEST.COB.
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. EXAMPLE.
000003 DATA DIVISION.
000004 WORKING-STORAGE SECTION.
000005 01 MESSAGE-FIELD.
000006 05 CUSTOMER-INTRO PIC X(6) VALUE "HELLO".
000007 05 CUSTOMER-NAME PIC X(100).
000008 PROCEDURE DIVISION.
000010 MOVE "John Smith" TO CUSTOMER-NAME.
000011 DISPLAY MESSAGE-FIELD.
000012 STOP RUN.
The following diagram represents the parse tree of the test application. The elements of the parse tree are represented by boxes, and the arrows represent relationships. Within each box is a list of the attributes that describe the associated element. For example, the parse tree shows that a paragraph element whose name is A00-DISPLAY, is located at row 9 column 8, and has a length of 4 lines. The paragraph is related to three statement elements with the hasa_cobol_state relationship.
Figure 12-2: The Parse Tree for TEST.COB
The next chapters provide definitions and examples of specific REQL constructs and functions to enhance your system analysis.
Copyright © 1999 MERANT International Limited. All rights reserved.
This document and the proprietary marks and names used herein are protected by international law.
|Unisys Extension||Language Constructs|