Easytrieve (Classic and Plus) are programming languages tailored to generating reports and are primarily used by large corporations. Easytrieve is a product of CA, Inc. (Computer Associates).
Classic v. Plus
Easytrieve (or Easytrieve Classic) is the first iteration in the Easytrieve series and requires the programmer to use a rigid program structure and syntax. The second iteration of Easytrieve was originally an independent product (Pro/Grammer) that ultimately was renamed as Easytrieve Plus and no longer licensed separately, but instead made available to all Easytrieve customers. Easytrieve Plus includes changes to program structure and syntax, making it much more powerful and programmer-friendly. Easytrieve can be run on mainframe (z/OS, z/VM, z/VSE), UNIX, Linux, and Windows systems.
In general, an Easytrieve program can accept multiple input files (SAM/ISAM/VSAM), read databases (TMF/ADABAS/DB2/IDMS), perform file manipulation (read/write/sort), process data (alphanumeric/numeric/packed/binary), and invoke COBOL and Assembler programs.
Easytrieve syntax is a combination of the COBOL and BASIC programming languages and is meant to be easy to use by non-programmers.
A typical Easytrieve program has three sections: Environment Definition, Library, and Activity Definition. The Environment Definition section is used to specify operating parameters and modes for the program and is optional. The Library section is usually required in every program, and it is used to define data, such as any input and output files and working variables. Finally, the Activity Definition section is where the programming logic is defined. This section is where all file processing, data manipulation, sorting, and reporting is programmed. Of course, the Activity Definition section is required in every Easytrieve program.
Similarity to COBOL
The syntax of an Easytrieve program is very similar to COBOL. They share many of the same data types and reserved words, such as "MOVE", "ADD", "SUBTRACT", "MULTIPLY", "DIVIDE", "CALL", "CASE", and "IF". Also, "procedures" can be created in Easytrieve to allow for modularized functionality.
A few differences between the two are variable definition, file reading, and report generation. Like COBOL, Easytrieve has many of the same variable types (alphanumeric, numeric, packed, binary, etc.) and can "group" variables together. The biggest difference is that Easytrieve does not use level numbers. Also, to specify sub-levels under an "01 level" variable, Easytrieve uses integer offsets to indicate the starting position within the group. Of course, the programmer also specifies the size of the variable, but uses a slightly different syntax: size is determined by an integer, instead of "X" or "9" like COBOL.
Reading input files is made much easier in Easytrieve because the process is automated. The programmer merely references the variables to be used. When the logic of the "JOB section" for that line of the input file is complete, Easytrieve automatically reads the next line and the logic is repeated. In this way, Easytrieve operates similarly to ColdFusion and its "" tag, which loops through each line of query results.
Generating a report is simple in Easytrieve. The programmer can specify each and every detail of a report, including its titles, fields, headings, spacing, sort order, control breaks, and automated field tallies. Easytrieve even contains special "report procedures" that can be used to manipulate report output easily and automatically per line, break, end of page, end of report, etc.