paint-brush
Writing Data With COBOLby@delmipitta_0v08l7ko
113 reads

Writing Data With COBOL

by Delmi PittaNovember 8th, 2024
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

My experience learning COBOL. In this tutorial, I'll show you how to add indexed information to a file.
featured image -  Writing Data With COBOL
Delmi Pitta HackerNoon profile picture


Hey devs! I am Delmi Pitta from Dominican Republic and I am trying to learn about COBOL and I have to say that this has been a beautiful journey. COBOL is easy to learn, maybe if you have information about better process than this please let me know.


This program shows how we can add indexed information to a file, ‘data.dat’. This is the file type I have used on this COBOL program and this was written on opeCobolIDE from gnuCobol.


    IDENTIFICATION DIVISION.
       PROGRAM-ID. Filing.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
*> THIS PART CONNECT US WITH FILES 'DATA.DAT'
        SELECT EMPLOYEES ASSIGN TO 'DATA.DAT'
            ORGANIZATION IS INDEXED
            ACCESS MODE IS DYNAMIC
            RECORD KEY IS FS-ID.

       DATA DIVISION.
       FILE SECTION.
*> THIS PART MODIFY THE 'DATA.DAT' ABOVE
       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).
       01 FILE-STATUS              PIC XX.

       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.

       IF WS-IF-PROCEDURE = 'W' OR WS-IF-PROCEDURE = 'w' THEN
        PERFORM UNTIL WS-PERFORM-PROCEDURE = 'N'
        OPEN I-O EMPLOYEES
            DISPLAY 'WHAT IS THE EMPLOYEE ID NUMBER?'
            ACCEPT FS-ID
            *> VerifY IF THE ID ALREADY EXIST OPENING A READ TAG
               READ EMPLOYEES
                   INVALID KEY

            *> Prompt user for additional information if ID is available
            DISPLAY 'WHAT IS THE EMPLOYEE NAME?'
            ACCEPT FS-NAME
            DISPLAY 'WHAT IS THE EMPLOYEE LAST NAME?'
            ACCEPT FS-LAST-NAME
            DISPLAY 'WHAT IS THE EMPLOYEE PHONE NUMBER?'
            ACCEPT FS-PHONE-NUM
            DISPLAY 'WHAT IS THE EMPLOYEE EMAIL ADDRESS?'
            ACCEPT FS-EMAIL
            DISPLAY 'WHAT IS THE EMPLOYEE SALARY?'
            ACCEPT FS-SALARY
            DISPLAY 'WHAT IS THE EMPLOYEE SOCIAL NUMBER?'
            ACCEPT FS-SOCIAL-NUMBER
            DISPLAY 'WHAT IS THE EMPLOYEE OCCUPATION?'
            ACCEPT FS-OCCUPATION
            DISPLAY 'WHAT IS THE EMPLOYEE SCHEDULE?'
            ACCEPT FS-SCHEDULE

            *> Write the new record to the file
            
            WRITE EMPLOYEES-RECORD
      *>       PROTECT THE CURRENT INFORMATION FRON NEWEST
                INVALID KEY
        MOVE 'ERROR: RECORD COULD NOT BE WRITTEN' TO WS-ERROR-PROCEDURE
                    DISPLAY WS-ERROR-PROCEDURE
                NOT INVALID KEY
                    DISPLAY 'Record successfully added!'
             NOT INVALID KEY
      *>                  IF THE ID ALREADY EXIST WILL SHOW THIS
          MOVE 'ERROR: EMPLOYEE ID ALREADY EXISTS' TO WS-ERROR-PROCEDURE
                       DISPLAY WS-ERROR-PROCEDURE
      *>                  CLOSE THE READ PROCESS
           END-READ

      *>      TO REPEAT THE BUCLE
            DISPLAY 'WOULD YOU LIKE TO ADD ANOTHER RECORD? (Y/N)'
            ACCEPT WS-PERFORM-PROCEDURE
            
      *>      IT IS MANDATORY TO CLOSE THE FILE TO CONTINUE WITH PROGRAM
            CLOSE EMPLOYEES
        END-PERFORM
       END-IF.

       STOP RUN.

       END PROGRAM Filing.


If you execute this program on windows it will show you different question about employees you will be able to fill and save.


In the next program I will show you how to read that saved information on your console.


####Remember this program works on the console or terminal.


READ THE COMMENT ARE WITH ‘*>’.


PLEASE FOLLOW ME, RESPOND AND SHARE THIS.