How we can access PDS and its Members thru COBOL ?

This is a Mainframe COBOL forum - you can post your queries on Mainframe COBOL, VS COBOL II, COBOL/370 , Enterprise COBOL

Moderators: dbzTHEdinosauer, Moderator Group

Post Reply
User avatar
narendra_darwani
Member
Posts: 7
Joined: Wed Dec 24, 2008 6:18 pm

How we can access PDS and its Members thru COBOL ?

Post by narendra_darwani » Fri Aug 07, 2009 5:55 pm

hi,

I want to write a COBOL pgm to open a PDS and list all the members.

Requirements:

It should display the number of members in the PDS
It should display the name of the members


Can anybody help in this regard?

User avatar
arcvns
Member
Posts: 28
Joined: Sat May 30, 2009 10:19 pm
Location: Chennai, India

Post by arcvns » Fri Aug 07, 2009 6:09 pm

Hello,

I doubt whether you'll be able to achieve this in COBOL. What you're trying can easily be done in REXX.
Arun

MrSpock
Active Member
Posts: 273
Joined: Wed Jun 27, 2007 5:37 pm

Post by MrSpock » Fri Aug 07, 2009 7:37 pm

Code: Select all

       IDENTIFICATION DIVISION.                                         
       PROGRAM-ID. XXXXXXXX.                                            
       ENVIRONMENT DIVISION.                                            
       INPUT-OUTPUT SECTION.                                            
                                                                        
         FILE-CONTROL.                                                  
           SELECT DIRECTORY-FILE ASSIGN TO UT-S-PDS                     
             ORGANIZATION IS SEQUENTIAL                                 
             ACCESS IS SEQUENTIAL.                                      
                                                                        
       DATA DIVISION.                                                   
       FILE SECTION.                                                    
                                                                        
       FD  DIRECTORY-FILE                                               
           RECORDING MODE F.                                            
       01  FD-DIRECTORY-RECORD PIC X(256).                              
                                                                        
       WORKING-STORAGE SECTION.                                         
       77  IX-1 PIC S9(4) COMP.                                         
       77  TRASH PIC S9(4) COMP.                                        
       77  HALF-WORDS PIC S9(4) COMP.                                   
       01  DIRECTORY-RECORD.                                            
           02 USED-BYTES PIC S9(3) COMP.                                
           02 REST-OF-RECORD PIC X(254).                                
       01  DIRECTORY-ENTRY.                                             
           02 MEMBER-NAME PIC X(8).                                     
           02 TTR PIC X(3).                                             
           02 WS-INDC PIC X.                                            
       01 WORK-FIELD.                                                   
           05 WORK-FIELD-NUMERIC PIC S9(4) COMP.                        
       01 FILLER.                                                       
          03 WS-BIT PIC S9(4) COMP                                      
            OCCURS 8 INDEXED BY WS-BIT-NDX.                             
          03 WS-COMP PIC S9(4) COMP VALUE ZERO.                         
          03 FILLER REDEFINES WS-COMP.                                  
             05 FILLER PIC X(1).                                        
             05 WS-BYTE PIC X(1).                                       
       01  FILLER.                                                      
           03 FILLER PIC 9.                                          
              88  EOF-DIRECTORY VALUE 1.                             
              88  NOT-EOF-DIRECTORY VALUE 0.                         
           03 FILLER PIC 9.                                          
              88  EOF-MEMBER VALUE 1.                                
              88  NOT-EOF-MEMBER VALUE 0.                            
           03 FILLER PIC 9.                                          
              88  IS-ALIAS VALUE 1.                                  
              88  IS-NOT-ALIAS VALUE 0.                              
                                                                     
       PROCEDURE DIVISION.                                           
           OPEN INPUT DIRECTORY-FILE.                                
           READ DIRECTORY-FILE.                                      
           SET NOT-EOF-DIRECTORY TO TRUE.                            
           PERFORM UNTIL EOF-DIRECTORY                               
             MOVE FD-DIRECTORY-RECORD TO DIRECTORY-RECORD            
             MOVE 1 TO IX-1                                          
             PERFORM UNTIL USED-BYTES - IX-1 < 11 OR                 
               REST-OF-RECORD &#40;IX-1&#58;1&#41; = HIGH-VALUES                 
               MOVE REST-OF-RECORD &#40;IX-1&#58;12&#41; TO DIRECTORY-ENTRY      
               PERFORM PROCESS-MEMBER                                
               MOVE LOW-VALUES TO WORK-FIELD                         
               MOVE WS-INDC TO WORK-FIELD &#40;2&#58;1&#41;                      
               DIVIDE WORK-FIELD-NUMERIC BY 32 GIVING TRASH          
                 REMAINDER HALF-WORDS                                
               COMPUTE IX-1 = IX-1 + 12 + HALF-WORDS * 2             
               SET IS-NOT-ALIAS TO TRUE                              
               MOVE WS-INDC TO WS-BYTE                               
               PERFORM VARYING WS-BIT-NDX FROM 8 BY -1               
                 UNTIL WS-BIT-NDX < 1                                
                 DIVIDE WS-COMP BY 2 GIVING WS-COMP REMAINDER        
                 WS-BIT&#40;WS-BIT-NDX&#41;                                  
               END-PERFORM                                           
             IF WS-BIT&#40;1&#41; NOT ZERO                                   
               THEN SET IS-ALIAS TO TRUE                             
             END-IF                                                  
             END-PERFORM                                             
             IF REST-OF-RECORD &#40;IX-1&#58;1&#41; = HIGH-VALUES                
               THEN SET EOF-DIRECTORY TO TRUE                        
             ELSE                                    
               READ DIRECTORY-FILE                   
             END-IF                                  
           END-PERFORM.                              
           CLOSE DIRECTORY-FILE.                     
           MOVE 0 TO RETURN-CODE.                    
           STOP RUN.                                 
                                                     
       PROCESS-MEMBER.                               
           DISPLAY MEMBER-NAME.                      
JCL to call program:

Code: Select all

//STEP0001 EXEC PGM=XXXXXX
//STEPLIB  DD   DISP=SHR,DSN=HLQ.LOAD           
//SYSOUT   DD   SYSOUT=*                                  
//PDS      DD   DISP=SHR,DSN=HLQ.PDS,RECFM=U,LRECL=256
//*                                                       

MrSpock
Active Member
Posts: 273
Joined: Wed Jun 27, 2007 5:37 pm

Post by MrSpock » Fri Aug 07, 2009 7:39 pm

Or you can use the common ISPF Library Management (LM) Services. This option would probably be easier to support and document.

User avatar
Natarajan
Moderator
Posts: 537
Joined: Fri Oct 10, 2008 12:57 pm
Location: chennai
Contact:

Post by Natarajan » Sat Aug 08, 2009 9:45 am

It really good information MrSpock.
Natarajan
Chennai

User avatar
narendra_darwani
Member
Posts: 7
Joined: Wed Dec 24, 2008 6:18 pm

Post by narendra_darwani » Mon Aug 10, 2009 10:09 am

Thanks MrSpock,

Its working :D
Thanks & Regards,
Naren

Post Reply

FREE TUTORIALS

Tutorials
Free tutorials from mainframegurukul
  • JCL Tutorial
    Covers all important JCL concepts.
  • Cobol Tutorial
    This tutorials covers all Cobol Topics from STRING to COMP-3.
  • DB2 Tutorial
    DB2 Tutorial focuses on DB2 COBOL Programming.
  • SORT Tutorial
    This Tutorial covers all important aspects of DFSORT with examples
  • CICS Tutorial
    This CICS tutorial covers CICS concepts and CICS Basics, CICS COBOL Programming.
Interview
Mainframe Interview questions



Other References
Mainframe Tools and others