Buy Download Tour

The following text demonstrates just how easy it is to
read a well-documented TextPipe filter. TextPipe
formats the filter tree, comments and file list in an
easy-to-read output. This command is just one of the
exporting options found under File Menu\Export. Other options
include exporting to a command line, JScript, VBScript and
a web page.

Filter Title: Y:\COMPANY\DataArchitect\Administrative\TextPipeFilters\SAMPLE.fll

Filter List
-----------
Filter options
|  [X] Log to file
|  [X] Append to logfile
|  Log filename: c:\DataArchitect\textpipe.log
|  Threshold 500
|
|--Input from file(s)
|     [ ] Confirm before processing each file
|     [ ] Confirm before processing read/only files
|     [ ] Delete input files are processing
|     Process binary files
|   
|--Remove binary characters
|   
|--Select lines NOT matching [(=|<>| in |move ).*('\S+')]
|  |  [ ] Include line numbers
|  |  [ ] Include filename
|  |  [ ] Match case
|  |  [ ] Count matches
|  |
|  |--Comment...
|  |     Above line contains secondary text required on each line ;  set "include line numbers" parameter to NO
|  |   
|  +--Delete all
|      
|--Comment...
|     looking for HARD CODED VALUES requires one of the following values
|       =
|     <>
|      in 
|     move 
|     
|     
|     so need a filter expression that says must have one of them ("OR" ) as follows:
|     
|         =|<>| in |move 
|   
|--Comment...
|  |  also, if there is a specific kind of value looking for, then required format mask 
|  |  should also be included in NOTmatching line above
|  |  
|  |  e.g. if looking for TRGP GRP TYP CDs (which are VARCHAR(2), should add a format mask like ('\S+'),
|  |  where "\S" means any NON-SPACE character, so '\S+' means at least one NON-SPACE character enclosed in quotes.
|  |  
|  |  The reason why can not look for '\S\S' is because if a particular hard-coded value is only one character for a  VARCHAR(2) column, then that value would be skipped.  For example, for value 2,
|  |   MOVE '2'               TO CSDT1-DT-TYP-CD.
|  |  
|  |  would be ignored by '\S\S'
|  |  but it is found by ('\S+')
|  |  
|  |
|  |--Comment...
|  |     If the target column is numeric, do NOT require  a tick-mark on each line
|  |   
|  +--Comment...
|        If the target column is numeric, can require a numeric value on lines
|      
|--Comment...
|     So if looking for a hard-coded value of VARCHAR(2),
|     
|     filter characters should be:
|     (=|<>| in |move ).*('\S+')
|     
|     which is made up of two subexpressions () that BOTH must be on all lines,  using the following format:
|     (subexpression1).*(subexpression2)
|     
|     where:
|     ".*"    means   any set of characters in between the two subexpressions matched  zero or more times 
|     "\S"  means   any NON-SPACE character, 
|     "*"     means   match zero or more times, and 
|     "+"    means   at least one
|     
|     The following two examples would be found by above filter:
|     ='02'
|     move 'AB'
|     MOVE '2' 
|   
|--** DISABLED ** Display debug window
|   
|--Select lines matching [NVL|HV|....\*| FILLER ]
|  |  [ ] Include line numbers
|  |  [ ] Include filename
|  |  [ ] Match case
|  |  [ ] Count matches
|  |
|  |--Comment...
|  |     Above line contains text not allowed on each line ;  set "include line numbers" parameter to NO
|  |   
|  +--Delete all
|      
|--** DISABLED ** Display debug window
|   
|--Select lines matching [((PREM_TRNCH_STAT).+(stat\Dcd))|((PMTS).+(stat\Dcd))|((BEN_TRNCH_STAT).+(stat\Dcd))|((BNTS).+(stat\Dcd))]
|  |  [X] Include line numbers
|  |  [X] Include filename
|  |  [ ] Match case
|  |  [ ] Count matches
|  |
|  +--Comment...
|     |  To specify two subexpressions () that BOTH must be on all lines, can use the following format:
|     |  (subexpression1).+(subexpression2)
|     |  where ".+" means any set of characters in between with at least one character in between the two subexpressions.
|     |  ("." means any character and "+" means match one or more times
|     |  
|     |  The PRODUCT standard for referring to a column in a table is:  TABLE_ALIAS1.column_name.
|     |  
|     |  There appears to be some variation in the way this is specified in PRODUCT.  For example, BNTP1.TYP_CD was specified the following four ways:
|     |  
|     |  BNTP.TYP_CD
|     |  BNTP-TYP-CD
|     |  BNTP1-TYP-CD
|     |  
|     |  To handle this variation, the following COMPLEX filter for Textpipe appears to work:
|     |  (bntp).+(typ\Dcd)
|     |  means the line MUST contain both (bntp) and (typ\Dcd), 				              where \D means any non-digit
|     |  
|     |  and finds the following lines in PRODUCT code:
|     |  006540     IF RKRL2-BNTP-TYP-CD(RKRL2-SUB) = '07'                       
|     |  000920           BNTP.TYP_CD           IN ('01','02')          AND
|     |  003640     MOVE '07'             TO BNTP1-TYP-CD.
|     |  057550     MOVE '07'             TO BNTP1-TYP-CD.                       
|     |  002940        IF BNTP1-TYP-CD = '03'
|     |  003020     MOVE '03'                   TO BNTP1-TYP-CD.
|     |  008360        MOVE '06'             TO VBNTC-TYP-CD                     
|     |  004750        IF BNTP1-TYP-CD = '03'
|     |  010410        MOVE '06'             TO VBNTC-TYP-CD                     
|     |  
|     |  However, because of the reference to a view (VBNTC-TYP-CD) in certain programs for getting at this column, a more comprehensive filter is as follows:
|     |  (bnt).+(typ\Dcd)
|     |  Note that this also finds multiple false-positives as VBNTC-TYP-CD also refers to TYP_CD in other tables.
|     |
|     +--Comment...
|           Above line contains PRIMARY text looking for;  set "include line numbers" parameter to yes
|         
|--** DISABLED ** Display debug window
|   
|--Add footer [\r\n\r\n]
|   
|--Remove blank lines
|   
|--** DISABLED ** Truncate to width 80
|   
|--Word wrap (column width 80)
|   
|--Replace [COB:] with [COB]
|     [ ] Match case
|     [ ] Whole words only
|     [ ] Case sensitive replace
|     [ ] Prompt on replace
|     [ ] Skip prompt if identical
|     [ ] First only
|   
|--Replace [FMB:] with [FMB]
|     [ ] Match case
|     [ ] Whole words only
|     [ ] Case sensitive replace
|     [ ] Prompt on replace
|     [ ] Skip prompt if identical
|     [ ] First only
|   
+--Merge output to file w:\temp\sample.doc
    

Files List
----------
C:\TEMP\cobol_programs\*.COBx
Q:\prod40\test\source\CB2*.cob
Q:\PROD40\TEST\pll_32\*.pllX
Q:\PROD40\TEST\FORMS_32\*.FMBX

Z:\PROD40\DEVELOP\PRC\*.PRCX
Q:\prod40\test\copy\CB2*.cobX

Comments
--------
On the "FILES TO PROCESS"  tab, the first row is for testing purposes:
C:\TEMP\cobol_programs\*.COBx

Next are real PRODUCT code:
Q:\prod40\test\source\*.COB
Q:\PROD40\TEST\pll_32\*.pll
Q:\PROD40\TEST\FORMS_32\*.FMB
Z:\PROD40\DEVELOP\PRC\*.PRC
Q:\prod40\test\copy\*.cob


when want to test:
1) put some programs that include data looking for in the "C:\TEMP\cobol_programs\" directory 
2) remove x from end of "C:\TEMP\cobol_programs\*.COBx"
3) add an x on end of four rows containing real PRODUCT code so the test will skip them
Buy Download Tour