Showing posts with label COBOL. Show all posts
Showing posts with label COBOL. Show all posts

Friday, September 27, 2019

Cobol Program to Convert Gregorian Date to Julian Date For Any Input Year

IDENTIFICATION DIVISION.
PROGRAM-ID. MACJUL.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A. 
          05 A1 PIC 9999.
          05 A2 PIC 99.
          05 A3 PIC 99.
01 B.
          05 B1 PIC 9999.
          05 B2 PIC 999.
01 C PIC 9 VALUE 2.
PROCEDURE DIVISION.
0001.
         DISPLAY "ENTER GREGORIAN DATE (YYYYMMDD):".
         ACCEPT A.
         IF A NOT NUMERIC OR A2 > 12 OR A3 > 31
         DISPLAY "INVALID DATE" GO 0001.
         MOVE A1 TO B1.
         COMPUTE B2 = A3.
         IF A2 = 12 ADD 30 TO B2 SUBTRACT 1 FROM A2.
         IF A2 = 11 ADD 31 TO B2 SUBTRACT 1 FROM A2.
         IF A2 = 10 ADD 30 TO B2 SUBTRACT 1 FROM A2.
         IF A2 = 9 ADD 31 TO B2 SUBTRACT 1 FROM A2.
         IF A2 = 8 ADD 31 TO B2 SUBTRACT 1 FROM A2.
         IF A2 = 7 ADD 30 TO B2 SUBTRACT 1 FROM A2.
         IF A2 = 6 ADD 31 TO B2 SUBTRACT 1 FROM A2.
         IF A2 = 5 ADD 30 TO B2 SUBTRACT 1 FROM A2.
         IF A2 = 4 ADD 31 TO B2 SUBTRACT 1 FROM A2.
         IF A2 = 3 ADD 28 TO B2 SUBTRACT 1 FROM A2
         DIVIDE A1 BY 4 GIVING A1 REMAINDER C
         IF C = 0 ADD 1 TO B2.
         IF A2 = 2 ADD 31 TO B2.
         DISPLAY " ".
         DISPLAY "JULION DATE IS(YYYYDDD):".
         DISPLAY B1 ":" B2.
         STOP RUN.

Sunday, September 8, 2019

COBOL program to appending records at end in KSDS

       ID DIVISION.
       PROGRAM-ID. FILEOPEN.
      ****************************************************************
      ***   APPENDING RECORDS AT THE END IN KSDS                    ****************************************************************
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INFILE ASSIGN TO DD1
           ORGANIZATION INDEXED
           ACCESS MODE IS SEQUENTIAL
           RECORD KEY IS ENO
           FILE STATUS IS INFL-ST.
       DATA DIVISION.
       FILE SECTION.
       FD INFILE.
       01 INREC.
         04 ENO PIC X(4).
         04 ENAME PIC X(8).
         04 EMOB PIC X(10).
         04 FILLER PIC X(58).
       WORKING-STORAGE SECTION.
       01 INFL-ST PIC X(2).
       88 INFL-OK VALUE '00'.
       88 END-INFL VALUE '10'.
       PROCEDURE DIVISION.
       000-MAIN.
           DISPLAY 'FILE READING STARTS'.
           PERFORM 100-OPEN-PARA
           THRU 100-OPEN-PARA-EXIT
           PERFORM 200-PROCESS-PARA
           THRU 200-PROCESS-PARA-EXIT
           PERFORM 300-CLOSE-PARA
           THRU 300-CLOSE-PARA-EXIT
           PERFORM 999-STOP-RUN
           THRU 999-STOP-RUN-EXIT.
       000-EXIT.
           EXIT.
       100-OPEN-PARA.
           OPEN EXTEND INFILE
           IF INFL-OK
           DISPLAY 'INFILE OPENING SUCCESFULLY'
           ELSE
           DISPLAY 'ERROR OPENING INFILE:' INFL-ST
           PERFORM 999-STOP-RUN
           THRU 999-STOP-RUN-EXIT
           END-IF.
       100-OPEN-PARA-EXIT.
           EXIT.
       200-PROCESS-PARA.
           MOVE '1005' TO ENO
           MOVE ' ABCDEFGH ' TO ENAME
           MOVE '0002334455' TO EMOB
           WRITE INREC.
       200-PROCESS-PARA-EXIT.
           EXIT.
       300-CLOSE-PARA.
           CLOSE INFILE
           IF INFL-OK
           DISPLAY 'INFILE CLOSE SUCCESSFULLY'
           ELSE
           DISPLAY 'ERROR CLOSE SUCCESSFULLY' INFL-ST
           GO TO 300-CLOSE-PARA-EXIT
           END-IF.
       300-CLOSE-PARA-EXIT.
           EXIT.
       999-STOP-RUN.
           DISPLAY 'PROGRAM READING ENDED'
           STOP RUN.
       999-STOP-RUN-EXIT.
           EXIT.

COBOL program to REWRITING records in KSDS

       ID DIVISION.
       PROGRAM-ID. FILEOPEN.
      ***************************************************************
     ***   REWRITING RECORDS IN KSDS                               ****************************************************************
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INFILE ASSIGN TO DD1
           ORGANIZATION IS INDEXED
           ACCESS MODE IS SEQUENTIAL
           RECORD KEY IS ENO
           FILE STATUS IS INFL-ST.
       DATA DIVISION.
       FILE SECTION.
       FD INFILE.
       01 INREC.
          04 ENO PIC X(4).
          04 ENAME PIC X(8).
          04 EMOB PIC X(10).
          04 FILLER PIC X(58).
       WORKING-STORAGE SECTION.
       01 INFL-ST PIC X(2).
       88 INFL-OK VALUE '00'.
       88 END-INFL VALUE '10'.
       PROCEDURE DIVISION.
       000-MAIN.
           DISPLAY 'FILE READING STARTS'.
           PERFORM 100-OPEN-PARA
           THRU 100-OPEN-PARA-EXIT
           PERFORM 200-PROCESS-PARA
           THRU 200-PROCESS-PARA-EXIT
           PERFORM 300-CLOSE-PARA
           THRU 300-CLOSE-PARA-EXIT.
       000-EXIT.
           EXIT.
       100-OPEN-PARA.
           OPEN I-O INFILE
           IF INFL-OK
           DISPLAY 'INFILE OPENING SUCCESFULLY'
           ELSE
           DISPLAY 'ERROR OPENING INFILE:' INFL-ST
           END-IF.
       100-OPEN-PARA-EXIT.
           EXIT.
       200-PROCESS-PARA.
           READ INFILE
           AT END
           DISPLAY 'INVALID KEY'
           NOT AT END
           IF ENAME = ' ANIL '
           MOVE ' RATN ' TO ENAME
           REWRITE INREC
           DISPLAY INREC
           END-IF
           END-READ.
       200-PROCESS-PARA-EXIT.
           EXIT.
       300-CLOSE-PARA.
           CLOSE INFILE
           IF INFL-OK
           DISPLAY 'INFILE CLOSE SUCCESSFULLY'
           ELSE
           DISPLAY 'ERROR CLOSE SUCCESSFULLY' INFL-ST
           GO TO 300-CLOSE-PARA-EXIT
           END-IF.
       300-CLOSE-PARA-EXIT.
           EXIT.
       999-STOP-RUN-EXIT.
           STOP RUN.
           EXIT.
       999-STOP-RUN-EXIT.
           EXIT.

COBOL program to Delete the records from KSDS

       ID DIVISION.
       PROGRAM-ID. FILEOPEN.
      *****************************************************************
      ***   DELETING  RECORDS FROM KSDS                             *****************************************************************
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INFILE ASSIGN TO DD1
           ORGANIZATION INDEXED
           ACCESS MODE IS SEQUENTIAL
           RECORD KEY IS ENO
           FILE STATUS IS INFL-ST.
       DATA DIVISION.
       FILE SECTION.
       FD INFILE.
       01 INREC.
         04 ENO PIC X(4).
         04 ENAME PIC X(8).
         04 EMOB PIC X(10).
         04 FILLER PIC X(58).
       WORKING-STORAGE SECTION.
       01 INFL-ST PIC X(2).
       88 INFL-OK VALUE '00'.
       88 END-INFL VALUE '10'.
       PROCEDURE DIVISION.
       000-MAIN.
           DISPLAY 'FILE READING STARTS'.
           PERFORM 100-OPEN-PARA
           THRU 100-OPEN-PARA-EXIT
           PERFORM 200-PROCESS-PARA
           THRU 200-PROCESS-PARA-EXIT
           PERFORM 300-CLOSE-PARA
           THRU 300-CLOSE-PARA-EXIT
           PERFORM 999-STOP-RUN
           THRU 999-STOP-RUN-EXIT.
       000-EXIT.
           EXIT.
       100-OPEN-PARA.
           OPEN I-O INFILE
           IF INFL-OK
           DISPLAY 'INFILE OPENING SUCCESFULLY'
           ELSE
           DISPLAY 'ERROR OPENING INFILE:' INFL-ST
           PERFORM 999-STOP-RUN
           THRU 999-STOP-RUN-EXIT
           END-IF.
       100-OPEN-PARA-EXIT.
           EXIT.
       200-PROCESS-PARA.
           READ INFILE NEXT RECORD
           AT END
           DISPLAY 'INVALID KEY'
           NOT AT END
           IF ENAME = ' RATNESH '
           DELETE INFILE
           DISPLAY INREC
           END-IF
           END-READ.
       200-PROCESS-PARA-EXIT.
           EXIT.
       300-CLOSE-PARA.
           CLOSE INFILE
           IF INFL-OK
           DISPLAY 'INFILE CLOSE SUCCESSFULLY'
           ELSE
           DISPLAY 'ERROR CLOSE SUCCESSFULLY' INFL-ST
           GO TO 300-CLOSE-PARA-EXIT
           END-IF.
       300-CLOSE-PARA-EXIT.
           EXIT.
       999-STOP-RUN.
           DISPLAY 'PROGRAM READING ENDED'
           STOP RUN.
       999-STOP-RUN-EXIT.
           EXIT.

COBOL program to reading records dynamically from KSDS

       ID DIVISION.
       PROGRAM-ID. FILEOPEN.
      *****************************************************************
      ***   READING  RECORDS  DYNAMICLLY FROM KSDS                  ***
      *****************************************************************
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INFILE ASSIGN TO DD1
           ORGANIZATION INDEXED
           ACCESS MODE IS DYNAMIC
           RECORD KEY IS ENO
           FILE STATUS IS INFL-ST.
       DATA DIVISION.
       FILE SECTION.
       FD INFILE.
       01 INREC.
         04 ENO PIC X(4).
         04 ENAME PIC X(4).
         04 EMOB PIC X(10).
         04 FILLER PIC X(62).
       WORKING-STORAGE SECTION.
       01 INFL-ST PIC X(2).
       88 INFL-OK VALUE '00'.
       88 END-INFL VALUE '10'.
       PROCEDURE DIVISION.
       000-MAIN.
           DISPLAY 'FILE READING STARTS'.
           PERFORM 100-OPEN-PARA
           THRU 100-OPEN-PARA-EXIT
           PERFORM 200-PROCESS-PARA
           THRU 200-PROCESS-PARA-EXIT
           PERFORM 300-CLOSE-PARA
           THRU 300-CLOSE-PARA-EXIT
           PERFORM 999-STOP-RUN
           THRU 999-STOP-RUN-EXIT.
       000-EXIT.
           EXIT.
       100-OPEN-PARA.
           OPEN INPUT INFILE
           IF INFL-OK
           DISPLAY 'INFILE OPENING SUCCESFULLY'
           ELSE
           DISPLAY 'ERROR OPENING INFILE:' INFL-ST
           PERFORM 999-STOP-RUN
           THRU 999-STOP-RUN-EXIT
           END-IF.
       100-OPEN-PARA-EXIT.
           EXIT.
       200-PROCESS-PARA.
           ACCEPT ENO
           START INFILE
           KEY IS EQUAL TO ENO
           INVALID KEY
           DISPLAY 'INVALID KEY'
           NOT INVALID KEY
           DISPLAY 'READING POSITION STARTED'
           GO TO 220-RR-PARA
           END-START.
       200-PROCESS-PARA-EXIT.
           EXIT.
       220-RR-PARA.
           READ INFILE NEXT RECORD
           AT END
           GO TO 220-RR-PARA-EXIT
           NOT AT END
           DISPLAY INREC
           GO TO 220-RR-PARA
           END-READ.
       220-RR-PARA-EXIT.
           EXIT.
       300-CLOSE-PARA.
           CLOSE INFILE
           IF INFL-OK
           DISPLAY 'INFILE CLOSE SUCCESSFULLY'
           ELSE
           DISPLAY 'ERROR CLOSE SUCCESSFULLY' INFL-ST
           GO TO 300-CLOSE-PARA-EXIT
           END-IF.
       300-CLOSE-PARA-EXIT.
           EXIT.
       999-STOP-RUN.
           DISPLAY 'PROGRAM READING ENDED'
           STOP RUN.
       999-STOP-RUN-EXIT.
           EXIT.

COBOL program to reading the records randomly from KSDS

       ID DIVISION.
       PROGRAM-ID. FILEOPEN.
      *****************************************************************
      ***   READING  RECORDS  RANDOMLY FROM KSDS                    ***
      *****************************************************************
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INFILE ASSIGN TO DD1
           ORGANIZATION INDEXED
           ACCESS MODE IS RANDOM
           RECORD KEY IS ENO
           FILE STATUS IS INFL-ST.
       DATA DIVISION.
       FILE SECTION.
       FD INFILE.
       01 INREC.
         04 ENO PIC X(4).
         04 ENAME PIC X(4).
         04 EMOB PIC X(10).
         04 FILLER PIC X(62).
       WORKING-STORAGE SECTION.
       01 INFL-ST PIC X(2).
       88 INFL-OK VALUE '00'.
       88 END-INFL VALUE '10'.
       PROCEDURE DIVISION.
       000-MAIN.
           DISPLAY 'FILE READING STARTS'.
           PERFORM 100-OPEN-PARA
           THRU 100-OPEN-PARA-EXIT
           PERFORM 200-PROCESS-PARA
           THRU 200-PROCESS-PARA-EXIT
           PERFORM 300-CLOSE-PARA
           THRU 300-CLOSE-PARA-EXIT
           PERFORM 999-STOP-RUN
           THRU 999-STOP-RUN-EXIT.
       000-EXIT.
           EXIT.
       100-OPEN-PARA.
           OPEN INPUT INFILE
           IF INFL-OK
           DISPLAY 'INFILE OPENING SUCCESFULLY'
           ELSE
           DISPLAY 'ERROR OPENING INFILE:' INFL-ST
           PERFORM 999-STOP-RUN
           THRU 999-STOP-RUN-EXIT
           END-IF.
       100-OPEN-PARA-EXIT.
           EXIT.
       200-PROCESS-PARA.
           ACCEPT ENO
           READ INFILE
           KEY IS ENO
           INVALID KEY
           DISPLAY 'INVALID KEY'
           NOT INVALID KEY
           DISPLAY INREC
           END-READ.
       200-PROCESS-PARA-EXIT.
           EXIT.
       300-CLOSE-PARA.
           CLOSE INFILE
           IF INFL-OK
           DISPLAY 'INFILE CLOSE SUCCESSFULLY'
           ELSE
           DISPLAY 'ERROR CLOSE SUCCESSFULLY' INFL-ST
           GO TO 300-CLOSE-PARA-EXIT
           END-IF.
       300-CLOSE-PARA-EXIT.
           EXIT.
       999-STOP-RUN.
           DISPLAY 'PROGRAM READING ENDED'
           STOP RUN.
       999-STOP-RUN-EXIT.
           EXIT.

COBOL program to reading the records sequentially from KSDS VSAM

                ID DIVISION.
       PROGRAM-ID. FILEOPEN.
      *****************************************************************
      ***   READING  RECORDS  SEQUENTIALLY FROM KSDS          
*****************************************************************
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INFILE ASSIGN TO DD1
           ORGANIZATION INDEXED
           ACCESS MODE IS SEQUENTIAL
           RECORD KEY IS ENO
           FILE STATUS IS INFL-ST.
       DATA DIVISION.
       FILE SECTION.
       FD INFILE.
       01 INREC.
         04 ENO PIC X(4).
         04 ENAME PIC X(8).
         04 EMOB PIC X(10).
         04 FILLER PIC X(58).
       WORKING-STORAGE SECTION.
       01 INFL-ST PIC X(2).
       88 INFL-OK VALUE '00'.
       88 END-INFL VALUE '10'.
       PROCEDURE DIVISION.
       000-MAIN.
           DISPLAY 'FILE READING STARTS'.
           PERFORM 100-OPEN-PARA
             THRU 100-OPEN-PARA-EXIT
           PERFORM 200-PROCESS-PARA
             THRU 200-PROCESS-PARA-EXIT UNTIL END-INFL
           PERFORM 300-CLOSE-PARA
             THRU 300-CLOSE-PARA-EXIT
           PERFORM 999-STOP-RUN
             THRU 999-STOP-RUN-EXIT.
       000-EXIT.
           EXIT.
       100-OPEN-PARA.
           OPEN INPUT INFILE
           IF INFL-OK
           DISPLAY 'INFILE OPENING SUCCESFULLY'
           ELSE
           DISPLAY 'ERROR OPENING INFILE:' INFL-ST
           PERFORM 999-STOP-RUN
           THRU 999-STOP-RUN-EXIT
           END-IF.
       100-OPEN-PARA-EXIT.
           EXIT.
       200-PROCESS-PARA.
           READ INFILE
           AT END
           DISPLAY 'REACHED END'
           NOT AT END
           DISPLAY INREC
           GO TO 200-PROCESS-PARA
           END-READ.
       200-PROCESS-PARA-EXIT.
           EXIT.
       300-CLOSE-PARA.
           CLOSE INFILE
           IF INFL-OK
           DISPLAY 'INFILE CLOSE SUCCESSFULLY'
           ELSE
           DISPLAY 'ERROR CLOSE SUCCESSFULLY' INFL-ST
           GO TO 300-CLOSE-PARA-EXIT
           END-IF.
       300-CLOSE-PARA-EXIT.
           EXIT.
       999-STOP-RUN.
           DISPLAY 'PROGRAM READING ENDED'
           STOP RUN.
       999-STOP-RUN-EXIT.
           EXIT.

How to call COBOL subprogram from main Program (Static and Dynamic)

Static Call

Main Program:

        IDENTIFICATION DIVISION.
        PROGRAM-ID. MAINPGM1
        DATA DIVISION.
        WORKING-STORAGE SECTION.
        01 B PIC X(5).
        PROCEDURE DIVISION.
            MOVE 'RAMAK' TO B.
            DISPLAY 'MAIN' B.
            CALL 'SUBPGM' USING BY REFERENCE B.
            DISPLAY 'MAIN' B.
            STOP RUN.


Sub Program:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. SUBPGM.
       DATA DIVISION.
       LINKAGE SECTION.
       01 A PIC X(5).
       PROCEDURE DIVISION USING A.
           MOVE 'ROHIT' TO A.
           DISPLAY A.
           GOBACK.


Dynamic call

Main Program:

        IDENTIFICATION DIVISION.
        PROGRAM-ID. MAINPGM2.
        DATA DIVISION.
        WORKING-STORAGE SECTION.
        01 B PIC X(5).
        01 PGM PIC X(6).
        PROCEDURE DIVISION.
            MOVE 'VISHU' TO B.
            DISPLAY 'MAIN' B.
            ACCEPT PGM.
            CALL PGM USING BY REFERENCE B.
            DISPLAY 'MAIN' B.
            STOP RUN.

Sub Program:

       IDENTIFICATION DIVISION.
       PROGRAM-ID. SUBPGM.
       DATA DIVISION.
       LINKAGE SECTION.
       01 A PIC X(5).
       PROCEDURE DIVISION USING A.
           MOVE 'ROHIT' TO A.
           DISPLAY A.
           GOBACK.

COBOL program for MERGE files

      ID DIVISION.
       PROGRAM-ID. MERGE1.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INFILE1 ASSIGN TO DD1.
           SELECT INFILE2 ASSIGN TO DD2.
           SELECT OUTFILE ASSIGN TO DD3.
           SELECT WRKFILE ASSIGN TO DD4.
       DATA DIVISION.
       FILE SECTION.
       FD INFILE1.
       01 IN-REC1.
        02 ENO PIC 9(3).
        02 FILLER PIC X.
        02 ENAME PIC A(10).
        02 FILLER PIC X(66).
       FD INFILE2.
       01 IN-REC2.
        02 ENO1 PIC 9(3).
        02 FILLER PIC X.
        02 ENAME1 PIC A(10).
        02 FILLER PIC X(66).
       FD OUTFILE.
       01 OUT-REC.
        02 ENO2 PIC 9(3).
        02 FILLER PIC X.
        02 ENAME2 PIC A(10).
        02 FILLER PIC X(66).
       SD WRKFILE.
       01 WRKREC.
        02 ENO3 PIC 9(3).
        02 FILLER PIC X.
        02 ENAME3 PIC A(10).
        02 FILLER PIC X(66).
       WORKING-STORAGE SECTION.
       01 EOF PIC X(10) VALUE 'N'.
       PROCEDURE DIVISION.
           MERGE WRKFILE ON ASCENDING KEY ENO3 OF WRKREC USING INFILE1
           INFILE2 GIVING OUTFILE.
             STOP RUN.

COBOL program for SORT using INFILE

       ID DIVISION.
       PROGRAM-ID. SORT2.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INFILE ASSIGN TO DD1.
           SELECT OUTFILE ASSIGN TO DD2.
           SELECT WRKFILE ASSIGN TO DD3.
       DATA DIVISION.
       FILE SECTION.
       FD INFILE.
       01 IN-REC.
        02 ENO PIC 9(3).
        02 FILLER PIC X.
        02 ENAME PIC A(10).
        02 FILLER PIC X(66).
       FD OUTFILE.
       01 OUT-REC.
        02 ENO1 PIC 9(3).
        02 FILLER PIC X.
        02 ENAME1 PIC A(10).
        02 FILLER PIC X(66).
       SD WRKFILE.
       01 WRKREC.
        02 ENO2 PIC 9(3).
        02 FILLER PIC X.
        02 ENAME2 PIC A(10).
        02 FILLER PIC X(66).
       WORKING-STORAGE SECTION.
       01 EOF PIC X(10) VALUE 'N'.
       PROCEDURE DIVISION.
           SORT WRKFILE ON ASCENDING KEY ENO2 USING INFILE OUTPUT
           PROCEDURE IS PARA-100.
             STOP RUN.
       PARA-100.
           OPEN OUTPUT OUTFILE
           PERFORM UNTIL EOF='Y'
           RETURN WRKFILE
           AT END
           MOVE 'Y' TO EOF
           NOT AT END
           IF ENAME2='RATNESH'
           WRITE OUT-REC FROM WRKREC
           END-IF
           END-RETURN
           END-PERFORM.
       PARA-100-EXIT.
           EXIT.

COBOL program for SORT the file

       ID DIVISION.
       PROGRAM-ID. SORT1.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INFILE ASSIGN TO DD1.
           SELECT OUTFILE ASSIGN TO DD2.
           SELECT WRKFILE ASSIGN TO DD3.
       DATA DIVISION.
       FILE SECTION.
       FD INFILE.
       01 IN-REC.
        02 ENO PIC 9(3).
        02 FILLER PIC X.
        02 ENAME PIC A(10).
        02 FILLER PIC X(66).
       FD OUTFILE.
       01 OUT-REC.
        02 ENO1 PIC 9(3).
        02 FILLER PIC X.
        02 ENAME1 PIC A(10).
        02 FILLER PIC X(66).
       SD WRKFILE.
       01 WRKREC.
        02 ENO2 PIC 9(3).
        02 FILLER PIC X.
        02 ENAME2 PIC A(10).
        02 FILLER PIC X(66).
       WORKING-STORAGE SECTION.
       01 EOF PIC X(10) VALUE 'N'.
       PROCEDURE DIVISION.
           SORT WRKFILE ON ASCENDING KEY ENO2 OF WRKREC INPUT PROCEDURE
           IS PARA-100 GIVING OUTFILE.
             STOP RUN.
       PARA-100.
           OPEN INPUT INFILE
           PERFORM UNTIL EOF='Y'
           READ INFILE
           AT END
           MOVE 'Y' TO EOF
           NOT AT END
           IF ENAME='RATNESH'
           RELEASE WRKREC FROM IN-REC
           END-IF
           END-READ
           END-PERFORM.
       PARA-100-EXIT.
           EXIT.

COBOL program for SEARCH ALL

        IDENTIFICATION DIVISION.
        PROGRAM-ID. SEARCH2.
        DATA DIVISION.
        WORKING-STORAGE SECTION.
        01 AC-NO PIC X(3).
        01 J PIC 9.
        01 BANK-ACC.
         02 ACC-TAB OCCURS 2 TIMES ASCENDING KEY IS ACC-NO INDEXED   BY I.
         10 ACC-NO PIC X(3).
         10 F1 PIC X VALUE SPACE.
         10 NAME PIC X(10).
         10 F2 PIC X VALUE SPACE.
         10 AMOUNT PIC 9(4).
        PROCEDURE DIVISION.
            PERFORM VARYING J FROM 1 BY 1 UNTIL J > 2
            ACCEPT ACC-TAB(I)
            DISPLAY ACC-TAB(I)
            END-PERFORM.
            ACCEPT AC-NO
            SEARCH ALL ACC-TAB AT END DISPLAY 'SEARCH END'
            WHEN ACC-NO(I) = AC-NO
            DISPLAY ACC-NO(I)
            DISPLAY NAME(I)
            DISPLAY AMOUNT(I)
            END-SEARCH.
            STOP RUN.

COBOL program for simple SEARCH

       IDENTIFICATION DIVISION.
       PROGRAM-ID. SEARCH1.
       DATA DIVISION.
       WORKING-STORAGE SECTION.
       01 AC-NO PIC X(3).
       01 J PIC 9.
       01 BANK-ACC.
        05 ACC-TAB OCCURS 2 TIMES INDEXED BY I.
         10 ACC-NO PIC X(3).
         10 F1 PIC X VALUE SPACE.
         10 NAME PIC X(10).
         10 F2 PIC X VALUE SPACE.
         10 AMOUNT PIC 9(4).
       PROCEDURE DIVISION.
           INITIALIZE J, AC-NO
           PERFORM VARYING J FROM 1 BY 1 UNTIL J > 2
           ACCEPT ACC-TAB(I)
           DISPLAY ACC-TAB(I)
           END-PERFORM.
           ACCEPT AC-NO
           SEARCH ACC-TAB AT END DISPLAY 'SEARCH ENDED'
           WHEN ACC-NO(I) = AC-NO
           DISPLAY ACC-NO(I)
           DISPLAY NAME(I)
           DISPLAY AMOUNT(I)
           END-SEARCH.
           STOP RUN.

COBOL program to write first two records and skip next two records

       ID DIVISION.
       PROGRAM-ID. FODD1.
       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INFILE ASSIGN TO DD1.
           SELECT OUTFILE ASSIGN TO DD2.
       DATA DIVISION.
       FILE SECTION.
       FD INFILE.
       01 IN-REC PIC X(80).
       FD OUTFILE.
       01 OUT-REC PIC X(80).
       WORKING-STORAGE SECTION.
       01 EOF PIC X(10) VALUE 'N'.
       01 CNT PIC 9(1) VALUE 0.
       PROCEDURE DIVISION.
           OPEN INPUT INFILE
           OPEN OUTPUT OUTFILE
           PERFORM UNTIL EOF ='Y'
           READ INFILE
           AT END
           MOVE 'Y' TO EOF
           NOT AT END
           ADD+1 TO CNT
           IF CNT<=2
           MOVE IN-REC TO OUT-REC
           WRITE OUT-REC
           ELSE IF CNT=4
           MOVE 0 TO CNT
           END-IF
           END-IF
           END-READ
           END-PERFORM.
             CLOSE INFILE
             CLOSE OUTFILE
             STOP RUN.