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