COBOL - MAINFRAMES - PAGE 3


STRING HANDLING
Ø String is a collection of one or more characters
Ø Using String Handling we can combine one or more strings into one string
Ø We can divide one string into no of strings
Ø We can replace the existing characters with new characters
Ø We can count the occurrences of the characters in the given string
Ø We can convert the data into new data
Ø In string we have different functions as follows. They are………
1.     String
2.     Unstring
3.     Inspect
4.     Tallying
5.     Replacing
6.     Converting
1. STRING
              Using string we can combine one or more strings into one string
SYNTAX
              STRING ID1 DELIMITED BY ‘COMMA/SPACE/SIZE’,
                              ID2 DELIMITED BY ‘COMMA/SPACE/SIZE’,
                              ID3 DELIMITED BY ‘COMMA/SPACE/SIZE’,
                              ………………..
                              ………………..
                             ………………..
                              ………………..
                    IDn DELIMITED BY ‘COMMA/SPACE/SIZE’, INTO IDENTIFIER
              END-STRING.
EX
ID DIVISION.                                                    
PROGRAM-ID. PGM40.                                              
DATA DIVISION.                                                   
WORKING-STORAGE SECTION.                                        
01 A PIC A(10) VALUE 'HELLO HAI'.                               
01 B PIC X(13) VALUE 'WELCOME#BYE'.                             
01 C PIC A(20) VALUE SPACES.                                    
PROCEDURE DIVISION.                                             
     STRING A DELIMITED BY ' ',                                  
            B DELIMITED BY '#' INTO C.                           
            DISPLAY C.                                           
            STOP RUN.                                            
2. UNSTRING
          Using UNSTRING we can divide one string into no of strings as follows
SYNTAX
              UNSTRING ID1 INTO ID2,ID3,ID4………IDn
              END-STRING.
EX
ID DIVISION.                                                    
PROGRAM-ID. PGM41.                                              
DATA DIVISION.                                                  
WORKING-STORAGE SECTION.                                         
01 A PIC A(30) VALUE 'HELLO HAI WELCOME TO STRING'.             
01 B PIC A(5).                                                  
01 C PIC A(3).                                                  
01 D PIC A(10).                                                  
01 E PIC A(6).                                                  
PROCEDURE DIVISION.                                             
      UNSTRING A INTO B,C,D,E.                                   
      DISPLAY A.                                                  
      DISPLAY B.                                                 
      DISPLAY C.                                                 
      DISPLAY D.                                                 
      DISPLAY E.                                                 
      STOP RUN.
INSPECT, TALLYING
Ø Using ‘INSPECT’ we can examine the string
Ø Using ‘TALLYING’ we can update the count and also used for counting the occurrences
Ø Using ‘INSPECT’ we can count the occurrence of a character in the given string as follows
EX
ID DIVISION.                                                    
PROGRAM-ID. PGM42.                                              
DATA DIVISION.                                                  
WORKING-STORAGE SECTION.                                        
01 A PIC A(30) VALUE 'HELLO HAI WELCOME TO INSEPECT'.           
01 B PIC 9(4).                                                  
PROCEDURE DIVISION.                                             
      INSPECT A TALLYING B FOR ALL 'E'.                          
      DISPLAY A.                  
      DISPLAY 'COUNT IS::' B.
      STOP RUN.
REPLACING
Ø Using REPLACING we can change character by character or word by word
Ø While REPLACING, the old and new characters length must be same
Ø Using REPLACE we can also NULLIFY the data
EX
ID DIVISION.                                                   
PROGRAM-ID. PGM43.                                             
DATA DIVISION.                                                   
WORKING-STORAGE SECTION.                                       
01 A PIC A(30) VALUE 'HELLO HI HAI HI'.                        
PROCEDURE DIVISION.                                             
      INSPECT A REPLACING ALL 'H' BY 'A'.                        
      DISPLAY A.
      INSPECT A REPLACING ALL 'HI' BY 'H!'                       
      DISPLAY A.                                                 
      STOP RUN.
CONVERTING
              Using CONVERTING we can convert character by character and also we can convert multiple characters with new characters at a time
EX
ID DIVISION.                                                    
PROGRAM-ID. PGM44.                                              
DATA DIVISION.                                                   
WORKING-STORAGE SECTION.                                        
01 A PIC A(20) VALUE 'HELLO HI HAI HI'.                         
PROCEDURE DIVISION.                                             
      INSPECT A CONVERTING 'H' TO 'A'.                           
      DISPLAY A.                                                 
      INSPECT A CONVERTING 'HI' TO 'X!'.                         
      DISPLAY A.                                                 
      INSPECT A CONVERTING 'HIL' TO '---'.                       
      DISPLAY A.                                                 
      STOP RUN.
REFERENCE MODIFICATION
Ø In String Handling by using REFERENCE MODIFICATION we can retrieve required string from the given string
Ø Using REFERENCE MODIFICATION random selection of data is possible
SYNTAX
          DATANAME(LOCATIONINPUT:LENGTH)

EX
ID DIVISION.                                                    
PROGRAM-ID. PGM45.                                              
DATA DIVISION.
WORKING-STORAGE SECTION.                                        
01 A PIC A(30) VALUE 'HELLO HOW ARE YOU'.                      
01 B PIC A(3).                                                  
01 C PIC A(3).
01 D PIC A(5).                                                   
01 E PIC A(3).                                                  
PROCEDURE DIVISION.                                             
      MOVE A(11:3) TO B.                                         
      MOVE A(7:3) TO C.                                           
      MOVE A(1:5) TO D.                                          
      MOVE A(15:3) TO E.                                         
      DISPLAY A.                                                 
      DISPLAY B.                                                  
      DISPLAY C.                                                 
      DISPLAY D.                                                 
      DISPLAY E.                                                 
      STOP RUN.


TABLE HANDLING
Ø TABLE is a linear data structure
Ø TABLE stores the homogenous data items
Ø Using TABLE we can write or invoke collection of linear data structures (data items) with one name called TABLE
Ø TABLE is a collection of ROWS and COLUMNS
Ø Using TABLE HANDLING we can repeat one data item for ‘n’ no of times
Ø In TABLE we can repeat the data names for ‘n’ no of times using OCCURS CLAUSE
Ø By using OCCURS we can repeat the structure for ‘n’ times and it allocates the memory for the data names
          01 GRP
              02 EMP OCCURS 2 TIMES 
                        03 ENO 9(4).                 20*2 = 40 Bytes
                        03 ENAME A(16).                           
RULES IN OCCURS CLAUSE
Ø We cant use OCCURS CLAUSE for group item (01)
Ø Only positive occurrences are allowed
Ø OCCURS is a WORKING-STORAGE SECTION item
Ø We also cant write OCCURS for ‘66’,’77’ &’88’ level no#
Ø By using SUBSCRIPT and INDEX only we can change the value of an array element
Ø SUBSCRIPT means occurrences whereas INDEX means displacement
Ø The value of INDEX will be set by using a SET statement






DIFFERENCES BETWEEN SUBSCRIPT AND INDEX
Ø In general COBOL we can write max ‘7’ dimensions
          DIMENSION = No of Occurrences
Ø We can also write multiple dimensions
Ø The declaration of array elements and the values allocation is as follows….
EX1. ONE DIMENSIONAL ARRAY
ID DIVISION.                                                     
PROGRAM-ID. PGM1.                                               
DATA DIVISION.                                                  
WORKING-STORAGE SECTION.                                        
01 EMP-TAB.                                                     
      02 EMP OCCURS 3 TIMES.                                     
           03 ENO PIC 9(4).                                     
            03 ENAME PIC A(15).                                  
77 I PIC 9(1).                                                  
PROCEDURE DIVISION.                                             
      PERFORM VARYING I FROM 1 BY 1 UNTIL I > 3                  
      ACCEPT ENO(I)                                               
      ACCEPT ENAME(I)                                            
      DISPLAY ENO(I)                                             
      DISPLAY ENAME(I)                                           
      END-PERFORM.                                                
      DISPLAY EMP-TAB.                                           
      STOP RUN.                                       
EX1. TWO DIMENSIONAL ARRAY
ID DIVISION.                                                    
PROGRAM-ID. PGM2.                                                
DATA DIVISION.                                                  
WORKING-STORAGE SECTION.                                        
01 CLASS-TAB.                                                   
     02 SEC-TAB OCCURS 2 TIMES.                                  
         03 SEC PIC X(5)                                         
         03 NAME-TAB OCCURS 5 TIMES.                             
              04 NAME PIC A(20).                                 
77 I PIC 9(1).                                                  
77 J PIC 9(1).                                                  
PROCEDURE DIVISION.                                             
      PERFORM VARYING I FROM 1 BY 1 UNTIL I>2                     
      ACCEPT SEC(I)                                              
      DISPLAY SEC(I)                                             
      PERFORM VARYING J FROM 1 BY 1 UNTIL J>5                    
      ACCEPT NAME(I,J)                                            
      DISPLAY NAME(I,J)                                          
      END-PERFORM.                                               
      END-PERFORM.                                               
            DISPLAY CLASS-TAB.                                    
            STOP RUN.                                            
EX1. TWO DIMENSIONAL ARRAY
ID DIVISION.                                                    
PROGRAM-ID. PGM3.                                                
DATA DIVISION.                                                  
WORKING-STORAGE SECTION.                                        
01 CLASS-TAB.                                                   
      02 SECTION-TAB OCCURS 2 TIMES.                              
            03 SEC PIC X(5).                                       
            03 NAME-TAB OCCURS 3 TIMES.                            
                  04 NAME-TAB PIC A(20).                            
                  04 MARK-TAB OCCURS 6 TIMES.                       
                       05 MARK PIC 9(3).                            
77 I PIC 9(1).                                                  
77 J PIC 9(1).                                                  
77 K PIC 9(1).                                                   
PROCEDURE DIVISION.                                             
     PERFORM VARYING I FROM 1 BY 1 UNTIL I > 2                   
         ACCEPT SEC(I)                                            00160004
         DISPLAY SEC(I)                                           00170004
     PERFORM VARYING J FROM 1 BY 1 UNTIL J > 5                   
         ACCEPT SEC(I,J)                                         
        DISPLAY SEC(I,J)                                         
     PERFORM VARYING K FROM 1 BY 1 UNTIL K > 6                   
         ACCEPT SEC(I,J,K)                                       
         DISPLAY SEC(I,J,K)                                      
     END-PERFORM.                                                 
     END-PERFORM.                                                
     END-PERFORM.                                                
     DISPLAY CLASS-TAB.                                          
     STOP RUN.                                                    
SEARCH AND SEARCHALL
Ø We can search any element of an array by using SEARCH and SEARCHALL
Ø SEARCH is a sequential search whereas SEARCHALL is a binary search
Ø SEARCH is preferable for small tables whereas SEARCHALL is preferable for large tables
Ø In SEARCH and SEARCHALL, INDEX is required
Ø In SEARCH any logical comparison is possible
Ø SEARCHALL will work faster than SEARCH because of their order or sequence
SYNTAX1. SEARCH
 SEARCH IDENTIFIER AT END DISPLAY ‘IMPERATIVE STATEMENT’
              WHEN DATANAME = SEARCH ELEMENT
              DISPLAY ‘IMPERATIVE STATEMENT’
END-SEARCH
SYNTAX2. SEARCHALL
SEARCHALL IDENTIFIER AT END DISPLAY ‘IMPERATIVE STATEMENT’
              WHEN DATANAME = SEARCH ELEMENT
              DISPLAY ‘IMPERATIVE STATEMENT’
END-SEARCHALL
EX1. SEARCH
ID DIVISION.                                                    
PROGRAM-ID. PGM1.                                               
DATA DIVISION.                                                  
WORKING-STORAGE SECTION.                                         
01 EMP-TAB.                                                     
      02 EMP OCCURS 3 TIMES INDEXED BY I.                                     
           03 ENO PIC 9(4).                                     
           03 ENAME PIC A(15).                                   
77 SNUM PIC 9(4).                                                  
PROCEDURE DIVISION.                                             
           PERFORM PARA-1 3 TIMES.
           ACCEPT SNUM.
           PERFORM SER-PARA.
           STOP RUN.       
PARA-1
           ACCEPT ENO(I).
           ACCEPT ENAME(I).
SER-PARA
           SEARCH EMP AT END MOVE “ELEMENT NOT FOUND”
                      WHEN ENO(I)=SNUM
                    DISPLAY ENO(I)
                      DISPLAY ENAME(I)
            END-SEARCH.
              In SEARCH we can keep the input data in any order
EX2. SEARCHALL
ID DIVISION.                                                    
PROGRAM-ID. PGM1.                                               
DATA DIVISION.                                                   
WORKING-STORAGE SECTION.                                        
01 EMP-TAB.                                                     
      02 EMP OCCURS 3 TIMES INDEXED BY I ASCENDING KEY ENO.                                     
           03 ENO PIC 9(4).                                     
           03 ENAME PIC A(15).                                  
77 SNUM PIC 9(4).                                                  
PROCEDURE DIVISION.                                              
           PERFORM PARA-1 3 TIMES.
           ACCEPT SNUM.
           PERFORM SER-PARA.
           STOP RUN.       
PARA-1
           ACCEPT ENO(I).
           ACCEPT ENAME(I).
SER-PARA
           SEARCHALL EMP AT END MOVE “ELEMENT NOT FOUND”
                      WHEN ENO(I)=SNUM
                    DISPLAY ENO(I)
                      DISPLAY ENAME(I)
            END-SEARCH.
FILE HANDLING
Ø FILE is a collection of records
Ø In COBOL we use both VSAM and NON-VSAM files for storing data
Ø DATA FILE is a collection of physical and logical files
Ø Physical file is identified by system whereas the Logical file will be identified by the program
Ø In COBOL we use physical sequential (PS) and VSAM CLUSTERS for loading data
Ø In COBOL to use a file we need to follow the structure as follows
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
         SELECT <LOGICAL FILE> ASSIGN TO <DD NAME>.
     ORGANIZATION <SEQUENTIAL> OR <INDEXED> OR <RELATIVE>.
     ACCESS MODE <SEQUENTIAL> OR <RANDOM> OR <DYNAMIC>.
     RECORD KEY <KEY NAME>.
     RELATIVE KEY <KEY NAME>.
     ALTERNATE RECORD KEY <KEY NAME>.
     FILE STATUS <FS NAME>.
DESCRIPTION
Ø Using SELECT we can assign a logical file for the DD NAME
Ø LOGICAL FILE is a user defined name
Ø SELECT will access the physical file through DD NAME
1. ORGANIZATION
          Specifies the behavior of and structure of the file depends on file type we can assign organization for the file
1.     SEQUENTIAL is  used for PS and ESDS also
2.     INDEXED is used for KSDS
3.     RELATIVE is used for RRDS
NOTE
              ORGANIZATION, SEQUENTIAL is default
2. ACCESS MODE
              Specifies how the file is going to be accessed
a.     SEQUENTIAL
              Data can be retrieved in entry sequence
b.    RANDOM
    
we can retrieve the data randomly from the specific location in the file
c.      DYNAMIC
              It is combination of both SEQUENTIAL and RANDOM
Ø By using START and READ NEXT we can access the records from the file
Ø DYNAMIC is mainly used for KSDS cluster
3. RECORD KEY
              Specifies primary key of KSDS cluster
4. RELATIVE KEY
              Is used for RRDS
5. ALTERNATE RECORD KEY
              Using ALTERNATE INDEX also we can retrieve data from clusters (KSDS & ESDS)
6. FILE STATUS
Ø It is a two digit no mainly used to know the status of a file
Ø It is not mandatory for every file
NOTE
Ø ‘ACCESS MODE’ SEQUENTIAL is default
Ø File is an 80 byte record structure
Ø While declaring file we need to use FILLER to initialize the unused space with ‘SPACES’
Ø FILLER is also used for flexible insertion and updation of data
USAGE OF FILES
Ø Declare a logical file in COBOL
Ø Declare file attributes (usage of 80 bytes)
Ø Opening the file
Ø Performing required operation
Ø Closing the file
FILE OPEN MODES
              We can open file according to the user requirement
              In file we have 4 modes. They are
1.     Input
2.     Output
3.     Extend
4.     Input-output
1. INPUT
Ø Used for the existing files
Ø Only READ operation is allowed
2. OUTPUT
Ø Used to insert records
Ø If a SEQUENTIAL file already holding record is used then the existing records will be deleted 1st and then the new records are inserted into the file
Ø It will not happen in case of INDEXED or RELATIVE file
3. EXTEND
Ø Used to append records in a SEQUENTIAL file
Ø The records are inserted at the end
Ø If the ACCESS MODE is RANDOM or DYNAMIC then EXTEND mode cannot be used
4. INPUT-OUTPUT
Ø Used to read and rewrite the records of a file
              On files we can perform many operations like.……..
1.     OPEN
2.     READ
3.     WRITE
4.     REWRITE
5.     DELETE
6.     START
7.     CLOSE
1. OPEN
Ø 1st file operation that must be performed
Ø If open is successful then only further operations are possible on a file
Ø Only after opening a file, the variables in the file structure are available for processing
Ø FILE STATUS is updated after each and every file operation
SYNTAX
          OPEN “MODE” FILENAME
2. READ
Ø Used to fetch the records from a file
Ø To perform READ operation the file must be opened in INPUT or INPUT-OUTPUT mode
SYNTAX
          READ FILENAME NEXT RECORD INTO WS-FILE-STRUCTURE
          AT END DISPLAY ‘END OF FILE’
          NOT END DISPLAY ‘RECORD DETAILS::’ WS-FILE-STRUCTURE
          END-READ.
3. WRITE
Ø Used to insert the records into the file
Ø Once the record is written it is no longer available in record buffer
Ø Before inserting the records in the file, move values to the record buffer and then perform WRITE verb
Ø Open mode should be EXTEND or OUTPUT, if ACCESS MODE is RANDOM or DYNAMIC then Open mode should be OUTPUT or INPUT-OUTPUT
SYNTAX
WRITE RECORD BUFFER (FROM WS-FILE-STRUCTURE)
     INVALID KEY DISPLAY ‘INVALID KEY’
     NOT INVALID KEY DISPLAY ‘RECORD INSERTED’
END-WRITE.
4. REWRITE
Ø Open mode should be INPUT-OUTPUT
Ø Used to update records
Ø Last record is overrided
SYNTAX
REWRITE RECORD BUFFER (FROM WS-FILE-STRUCTURE)
     INVALID KEY DISPLAY ‘INVALID KEY’
     NOT INVALID KEY DISPLAY ‘RECORD INSERTED’
END-REWRITE.
5. DELETE
Ø Open mode should be INPUT-OUTPUT
Ø If the ACCESS MODE is SEQUENTIAL, then the last record read by READ statement is deleted. If the ACCESS MODE is RANDOM then specify the RECORD KEY and then perform delete operation
SYNTAX
DELETE FILENAME RECORD
     INVALID KEY DISPLAY ‘INVALID KEY’
     NOT INVALID KEY DISPLAY ‘RECORD DELETED’
END-DELETE.
6. START
Ø Open mode should be INPUT-OUTPUT
Ø START is performed on files those ACCESS MODES are SEQUENTIAL and RANDOM
Ø Used to place the file pointer on specific record
SYNTAX
START FILENAME KEY IS (=, <, >, !=, >=, <=) REC-KEY
     INVALID KEY DISPLAY ‘INVALID KEY’
     NOT INVALID KEY DISPLAY ‘RECORD INSERTED’
END-START.
7. CLOSE
          Used to close the opened file
SYNTAX
          CLOSE FILENAME
EX1: WRITING DATA INTO FILE
ID DIVISION.                                                    
PROGRAM-ID. PGM4.                                               
ENVIRONMENT DIVISION.                                           
INPUT-OUTPUT SECTION.                                            
FILE-CONTROL.                                                   
      SELECT FILE1 ASSIGN TO DD1                                 
      ORGANIZATION SEQUENTIAL                                    
      ACCESS MODE SEQUENTIAL                                      
      FILE STATUS FS1.                                           
DATA DIVISION.                                                  
FILE SECTION.                                                   
FD FILE1.                                                        
01 FILE-REC.                                                    
     49 ENO PIC 9(4).                                            
     49 ENAME PIC A(16).                                         
     49 ESAL PIC 9(5).                                            
     49 FILLER PIC X(55).                                        
WORKING-STORAGE SECTION.                                        
77 FS1 PIC 9(2).                                                
PROCEDURE DIVISION.                                             
     PERFORM OPEN-PARA.                                          
     PERFORM WRITE-PARA.                                         
     PERFORM CLOSE-PARA.                                         
     STOP RUN.                                                   
OPEN-PARA.                                                      
     OPEN OUTPUT FILE1.                                          
     DISPLAY FS1.                                                 
WRITE-PARA.                                                     
     ACCEPT ENO.                                                 
     ACCEPT ENAME.                                               
     ACCEPT ESAL.                                                 
     WRITE FILE-REC.                                             
     DISPLAY FS1.                                                
CLOSE-PARA.                                                     
     CLOSE FILE1.                                                 
     DISPLAY FS1.
FD – specifies the File Descriptions used to declare file attributes
SD(Sort Descriptor) – it is used for doing SORT and MERGE operations on files
EX2: WRITING DATA INTO FILE USING FILLER
ID DIVISION.                                                     
PROGRAM-ID. PGM4.                                               
ENVIRONMENT DIVISION.                                           
INPUT-OUTPUT SECTION.                                           
FILE-CONTROL.                                                   
      SELECT FILE1 ASSIGN TO DD1                                 
      ORGANIZATION SEQUENTIAL                                    
      ACCESS MODE SEQUENTIAL                                     
      FILE STATUS FS1.                                           
DATA DIVISION.                                                  
FILE SECTION.                                                   
FD FILE1.                                                        
01 FILE-REC.                                                    
     49 ENO PIC 9(4).
     49 FILLER X(2).                                            
     49 ENAME PIC A(16).
     49 FILLER X(3).                                         
     49 ESAL PIC 9(5).                                           
     49 FILLER PIC X(50).                                        
WORKING-STORAGE SECTION.                                        
77 FS1 PIC 9(2).                                                 
PROCEDURE DIVISION.                                             
     PERFORM OPEN-PARA.                                          
     PERFORM WRITE-PARA.                                         
     PERFORM CLOSE-PARA.                                          
     STOP RUN.                                                   
OPEN-PARA.                                                      
     OPEN OUTPUT FILE1.                                          
     DISPLAY FS1.                                                 
WRITE-PARA.                                                     
     ACCEPT ENO.                                                 
     ACCEPT ENAME.                                               
     ACCEPT ESAL.                                                 
     WRITE FILE-REC.                                             
     DISPLAY FS1.                                                
CLOSE-PARA.                                                     
     CLOSE FILE1.                                                 
     DISPLAY FS1.
          Using FILE STATUS we can know the file status of the file. If operation is successful it gives ‘00’ otherwise more than ‘00’
EX3: WRITING NO OF RECORDS INTO FILE
ID DIVISION.                                                     
PROGRAM-ID. PGM4.                                               
ENVIRONMENT DIVISION.                                           
INPUT-OUTPUT SECTION.                                           
FILE-CONTROL.                                                    
      SELECT FILE1 ASSIGN TO DD1                                 
      ORGANIZATION SEQUENTIAL                                    
      ACCESS MODE SEQUENTIAL                                     
      FILE STATUS FS1.                                           
DATA DIVISION.                                                  
FILE SECTION.                                                   
FD FILE1.                                                       
01 FILE-REC.                                                    
     49 ENO PIC 9(4).                                          
     49 ENAME PIC A(16).                                        
     49 ESAL PIC 9(5).                                            
     49 FILLER PIC X(55).                                        
WORKING-STORAGE SECTION.                                        
77 FS1 PIC 9(2).                                                
PROCEDURE DIVISION.                                              
     PERFORM OPEN-PARA.                                          
     PERFORM WRITE-PARA 4 TIMES.                                         
     PERFORM CLOSE-PARA.                                         
     STOP RUN.                                                    
OPEN-PARA.                                                      
     OPEN OUTPUT FILE1.                                          
     DISPLAY FS1.                                                
WRITE-PARA.                                                      
     ACCEPT ENO.                                                 
     ACCEPT ENAME.                                               
     ACCEPT ESAL.                                                
     WRITE FILE-REC.                                             
     DISPLAY FS1.                                                
CLOSE-PARA.                                                     
     CLOSE FILE1.                                                 
     DISPLAY FS1.
EX4. READING DATA FROM THE FILE
ID DIVISION.                                                    
PROGRAM-ID. PGM4.                                               
ENVIRONMENT DIVISION.                                           
INPUT-OUTPUT SECTION.                                           
FILE-CONTROL.                                                   
      SELECT FILE4 ASSIGN TO DD1                                 
      ORGANIZATION SEQUENTIAL                                     
      ACCESS MODE SEQUENTIAL                                     
      FILE STATUS FS1.                                           
DATA DIVISION.                                                  
FILE SECTION.                                                    
FD FILE4.                                                       
01 FILE-REC.                                                    
     49 ENO PIC 9(4).                                         
     49 ENAME PIC A(16).                                         
     49 ESAL PIC 9(5).                                           
     49 FILLER PIC X(55).                                        
WORKING-STORAGE SECTION.                                        
77 FS1 PIC 9(2).                                                 
PROCEDURE DIVISION.                                             
     PERFORM OPEN-PARA.                                          
     PERFORM READ-PARA.                                         
     PERFORM CLOSE-PARA.                                          
     STOP RUN.                                                   
OPEN-PARA.                                                      
     OPEN OUTPUT FILE1.                                          
     DISPLAY FS1.                                                
READ-PARA.                                                     
     READ FILE4.                                                                                                
     DISPLAY FS1.                                                 
CLOSE-PARA.                                                     
     CLOSE FILE1.                                                
     DISPLAY FS1.
CASE1.
          If suppose file having 100 records we can fetch 100 at a time as
                   PERFORM READ-PARA 100 TIMES
CASE2.
          If suppose file having many records we can fetch all at a time by using following example
ID DIVISION.                                                    
PROGRAM-ID. PGM4.                                                
ENVIRONMENT DIVISION.                                           
INPUT-OUTPUT SECTION.                                           
FILE-CONTROL.                                                   
      SELECT FILE5 ASSIGN TO DD1                                  
      ORGANIZATION SEQUENTIAL                                    
      ACCESS MODE SEQUENTIAL                                     
      FILE STATUS FS1.                                           
      SELECT FILE6 ASSIGN TO DD2                                 
      ORGANIZATION SEQUENTIAL                                    
      ACCESS MODE SEQUENTIAL                                     
      FILE STATUS FS2.                                           
DATA DIVISION.                                                   
FILE SECTION.                                                   
FD FILE5.                                                       
01 FILE-REC.                                                    
     49 ENO PIC 9(4).                                         
     49 ENAME PIC A(16).                                        
     49 ESAL PIC 9(5).                                           
     49 FILLER PIC X(55).                                        
FD FILE6.                                                       
01 FILE-REC1.                                                    
     49 ENO PIC 9(4).                                         
     49 ENAME PIC A(16).                                         
     49 ESAL PIC 9(5).                                           
     49 FILLER PIC X(55).                                        
WORKING-STORAGE SECTION.                                        
77 FS1 PIC 9(2).
77 FS2 PIC 9(2).
77 VAL PIC X(1).                                                 
PROCEDURE DIVISION.                                             
     PERFORM OPEN-PARA.                                          
     PERFORM READ-PARA UNTIL VAL=’N’.                                          
     PERFORM CLOSE-PARA.                                         
     STOP RUN.                                                   
OPEN-PARA.                                                      
     OPEN INPUT FILE5.                                           
     DISPLAY FS1.
     OPEN INPUT FILE6.                                          
     DISPLAY FS2.                                                
READ-PARA.                                                     
     READ FILE5 AT END MOVE ‘N’ TO VAL.
     NOT AT END PERFORM WRITE-PARA.                                                                                                
     DISPLAY FS1.                                            
WRITE-PARA.
     MOVE FILE-REC TO FILE-REC1.
     WRITE FILE-REC1.
     DISPLAY FS2.   
CLOSE-PARA.                                                     
     CLOSE FILE5.                                                
     DISPLAY FS1.
     CLOSE FILE6.                                                 
     DISPLAY FS2.


No comments:

Post a Comment