This chapter gives details of the support provided in the Assembler, PL/I and Unisys language extensions.
The Assembler Extension provides a language parser for applications written in IBM System/370 Assembler.
The Assembler Extension includes macro support. Macros must be saved as .MAC files in separate directories. The file name must be identical to the Macro name. Revolve allows 127 macros per Assembler program. Prior to parsing, macros are expanded and the complete, expanded source code can be viewed in the Source view. Macros themselves are displayed in the Copybooks and Includes information browser.
The PL/I Extension provides a language parser for applications written in PL/I.
The following keywords can be listed as BUILTIN and will be recognized as functions for PL/I Impact Analysis:
The Unisys Extension provides a language parser for applications written in Unisys.
The following table defines the scope of Unisys support:
Unisys 1100/2200 Series Support
ACOB (or ASCII COBOL) - This is the Sperry Univac series 1100 American National Standard COBOL (ASCII) Level 7R1A [ANSI74]
UCOB (Also known as NPE COBOL); this is an implementation of ANSI85 COBOL. It also supports most of the Unisys extensions supported by ACOB.
|DMS (Database Access)
Sperry Univac 1100 Series DMS 1100 COBOL (ASCII) DML13R4
1000 Series RDMS
Embedded SQL will be supported to the current MVS DB2 level.
|ECL (Job Control)
Unisys OS1100 Exec System Software Executive Control Language (ECL) SB4R1
Unisys A Series
COBOL ANSI-74 Release 3.9.0
Within the Unisys COBOL context, the COPY statement is used to copy a segment out of a Library (.ULB) file which can contain one or more named segments of COBOL. Revolve enables access to specific named segments within the Library file (.ULB). When accessed by the COPY statement the library files have the following form:
|VALID COBOL CODE.........
The previous section of code will be "pulled into" the COBOL program which has the COPY NAMEOFSEG line.
Revolve interprets DMS INVOKE statements in a way that "pulls in" segments of Library files (.ULB) with matching SCHEMA and SUBSCHEMA . For example, the Invoke statement...
|INVOKE SUBSCHEMA IDHABCD-R
|IN FILE IDH OF SCHEMA IDH-R
...will "pull in" all segments from the Library file as illustrated below:
|The following is source for ABCIDH.CBL
|INVOKE SUBSCHEMA IDHABCD-R
|IN FILE IDH OF SCHEMA IDH-R
|WORKING STORAGE or COMMON STORAGE
|COBOL code from segment 1 of IDH-R$IDHABCD-R$R$0001 PROC
|COBOL code from segment 2 of IDH-R$IDHABCD-R$R$0002 PROC
|Continuance of source for ABCIDH.CBL
The Library file had two segments that matched the SUBSCHEMA of the INVOKE statement, so both were inserted into the appropriate location.
File access for the Unisys extension is limited to local and networked PC drives. Mainframe connectivity is not supported.
The DMS Information Browser, accessible from the Browsers menu, supports:
Supports the INVOKE statement.
Shows libraries and DMCA.CPY.
Supported as described below.
On a Unisys mainframe when processing ACOB(ANSI 74) Cobol code there is a process whereby the Cobol program is brought together with a Unisys specific copybook format with a name starting S$ and put through a preprocessor to produce a standard Cobol program with DMS functionality embedded that is input to the compiler. This same principle applies for UCOB(ANSI 85).
The preprocessor on the mainframe is called the ASCII Data Manipulation Program(ADMLP).
Revolve will try to emulate some of the ADMLP functions in order to build a Cobol program that it can understand and analyze successfully.
The following assumptions apply to the Revolve functionality:
This is a data are that is generated by the preprocessor based on the DDL used to define the Schema/Subschema. It is used to store response code information, status of functions, databases etc and for general communications between the program and the DMS system at execution time.
Data areas within the DMCA are used within the Procedure Division of the Cobol program , consequently Revolve will need access to it in order to be able to resolve data items and do analysis.
You need to supply a DMCA.CPY copybook. It is suggested that this is created by 'cutting' the code from a preprocessed main frame program. An example is supplied with the Unisys sample code.
Procedure Division Commands
DMS Procedure Division commands can be separated into the following types:
|AREA oriented commands
|RUN UNIT oriented commands
|RECORD oriented commands
|SET oriented commands
The Unisys Extension supports RECORD oriented verbs. All others types of this command will be successfully parsed and highlighted as DMS commands. However, association with the appropriated data areas and scripts will not be supported.
Distinction of the DMS IF from the Cobol IF will be on the basis of the following:
|IF identifier-1 SET:
|The word SET in this position will indicate a DMS conditional
|The word RECORD in this position will indicate a DMS conditional.
Distinction of the DMS MOVE from the Cobol MOVE will be on the basis of the following:
|The word CURRENCY represents a DMS MOVE
|The word AREA-NAME represents a DMS MOVE
|The word AREA-KEY represents a DMS MOVE
LOG will always be treated as a DMS command.
All RECORD oriented commands can have the following formats:
When the command uses the identifier-1 format, Revolve will make a 'best effort' to resolve these data items in use within the specific commands as much as possible, depending upon logic complexity.
FIND is a positioning command. It points the user to a particular point in the data. Revolve makes the association between the command and the data area that it is operating in within the appropriate data storage section. Other valid formats of the FIND command are:
|FIND OWNER RECORD WITHIN set-name SET
|FIND CURRENT RECORD WITHIN set identifier SET
|FIND NEXT RECORD WITHIN area-name AREA
|FIND PRIOR RECORD WITHIN area identifier AREA
|FIND FIRST RECORD WITHIN
|FIND LAST RECORD WITHIN
|FIND identifier RECORD WITHIN ..
Note: Revolve does not attempt to resolve the above format of the FIND command to a data area. All other occurrences are shown as DMS commands in the DMS Browser. Any association with record layouts is dependent on currency at these points and not resolvable in the Revolve static environment. All of the SET and AREA options are valid and identify all of the OWNER, CURRENT, etc. options.
|FIND NEXT record-name WITHIN set-name SET
|FIND PRIOR identifier WITHIN set identifier SET
|FIND FIRST record-name WITHIN area-name AREA
|FIND LAST identifier WITHIN area identifier AREA
|FIND identifier record-name WITHIN
Note: Revolve points the user to the record-name at the appropriate point in storage for the above command format. Or attempts to resolve the identifier to a specific storage area, as much as possible .
|FIND NEXT DUPLICATE WITHIN record-name RECORD
|FIND PRIOR DUPLICATE WITHIN identifier RECORD
Note: Revolve associates the record-name or identifier (above) as much as possible with the appropriate data area.
|FIND record-name VIA set-name USING data-base-identifier
|FIND identifier VIA set-identifier USING data-base-identifier
Note:Revolve associates the record-name or identifier to the data area in a "best effort" to resolve them to a specific command.
|FIND NEXT DUPLICATE record-name RECORD WITHIN set-identifier USING data-base-identifier
Note: Revolve associates the record-name with the appropriate data storage field for the above format.
Fetch has the same valid formats as FIND and will be supported in the same way. FETCH has the equivalent functionality of a FIND and GET. It positions the user and retrieves the data into the appropriate area.
|GET identifier RECORD ON ERROR GO TO error paragraph
|GET record-name RECORD ON ERROR GO TO error paragraph
The STORE command writes the data within the database or creates a new occurrence of a record within a database for a specific key. Revolve's association of the record-name and identifier will be done as well as possible depending on logic complexity of the code.
The MODIFY command updates existing records in the database.
The DELETE command deletes the record within the database.
The KEEP command tells the run unit that the program will want to access this record again.
MODIFY, DELETE, and KEEP all have the same standard formats:
|Command record-name RECORD data-base-name ON ERROR GO TO error paragraph.
The identifier is interchangeable with the record-name.
The ECL Information Browser functions in conjunction with the JCL Information Browser. The following are displayed in the ECL Information Browser:
Copyright © 1998 Micro Focus Limited. All rights reserved.
This document and the proprietary marks and names used herein are protected by international law.