TABLE OF CONTENTS Introduction to Easytrieve Capabilities Structure of Easytrieve program Environment Definition Data Definition Processing Activities Decision and Branching Logic Input & Output Specification Report Processing Table Processing Synchronized File Processing
INTRODUCTION
Easytrieve is an information retrieval and data management tool designed to simplify computer programming and to perform complex programming tasks.
CAPABILITIES
Easytrieve has all the capabilities of a standard retrieval system as well as the comprehensiveness and flexibility required for complex reports, data extraction and file maintenance requirements.
CAPABILITIES
File Access Accepts any number of input files Processes QSAM, ISAM, VSAM , IMS/DLI files, IDMS & SQL Synchronizes file processing Processes data in alphabetic, numeric, packed, packed-unsigned
or binary format Provides flexible edit masks Provides default report headings Allows multiple use of field definitions with COPY keyword
CAPABILITIES
Logic Process Provides standard programming constructions Provides powerful calculation capabilities Performs special tests useful in editing Supports Move for corresponding fields Includes special start & finish procedures Sorts on any number of keys
CAPABILITIES
Report Output
Automatic formatting of reports & customizing options Provides Control breaks on any number of keys Automatically creates summary file for subtotals Processes only fields that are required for REPORT Allows explicit positioning of print layout for pre-printed
forms
MODES OF OPERATION
Easytrieve provides five modes of operation that facilitate production as well as ad-hoc programming.
Syntax check source statements Syntax check and compile source statements Syntax check, compile and execute source statements
(Default) Syntax check and compile source statements and produce
an object module Execute previously link edited programs
STRUCTURE OF PROGRAM
Environment section PARM (parameters)(Optional)
Library section FILE (parameters)(Optional if no files) DEFINE fields
Activity section (s) PROGRAM (statements)JOB (Statements) (Job procedures)SORT (Sort procedures)SCREEN (statements)
SAMPLE PROGRAMFILE PERSNL FB(150 1800)
EMP# 9 5 N NAME 17 8 A GROSS 94 4 P 2
DEPT 98 3 N
JOB INPUT PERSNL NAME FIRST-PROGRAMPRINT PAY-RPT
REPORT PAY-RPT LINESIZE 80TITLE 01 ‘PERSONNEL REPORT EXAMPLE-1’LINE 01 DEPT NAME EMP# GROSS
SAMPLE REPORT
30/06/02 PERSONNEL REPORT EXAMPLE-1 PAGE 1
DEPT NAME EMP# GROSS903 WIMN 12267 373.60943 BERG 11473 759.20915 CORNING 02688 146.16935 NAGLE 00370 554.40911 ARNOLD 01963 445.50914 MANHART 11602 344.80917 TALL 11931 492.26918 BRANDOW 02200 804.64911 LARSON 11357 283.92932 BYER 11467 396.68921 HUSS 11376 360.80911 POWELL 11710 243.20943 MCMAHON 04234 386.40
ENVIRONMENT DEFINITION
PARM Statement:SYNTAX - Terminates Easytrieve processing after completion of the syntax check operation. Allows early checkout of program before data files necessary for execution are available.COMPILE - Terminates Easytrieve processing after completion of the syntax check and compile operations.
If PARM statement is not used, the default is syntax check, compile and execute.
An eg. PARM LINK (pgmname R) + ABEXIT (SNAP) + DEBUG (DMAP) +
XREF (LONG) + LIST (PARM)
ENVIRONMENT DEFINITION
PARM statement customizes the operating environment for the duration of a program’s compilation & executionPARM establishes program level parameters in the following areas :
SYNTAX, COMPILE, LINK determine the mode of execution BIND, PLAN, PREPNAME, SQLID, SSID and USERID establish
parameters for SQL execution
DATA / LIBRARY DEFINITION
FILE StatementAll files and databases that the program references must be defined using the FILE statement.
FILE filename
File Type => [IS/ VIRTUAL/ DLI/
VS ([ES] [CREATE [RESET]/ UPDATE]
Device Type => [CARD/PUNCH/PRINTER/DISK/TAPE]
Record Format => [F/V/U/FB/VB/VBS]
DATA / LIBRARY DEFINITION
DEFINE StatementFields are defined in the library using DEFINE statement. Two categories of data can be defined :
1. File data
2. Working Storage data
Field names must be unique within a file or working storage. The keyword DEFINE is optional within Library section
DATA / LIBRARY DEFINITION
Basic syntax of DEFINE statement is as follows :
DEFINE field-name Location Length S/W DataFormat [MASK ( [letter] [BWZ] [lit-4])] [VALUE lit-5]
Location - specifies the location of the field’s leftmost byteLength - specifies the length of the fieldS/W - specifies the storage of the fieldDataFormat - specifies data format(A/N/P/B/U)MASK - Optional parameter specifying pattern edit mask for printing
numeric fields on a report. letter-identifier for a mask specified with lit-4
BWZ - Blank When Zerolit-4 - print edit mask (9/Z/*/-/$/X)VALUE - To initialize working storage fields to specific values
PROCESSING ACTIVITIES The activity definition section of the program contains the statements that perform the tasks of reading in, processing and writing out data. Four processing activities – PROGRAM, JOB, SORT and SCREEN.
PROGRAM is a simple top-down set of instructions which is used to initiate other activities. JOB activities read data from input files, examine and manipulate this data and write data to output files and initiate reports. SORT activities sequence the files in the order specified by parameters of this statement. SCREEN activities define screen-oriented transactions.
PROGRAM ACTIVITY
Program identifies and initiates a processing activity
PROGRAM NAME program-name [ activity ]
[USING field-name1 GIVING field-name2]
Program-name - names the processing activity
Activity - activity which is initiated by the program
Field-name1 - field to which parameter is passed from parent program
Field-name2 - field containing the parameter you return to the parent
program
PROCEDURES
ProcsSeparate modules of program code used to perform specific tasksDefined at the end of each activityLocal to the activity after which they are coded
JOB STATEMENTJOB statement identifies the files whose records are automatically provided to the program (automatic input)JOB [INPUT {file-name KEY(field-name)}…{NULL}] [START start-proc-name] [FINISH finish-proc-name] [NAME job-name] INPUT file-name - Optional parameter identifying automatic input - provides the name of the file used in automatic input KEY field-name - identifies fields used in synchronized file processing NULL - inhibits automatic input. Normally, a job is implicitly
stopped when the automatic file is exhausted. With NULL, the program continues until a STOP statement is
executed.
JOB STATEMENT JOB statement identifies the files whose records are automatically provided to the program (automatic input)
JOB [INPUT {file-name KEY(field-name)}…{NULL}]
[START start-proc-name] [FINISH finish-proc-name]
[NAME job-name]
START - The optional START start-proc-name parameter identifies a procedure to be executed during the
initiation of the JOB.
FINISH - The optional FINISH finish-proc-name parameter identifies a procedure to be executed during the
normal termination of the JOB.
NAME job-name - names the JOB activity.Used for documentation only.
JOB CONTROL FLOWReset working storageOpen I/O files[PERFORM start-proc] Step 1JOB …retrieve automatic input
IF EOF . . . Logic generated by JOBreset working storagecloses I/O files[PERFORM finish-proc]wrap-up REPORTSgo to the next JOB/SORT activity
END-IF IF …. Step 2
. . . Data examination and END-IF Manipulation statements
SORT STATEMENTSORT statement orders any file which can be processed sequentially.
SORT file-name-1 TO file-name-2 USING (field-name [D])
[BEFORE proc-name] [NAME sort-name]
file-name-1 - name of the input file to be sorted
file-name-2 - name of the sorted output file (can be the same as file-name-1 except in case of VSAM and ISAM)
USING field-name [D] - Identifies data fields of file-name-1 used as sort keys. Sub-parameter D - for descending order.
BEFORE proc-name - Optional parameter that identifies a procedure that prescreens, modifies and selects input records for the sort.
NAME sort-name- names the SORT activity.Used for documentation only
EG. OF SORT PROCEDURE*FILE PERSNL FB(150 1800) EMP# 9 5 N GROSS 94 4 P 2*FILE SORTER F 150 VIRTUAL *SORT PERSNL + TO SORTER + USING EMP# + BEFORE INCLUDE-RECS* INCLUDE-RECS. PROC IF GROSS LT 29999 SELECT END-IF END-PROC*
SCREEN PROCESSINGThe SCREEN statement defines and initiates a SCREEN activity. A SCREEN activity defines
a transaction-oriented processing activity under the control of keys pressed by the terminal operator. Statements can also be inserted in screen procedures to retrieve and maintain files and databases.
SCREEN NAME screen-name [UPPERCASE ROWCOUNT rows LINESIZE columns]
Screen-name - name of the screen. For documentation.
Rows - number of rows to be displayed on the screen
Columns - number of columns on a line
Structure of SCREEN statement
SCREEN statement
Screen declaration statements
KEYs, TITLEs, ROWs (in any order)
Screen procedures (both special-named and user-defined, in any order)
SAMPLE SCREEN
DEFINE WS-REPLY W 1 A SCREEN NAME MAIN-MENU TITLE 'Employee File Main Menu' ROW 6 COL 10 'Type an option, then press Enter.' ROW 8 COL 10 'Option ===>' WS-REPLY VALUE ('V' 'E' 'D' 'X') + ERROR 'Please type V, E, D, or X' ROW 10 COL 22 'V View employee' ROW 11 COL 22 'E Edit employee' ROW 12 COL 22 'D Delete employee' ROW 13 COL 22 'X Exit' KEY F1 NAME 'Help' IMMEDIATE KEY F3 NAME 'Exit' EXIT KEY F12 NAME 'Cancel' EXIT IMMEDIATE
|------------------------------------------------------------------------------------------------------------------------------------------------|| Employee File Main Menu |
| Type an option, then press Enter. |
| || Option ===> |
| V View employee |
| E Edit employee |
| D Delete employee |
| X Exit || || F1=Help F3=Exit F12=Cancel ||------------------------------------------------------------------------------------------------------------------------------------------------|
DECISION & BRANCHING LOGIC IF condition statements
ELSE-IF (optional) statements ELSE (optional) statements END-IF
DO WHILE / DO UNTIL conditionstatements
ENDDO
DECISION & BRANCHING LOGIC CASE field-name WHEN condition
statements OTHERWISE condition
statementsEND-CASE
GOTO {label/JOB}
PERFORM proc-name
EXECUTE job-name|sort-name|screen-name STOP [EXECUTE]
INPUT / OUTPUT SPECIFICATION
EASYTRIEVE provides three levels of I/O
Automatic
Controlled
Data base
INPUT / OUTPUT SPECIFICATON
Automatic I/O provides sequential reading of a data file and production of one or more reports. Statements supporting this level are
JOB - specifies the input file DISPLAY - produces printed o/p not directly supported by reports
PRINT - initiates report outputControlled I/O provides the capability to process any sequential or keyed file (ISAM/VSAM). Controlled I/O statements are
GET - sequentially reads one record POINT - positions to a particular record for subsequent sequential I/O PUT - sequentially writes one record READ - reads one keyed record
WRITE - rewrites, adds or deletes one keyed recordDatabase I/O provides access to IMS, DB2 and IDMS databases.
DISPLAY STATEMENT
DISPLAY [file-name] [{TITLE|NOTITLE} / SKIP lit-1 / CONTROL lit-2] [lit-3 / field-name / +lit-4 / - lit-4/ COL lit-5]
file-name - Optional parameter specifying destination of the DISPLAYED data. The
named file should be designated as a PRINTER file. The default is SYSPRINT.lit-3/field name - Specify the data to be printed+lit-4 / -lit-4 - Adjustment of horizontal spacing between displayed itemsCOL lit-5 - Specifies precisely where data is placed on the print line
PRINT STATEMENT
PRINT report-name
PRINT statement initiates report output by causing the named report to extract the current values of the fields to be output and to format them according to the specifications in the report declaratives. The next statement to be executed after the PRINT statement is the associated REPORT statement.
GET & PUT STATEMENTS
GET statement makes the next or previous sequential record of the named file available for processing.
GET file-name [PRIOR]
PUT outputs records to SEQUENTIAL files and also adds consecutive records to an INDEXED or RELATIVE file.
PUT file-name-1 [from file-name-2]
POINT STATEMENT
POINT statement initiates a search for a position within an indexed or relative record file, based on a comparison between keys in the file and a search value specified in the statement.
POINT file-name {EQ/=/GE/>=} {field-name/literal}
POINT statement only locates the specified position of the record in the file. GET statement is necessary to retrieve the data for processing.
POINT STATEMENT EXAMPLE
FILE PAYFILE VS REC-KEY 1 3 NJOB INPUT NULL POINT PAYFILE GE 500 GET PAYFILE DO WHILE (REC-KEY < 600 AND NOT EOF PAYFILE) PRINT PAY-RPT GET PAYFILE ENDDO STOPREPORT PAY-RPT …Above statements retrieve those records with keys between 500 and 599 inclusive
from file PAY-FILE and output them to report PAY-RPT.
READ STATEMENT
READ statement provides random access to keyed and relative-record VSAM and ISAM files.
READ file-name KEY field-name [STATUS]
file-name - identifies the file you wish to access
KEY field-name - search value to identify the specific record to be retrieved.
STATUS - execution of the READ statement sets a return code in the FILE-STATUS field of the input file to indicate the success or failure of the operation.
WRITE STATEMENT
WRITE statement is used in the maintenance of keyed and relative-record VSAM files. WRITE updates or deletes the current record of the named file or adds new records.WRITE file-name-1 [DELETE / UPDATE / ADD] [FROM file-name-2]
file-name-1 - Name of the file to be modified
DELETE / UPDATE / ADD - Specify the activity to be performed. Required for deleting or adding records and optional for update activity. Default is UPDATE if the parameter is not coded.
FROM file-name-2 - WRITE copies the current record of file-name-2 to file-name-1 for either an UPDATE or an ADD operation. This parameter is invalid for DELETE operation.
READ / WRITE EXAMPLE
FILE PAYFILE VS UPDATE EMPL# 1 5 N NAME 6 20 AJOB INPUT NULL EMPL# = 44152 READ PAYFILE KEY EMPL# STATUS IF FILE-STATUS NOT ZERO GOTO ERRTASK END-IF IF NAME EQ ‘OLDNAME’ NAME EQ ‘NEWNAME’ WRITE PAYFILE UPDATE END-IF STOP
REPORT PROCESSINGReports are defined by the following set of statements
REPORT
SEQUENCE
CONTROL
TITLE
HEADING
LINE
report procedures
BEFORE-BREAK
TERMINATION
SAMPLE PROGRAM REPORT DECLARATIVES
REPORT UPD-RPT PAGESIZE 51 LINESIZE 63 NODATE NOPAGE SEQUENCE DEPT LAST-NAME CONTROL DEPT TITLE 1 ‘ANNUAL UPDATE REPORT - SALARIED EMPLOYEES’ HEADING LAST-NAME ‘NAME’ HEADING SERVICE ‘SERV’ LINE DEPT LAST-NAME SERVICE RAISE SALARY
The above report is ordered by department number and within each department, by last-name. The report is segmented by department, the dollar values are subtotalled for each department. There are 5 columns spaced three characters apart across the 63-character-wide report.
REPORT TYPES
Standard format - Default format consisting of Title area, Heading area and Report Body.
PAGESIZE
Label Format - Includes mailing labels, form-letters and other special-purpose reports.
SIZE DOWN
TITLE AREAHEADING AREA
REPORT BODY
LINESIZE
LINESIZE
REPORT STATEMENT
REPORT report-name + [SUMMARY] + Format Determination Parameters
[SUMFILE sum-file-name] + [LABELS ([ACROSS lit-1] + Label Parameters [DOWN lit-2] +
[SIZE lit-3] + [NEWPAGE]] + [PRINTER file-name] + File Directing Parameters
[PAGESIZE lit-4] + Spacing control Parameters [LINESIZE lit-5] + [SPREAD] + [NOSPREAD] +
[NOADJUST] + [NODATE] +
[NOPAGE] + [LIMIT lit-6] + Testing aids Parameters [EVERY lit-7]
REPORT STATEMENT
report-name - Names the reportSUMMARY - Inhibits printing of detail data on control reports. Only quantitative
fields are totaled (those defined with decimal positions)SUMFILE sum-file-name - SUMFILE is used to generate a summary file that
contains the control and summary field values. Summary-file-name identifies the file to contain the summary data.
LABELS - ACROSS specifies the number of labels printed side-by-side across the page, DOWN specifies the number of print lines on each label, SIZE specifies the width of each label and NEWPAGE prints first line of each label at the top of a page.
PRINTER file-name - Identifies a file-name other than the default print destination
REPORT STATEMENT PAGESIZE - sets the number of print lines per pageLINESIZE - sets the number of print columns on each report lineSPREAD/NOSPREAD - Adjusts column spacing on the report.SPREAD
maximizes number of spaces between columns. NOSPREAD, the default, puts three spaces between columns and centers the report.
NOADJUST - Left justifies the report. Centering is the default.NODATE - Suppresses printing of date in the leftmost 8 columns of the report
titleNOPAGE - Suppresses printing of characters PAGE and the page number in
the rightmost 11 columns of the report titleLIMIT - Specifies the number of print statements accepted for this report. Used in
TestingEVERY - Specifies the occurrence value for processing every nth Print command
directed to the report
SEQUENCE STATEMENT
SEQUENCE field-name-1 [D] [,field-name-2 [D]] ...
Specifies the order in which the fields on the report should be ordered.
Inclusion of ‘D’ indicates the field is sequenced in descending order,
default is ascending order.
CONTROL STATEMENT
CONTROL [field-name FINAL] [NEWPAGE/RENUM] [NOPRINT]
Specifies the field name(s) on which the report should be controlled.
FINAL parameter is coded to specify options for the control break which occurs at end-of-report.
Following options alter the normal control break processing.
NEWPAGE - causes a skip to the top of the next page after control break processing for the specified field is completed.
RENUM - causes a skip to the top of the next page and resets the page number to 1 on the page following the control break.
NOPRINT - suppresses printing the summary line for the specified control break.
TITLE STATEMENT
TITLE [lit-1] {field-name, ‘lit-2’, +lit-3/-lit-3/COL lit-4}
Each title line is centered horizontally within the title area of the report. Current date is printed in leftmost 8 positions unless NODATE option is specified
on the REPORT statement.The word PAGE and page number are printed in rightmost 11 positions unless
NOPAGE option is specified on the REPORT statement.lit-1 - Specifies the position of the title line within the title area.field-name- Specifies that the contents of the named field will appear on the title
line.‘lit-2’ - Specifies a character string (enclosed in quotes) for the title item. +lit-3 / -lit-3 - Specifies the no. of characters to be added/subtracted from the
normal 3 character space between items.COL lit-4 - Specifies the column number where the 1st character of the next title
item will be printed
HEADING STATEMENT
HEADING field-name (‘literal’...)
Optionally defines an alternate column heading to be printed in place of the specified field-name.
field-name - Specifies the name of a field coded on the LINE statement. The value of the literal is the content of the new heading.
Eg. HEADING LAST-NAME ‘NAME’
Multiple literals within parentheses are stacked vertically over the column when printed.
Eg. HEADING LAST-NAME (‘EMPLOYEE’, ‘NAME’) produces EMPLOYEE NAME
LINE STATEMENT
LINE [lit-1] {field-name, ‘lit-2’, +lit-3/-lit-3/COL lit-4/POS lit-5}
LINE statement defines the contents of the lines of the report.lit-1 - Specifies the position of the line within the line group when there are
multiple lines. field-name- Specifies that the contents of the named field will appear on the print
line.‘lit-2’ - Specifies a character string (enclosed in quotes) for the line item. +lit-3 / -lit-3 - Specifies the no. of characters to be added/subtracted from the
normal 3 character space between items.COL lit-4 - Specifies the column number where the 1st character of the next line
item will be printedPOS lit-5 - Enables to position items on lines 2 thru 99 so that they line up under
specified items on line 1. lit-5 specifies the item number on line 1 under which the item is to be placed.
LINE STATEMENT EXAMPLE.
LINE 1 REGION + SSN + NAME + DOBLINE 2 POS 2 PHONE + POS 3 STREET + POS 4 DATE-OF-HIRELINE 3 POS 3 CITY -2 STATE -2 ZIP
Line 2 lists phone number under Social Security number, street address under name and date-of-hire under Date Of Birth. Line 3 lists the city, state and zip under Name and street address
o/p : SOUTHWEST 571-40-8057 Florance Smith 11-26-72 785-4815 3250 Big street 08-03-81 Riverside CA 09265
TABLE PROCESSING
A table is a collection of uniform data records. Tables have two parts : 1. The argument uniquely identifies a table entry. 2. The description is information directly associated with the argument. Tables are defined by FILE statements in the library section. TABLE option
must be coded. FILE file-name TABLE [INSTREAM / literal] The only fields defined for TABLE files are ARG (argument) and DESC
(description). ARG defines the field used to search the table. DESC defines the field which contains the desired information.
TABLE PROCESSING
There are two types of TABLEs, instream and external.
Instream Tables reside within your program, they are established for use when the program is compiled. Instream table data is coded immediately following the FILE statement. The word ENDTABLE indicates end of table data.
External Tables are stored on files external to the program, they are established for use during initiation of the JOB activity that contains the SEARCH statement which references them.
INSTREAM TABLE EXAMPLE
FILE WEEKDAY TABLE INSTREAM ARG 1 1 A DESC 3 9 A1 SUNDAY2 MONDAY3 TUESDAY4 WEDNESDAY5 THURSDAY6 FRIDAY7 SATURDAYENDTABLE
SEARCH STATEMENT
SEARCH statement is used to access table information.SEARCH file-name WITH field-name-1 GIVING field-name-2
file-name - name of the file which describes the table and its source.
WITH field-name-1 - This parameter identifies the field that contains the search argument. Field-name-1 can be defined in Working storage or in any file except a file with TABLE attribute.
GIVING field-name-2 - This parameter identifies the receiving field for the results of the table search. This field can be defined in Working storage or in any file except a file with TABLE attribute
TABLE SEARCH OPERATION
FILE CALENDAR DAY-OF-WEEK 12 1 A NAME-OF-DAY 14 20 AFILE WEEKDAY TABLE INSTREAM ARG 1 1 A DESC 3 9 A1 SUNDAY2 MONDAY3 TUESDAY4 WEDNESDAY5 THURSDAY6 FRIDAY7 SATURDAYENDTABLEJOB INPUT CALENDAR SEARCH WEEKDAY WITH DAY-OF-WEEK GIVING NAME-OF-DAY IF WEEKDAY DISPLAY NAME-OF-DAY, ‘IS DAY’, DAY-OF-WEEK ELSE DISPLAY ‘****INVALID DAY OF WEEK = ’, DAY-OF-WEEK END-IF
SYNCHRONIZED FILE PROCESSING
Easytrieve simplifies combining data from more than one file.
Has the capacity to synchronize any number of files which can be processed sequentially.
SYNCHRONIZED FILE PROCESSING EG.
FILE PERSNL FB(150 1800) OLD-EMP# 9 5 N *FILE PERSUPD EMP# 1 5 N RAISE-PERCENT 7 2 N*FILE SORTPER F 150 VIRTUAL UPD-EMP# 9 5 N NAME 17 8 A PAY-GROSS 94 4 P 2*
NEWSAL W 4 P 2*FILE NEWPERS FB(150 1800)*FILE ERRPRINT PRINTER*
SYNCHRONIZED FILE PROCESSING
EG.SORT PERSNL TO SORTPER USING OLD-EMP#JOB INPUT (SORTPER KEY(UPD-EMP#) PERSUPD KEY (EMP#) )IF MATCHED NEWSAL = PAY-GROSS * (1 + RAISE-PERCENT /100) PRINT NEW-RPT PAY-GROSS = NEW-SALEND-IFIF SORTPER PUT NEWPERS FROM SORTPERELSE DISPLAY ERRPRINT EMP# ‘RECORD NOT MATCHED’END-IFREPORT NEW-RPT LINESIZE 80 NOPAGE NODATE SEQUENCE NAME TITLE ‘SALARY UPDATE REPORT’ LINE UPD-EMP# NAME PAY-GROSS NEWSAL RAISE-PERCENTEND
Sanjay x 4157
Kiran x 4155
Deepa x 4153