Hey hackernooners! I finished a simple COBOL program to read information from a file; it can manage errors
and show the requested information on the console.
Here it is:
IDENTIFICATION DIVISION.
PROGRAM-ID. Filing.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT EMPLOYEES ASSIGN TO 'DATA.DAT'
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS FS-ID.
DATA DIVISION.
FILE SECTION.
FD EMPLOYEES.
01 EMPLOYEES-RECORD.
05 FS-ID PIC 9(11).
05 FS-NAME PIC X(10).
05 FS-LAST-NAME PIC X(10).
05 FS-PHONE-NUM PIC 9(11).
05 FS-SALARY PIC 9(4).
05 FS-SOCIAL-NUMBER PIC 9(11).
05 FS-OCCUPATION PIC X(30).
05 FS-SCHEDULE PIC X(30).
05 FS-EMAIL PIC X(30).
WORKING-STORAGE SECTION.
01 WS-IF-PROCEDURE PIC X(1).
01 WS-PERFORM-PROCEDURE PIC X(1).
01 WS-ERROR-PROCEDURE PIC X(50).
PROCEDURE DIVISION.
BEGIN.
DISPLAY 'PLEASE CHOOSE AN OPTION BELOW: WRITE(W) READ(R)'.
DISPLAY 'WHAT DO YOU WANT TO DO? DELETE(D) MODIFY(M)'.
ACCEPT WS-IF-PROCEDURE.
*> BE CAREFUL WHEN YOU ASK A USER TO WRITE 'LOWERCASE AND UPPERCASE'
IF WS-IF-PROCEDURE = 'R' OR WS-IF-PROCEDURE = 'r' THEN
*> THIS BUCLE WILL REPEAT UNTIL THE USER WRITE 'N'
PERFORM UNTIL WS-PERFORM-PROCEDURE = 'N'
*> WE OPEN THE FILE WITH OPEN I-O
OPEN I-O EMPLOYEES
*> WE WIRTE THE MAIN KEY TO FIND IT
DISPLAY 'WHAT IS THE EMPLOYEE ID NUMBER?'
ACCEPT FS-ID
*> WE READ THE FILE
READ EMPLOYEES
KEY IS fs-id
INVALID KEY
*> IF THERE IS NOT A FILE ASOCIATED WITH THE ID WE CAN SHOW THIS
DISPLAY 'WRONG ID OR USER DOES NOT EXIST, TRY IT AGAIN'
MOVE 'y' TO WS-PERFORM-PROCEDURE
*> IF THE FILE EXIST WE CAN PROCEDE READING
NOT INVALID KEY
*> HERE WE WRITE EVERYTHIN WE WANT TO DISPLAY ON THE CONSOLE
DISPLAY 'RECORD FOUND: '
DISPLAY 'ID: ' FS-ID
DISPLAY 'NAME: ' FS-NAME
DISPLAY 'LAST NAME: ' FS-LAST-NAME
DISPLAY 'SOCIAL NUMBER: ' FS-SOCIAL-NUMBER
DISPLAY'----COMMUNICATION ZONE----'
DISPLAY'EMPLOYEE PHONE NUMBER: ' FS-PHONE-NUM
DISPLAY'EMAIL ADDRESS: ' FS-EMAIL
DISPLAY'---EMPLOEE PAYMENT INFORMATION---'
DISPLAY'OCCUPATION: ' FS-OCCUPATION
DISPLAY'SALARY : ' FS-SALARY
DISPLAY'---EMPLOEE SCHEDULE---'
DISPLAY'SCHEDULE ' FS-SCHEDULE
END-READ
*> IT IS MANDATORY TO CLOSE THE FILE TO CONTINUE WITH PROGRAM
CLOSE EMPLOYEES
*> HERE WE CAN REPEAT THE BUCLE.
*> IF WE SELECT Y THE PROCCESS START AGAIN
*> BUT IF WE SELECT N THE PROCCESS STOP
DISPLAY'WOULD YOU LIKE TO READ ANOTHER FILE? Y/N'
ACCEPT WS-PERFORM-PROCEDURE
END-PERFORM
END-IF.
STOP RUN.
END PROGRAM Filing.
This is the main code you can execute on your openCobolIDE or gnuCobol. If there is an error, the system will show you this information below.