Below program parses a string that contains 3 words which are separated by space.
FULL-NAME contains ‘KARTHIK KAR THIK’, which is split into First name, Middle name and Last name.
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
DEFINE IND1 W 3 N VALUE 1
DEFINE IND2 W 3 N VALUE 1
DEFINE FLAG W 1 N VALUE 1
DEFINE FULL-NAME W 30 A VALUE 'KARTHIK KAR THIK'
DEFINE FIRST-NAME W 15 A
DEFINE MID-NAME W 15 A
DEFINE LAST-NAME W 15 A
DEFINE FULL-NAME-ARRAY FULL-NAME 1 A OCCURS 30
DEFINE FIRST-NAME-ARRAY FIRST-NAME 1 A.OCCURS 15
DEFINE MID-NAME-ARRAY MID-NAME 1 A OCCURS 15
DEFINE LAST-NAME-ARRAY LAST-NAME 1 A OCCURS 15
JOB INPUT NULL
DO WHILE IND1 LE 30
IF FULL-NAME-ARRAY(IND1) NE ' '
CASE FLAG
WHEN 1
MOVE FULL-NAME-ARRAY(IND1) TO FIRST-NAME-ARRAY(IND2)
WHEN 2
MOVE FULL-NAME-APRAY(IND1) TO MID-NAME-ARRAY(IND2)
WHEN 3
MOVE FULL-NAME-ARRAY(IND1) TO LAST-NAME-ARRAY(IND2)
END-CASE
IND2 = IND2 + 1
ELSE
IND2 = 1
FLAG = FLAG + 1
END-IF
IND1 = IND1 + 1
END-DO
DISPLAY FIRST-NAME
DISPLAY MID-NAME
DISPLAY LAST-NAME
STOP
Output will be,
Below sample COBOL program explains how to PERFORM a SECTION.
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
IDENTIFICATION DIVISION.
PROGRAM-ID. KARTEST5.
* perform a SECTION
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
PERFORM MY-SECTION.
GOBACK.
MY-SECTION SECTION.
DISPLAY 'INSIDE MY-SECTION'
EXIT.
Output of this program will be
Below sample COBOL program explains the IF ELSE END-IF statement. You can avoid using END-IF by using dot (‘.’) as scope terminator. But it is not a good practice. better, always code a END-IF statement as scope terminator.
‘THEN’ is optional. If you want, THEN you can use it.
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
IDENTIFICATION DIVISION.
PROGRAM-ID. KARTEST4.
* IF statement in cobol
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-NUMBER PIC 9(2) VALUE 2.
PROCEDURE DIVISION.
* simple IF statement
IF MY-NUMBER = 2
DISPLAY 'TWO'
END-IF
* IF ELSE statement
IF MY-NUMBER IS EQUAL TO 2 THEN
DISPLAY 'TWO'
ELSE
DISPLAY 'NOT TWO'
END-IF
* nested IF ELSE statement
IF MY-NUMBER = 1
DISPLAY 'ONE'
ELSE
IF MY-NUMBER = 2
DISPLAY 'TWO'
ELSE
DISPLAY 'NEITHER ONE NOR TWO'
END-IF
END-IF
GOBACK.
Output of this program will be
Complete syntax of IF Command (COBOL)
Working Storage section comes under DATA division. Different datatypes of COBOL are explained here.
Below sample cobol program declares and Displays a working storage variable named ‘MY-STRING’.
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
IDENTIFICATION DIVISION.
PROGRAM-ID. KARTEST3.
* define and use a working storage variable
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 MY-STRING PIC X(20) VALUE 'HELLO WORLD ! '.
PROCEDURE DIVISION.
DISPLAY MY-STRING.
GOBACK.
Output of this program will be
Below sample cobol program has the minimal set of statements required. It contains all the four divisions and PROGRAM-ID is a mandatory statement which will have the program name.
IDENTIFICATION DIVISION
ENVIRONMENT DIVISION
DATA DIVISION
PROCEDURE DIVISION
Divisions – > Section –> Paragraph –> Statement.
----+----1----+----2----+----3----+----4----+----5----+----6----+----7--
IDENTIFICATION DIVISION.
PROGRAM-ID. KARTEST2.
ENVIRONMENT DIVISION.
DATA DIVISION.
PROCEDURE DIVISION.
DISPLAY 'HELLO WORLD ! ' .
GOBACK.
Output of this program will be
If you want to continue any statement to multiple lines, use PLUS (+) at the end of each line until the statement is complete.
LIST ON
JOB INPUT NULL
DISPLAY '1ST LINE' +
'2ND LINE' +
'AND 3RD LINE'
STOP
*
IF ELSE ENDIF statement in Easytrieve is similar to how we do in COBOL.
Below are some sample programs that will help you understand.
LIST ON
DEFINE WS-FIVE W 5 N VALUE 5
JOB INPUT NULL
IF WS-FIVE EQ 5
DISPLAY 'WS-FIVE IS 5'
END-IF
STOP
LIST ON
DEFINE WS-FIVE W 5 N VALUE 5
JOB INPUT NULL
IF WS-FIVE EQ 5
DISPLAY 'WS-FIVE IS 5'
ELSE
DISPLAY 'WS-FIVE IS NOT 5'
END-IF
STOP
LIST ON
DEFINE WS-NUM W 5 N VALUE 6
JOB INPUT NULL
IF WS-NUM EQ 5
DISPLAY 'WS-NUM IS 5'
ELSE
IF WS-NUM EQ 6
DISPLAY 'WS-NUM IS 6'
ELSE
DISPLAY 'WS-NUM IS NOT 5 OR 6'
END-IF
END-IF
STOP
Comment lines need to start with an asterisk ( * ). There is no multi line comments in Easytrieve. For every comment line, you need to have * as the first non-blank character.
example:
LIST ON
JOB INPUT NULL
* this a comment
* this is another comment line
DISPLAY 'THIS IS NOT A COMMENT'
STOP
*
SYSDATE and SYSTEM are keywords in Easytrieve that will return Current System date and System time respectively.
LIST ON
JOB INPUT NULL
DISPLAY SYSDATE
DISPLAY SYSTIME
STOP
*
Output will be