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