On Wed, 7 Jul 2010 16:50:29 +0300, Sergio Lima <sergiovm...@hotmail.com> 

wrote:

>Hello List,
>
>We need, do here a REXX that will READ a lot of COBOL Programs.
>
>So, must, locate all "CALL" Statements, and think use XEDIT for this.
>
>Someone know, if have a place, or a documentation, for us get a sample 

program?
>
>Thanks
>
>Sergio Lima Costa

Here is a quick and dirty Exec that I just wrote that will be close to 

what you want.  Note that ir will find references to "CALL" that may be i
n 
a DISPLAY command as well as the "CALL" instruction.  Here is the Exec:

/*--------------------------------------------------------------------*/
/*                            COBCALL EXEC                            */
/* Scan COBOL Programs and Extract records containing the word "CALL".*/
/*--------------------------------------------------------------------*/
COBCALL:                      
                         
                 
   Address COMMAND                   
                         
          
   Parse Source . ctype ename etype emode .          
                   
   cobcall = ename 'DATA A'               
                         
     
   Arg fm .                     
                         
               
   If fm = '' Then                  
                         
           
      Do                      
                         
                 
         Say 'No Filemode Specified.  A Filemode is Required.'    
      
         Exit 4                    
                         
            
      End                      
                         
                
   'CMDCALL ESTATE * COBOL' fm               
                         
  
   If rc \= 0 Then Exit rc               
                         
      
   'PIPE COMMAND LISTFILE * COBOL' fm '(NOHEADER ISODATE'||,     
       
      '|CHANGE 68 / /0/|SPECS 1-17 1 W8-9 19|STEM PGM.'      
           
   If rc \= 0 Then Exit rc               
                         
      
   'ERASE' cobcall                   
                         
          
   If rc \= 0 & rc \= 28 Then Exit rc          
                         

   totcnt = 0                    
                         
              
   Do n = 1 to pgm.0                 
                         
          
      Parse Var pgm.n fn ft date time .            
                     
      'PIPE (NAME COBCALL ENDCHAR ?)',            
                      
         '| <' fn ft fm,                   /* Read COBOL Program */  
   
         '| SPECS RECNO 1.6 7-72 8',       /* Record Number, Record */ 
 
         '| NLOCATE 8 /*/',                /* Skip Comments */    
      
         '| LOCATE ANYCASE 8-* / CALL /',  /* Look for CALL Commands */ 

         '| SPECS /'pgm.n'/ 1 1-* NW',     /* Add File info */    
      
         '| C: COUNT LINES',               /* Count Records */    
      
         '| >>' cobcall,                   /* Write to file */    
      
      '? C:',                    
                         
              
         '| STRLITERAL APPEND /0/',        /* Just in Case */    
       
         '| VAR RECCNT',                   /* Record Count */    
       
      '' /* End COBCALL */                
                         
     
      totcnt = totcnt + reccnt              
                         
   
   End /* Do n = 1 to pgm.0 */              
                         
   
   'ESTATE' cobcall                  
                         
          
   If rc \= 0 Then                  
                         
           
      Do                      
                         
                 
         Say 'No "CALL" Statements Found in COBOL Programs on',    
     
             'Filemode' fm'.'               
                         
   
         Exit 12                   
                         
            
      End                      
                         
                
   Say totcnt '"CALL" Statements Found in COBOL Programs on',    
       
       'Filemode' fm'.'                 
                         
       
   'XEDIT' cobcall '(NOCLEAR'               
                         
   
   Exit rc                     
                         
                

Here is a small sample of output from COBOL Programs on my A-Disk:

IMSMAIN  COBOL    1987-12-03 16:59:18     31      CALL 'IMSSUB'.
IMSMAIN2 COBOL    1987-12-03 16:46:15     31      CALL 'IMSSUB2'.
SQLINIT  COBOL    2009-04-30 11:36:52      4      CALL 'DSNHADDR' USING 

SQL-CODEPTR OF SQL-PLIST12 SQLCA.
SQLINIT  COBOL    2009-04-30 11:36:52      5      DISPLAY 'After DB2 Call
  
1 ' SQL-INIT-FLAG
SQLINIT  COBOL    2009-04-30 11:36:52      6      CALL 'DSNHADDR' USING 

SQL-CODEPTR OF SQL-PLIST13 SQLCA.
SQLINIT  COBOL    2009-04-30 11:36:52      7      DISPLAY 'After DB2 Call
  
2 ' SQL-INIT-FLAG

Notice the DISPLAY statements.  The Exec makes a lot of assumptions, so 

any changes are left as an exercise to the reader!  :-)>

-- 
Dale R. 
Smith

Reply via email to