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 themBuy Download Tour