I,LINE#SOURCE1=0000024,LINE#SOURCE2=0000023
One line was added in SOURCE1 after line 23.
D,LINE#SOURCE1=0000024,LINE#SOURCE2=0000011
Line 24 in SOURCE1, that corresponded to line 11 in SOURCE2, was deleted.
R,RANGE#SOURCE1=(0000006,0000008),RANGE#SOURCE2=(0000006,0000009)
Lines 6 through 9 in SOURCE2 correspond to lines 6 through 8 in SOURCE1.
Example 1
Use built-in process BMSUBST to substitute dates only, and compare the rest of the line as is. Print out only lines that were changed or added to SOURCE2.
Table 256 ON COMPARE Input Data – Example 1
DD#BEFORE:
GLOBAL BANK INC. DATE: 22/09/00
******************
* LOAN INTEREST *
******************
OPEN DATE DUE DATE INTEREST UPDATED ON
========== ========== ======== ==========
08/03/95 08/03/96 5.32 % 22/02/95
09/12/95 09/12/96 5.13 % 24/11/95
11/12/95 11/12/96 5.60 % 24/11/95
05/02/96 05/02/97 5.70 % 02/02/94
06/06/96 06/06/97 5.26 % 01/01/96
10/08/96 10/08/97 5.78 % 01/01/96
END OF REPORT
DD#AFTER:
GLOBAL BANK INC. DATE: 22/09/2000
******************
* LOAN INTEREST *
******************
OPEN DATE DUE DATE INTEREST UPDATED ON
========== ========== ======== ==========
08/03/1995 08/03/1990 5.32 % 22/02/1995
09/12/1995 09/12/1996 5.13 % 24/11/1900
11/12/1995 11/12/1996 5.60 % 24/11/1995
05/02/1996 05/02/1997 5.70 % 02/02/1994
06/06/1996 06/06/1997 5.26 % 01/01/1996@@@
10/08/1996 10/08/1997 5.78 % 01/01/1996
END OF REPORT
Figure 248 ON COMPARE Testing Rule – Example 1
EXECUTE 'RECONCIL'
ON_COMPARE
SOURCE1
DD 'DDBEFORE' PROCESS BUILTIN 'BMSUBST'
SUBSTFROM '??/??/?? ' SUBSTTO '??/??/19??'
SOURCE2
DD 'DD#AFTER'
ON_PARM MODE DS LINECT 80
WHEN FLINE 1 TLINE 999 FCOL 1 TCOL 1 SEARCH '.AL.'
DO EXTRACT 'LINE' LEVEL 0 LINE +0 FCOL 1 TCOL 80
DO BLOCK 'CHKDATE'
EXECUTE ’END’
ON_DATA
ALWAYS
DO TERMINATE RESULT OK USER-CODE 0
EXECUTE 'CHKDATE'
ON_DATA
IF 'SUBSTR(1,1,LINE) = ''I'''
DO SET 'DIFFLINE' EVAL 'SYSCURLINE'
DO PRINT DATA 'NOT OK ===>%%DIFFLINE'
Figure 249 ON COMPARE Output – Example 1
These output lines refer to those lines in the DD#AFTER report of Table 256 that contain bolded items.
NOT OK ===> 08/03/1995 08/03/1900 5.32 % 22/02/1995
NOT OK ===> 09/12/1995 09/12/1996 5.13 % 24/11/1900
NOT OK===> 06/06/1996 06/06/1997 5.26 % 01/01/1996@@@
Example 2
Substitute dates in specific columns with a user block. Compare the rest of the line as is.
Table 257 ON COMPARE Input Data – Example 2
DO BEFORE
GLOBAL BANK INC.
PAGE: 1
*******************************
C U S T O M E R L I S T I N G
*******************************
ACCOUNT OPEN CLOSE DEPOSIT
NO. DATE DATE AMOUNT ($)
======== ==== ===== ==========
12-56-82 02-04-93 02-04-96 3,000.00
12-56-45 09-08-95 09-08-99 7,500.00
12-56-36 01-02-98 01-02-02 1,000.00
22-68-25 03-06-94 03-06-99 10,000.00
22-68-75 09-07-97 09-07-99 8,000.00
22-56-57 02-05-94 02-05-97 5,000.00
22-56-36 09-09-96 09-09-99 9,500.00
12-56-25 02-04-93 02-04-96 3,000.00
12-66-83 09-08-95 09-08-99 7,500.00
12-66-98 01-02-98 01-22-03 2,000.00
22-68-75 03-06-94 03-06-99 10,000.00
22-68-56 09-07-97 09-07-01 8,000.00
22-76-54 02-05-94 12-05-97 5,000.00
22-76-23 09-09-96 09-09-99 9,500.00
DO AFTER
GLOBAL BANK INC.
PAGE: 1
*******************************
C U S T O M E R L I S T I N G
*******************************
ACCOUNT OPEN CLOSE DEPOSIT
NO. DATE DATE AMOUNT ($)
======== ==== ===== ==========
12-56-82 02-04-1993 02-04-1996 3,000.00
12-56-45 09-08-1995 09-08-1999 7,500.00
12-56-36 01-02-1998 01-02-0002 1,000.00
22-68-25 03-06-1994 03-06-1999 10,000.00
22-68-75 09-07-1997 09-07-1999 8,000.00
22-56-57 02-05-1994 02-05-1997 5,000.00
22-56-36 09-09-1996 09-09-1999 9,500.00
12-56-25 02-04-1993 02-04-1996 3,000.00
12-66-83 09-08-1995 09-08-1999 7,500.00
12-66-98 01-02-1998 01-22-@@03 2,000.00
22-68-75 03-06-1994 03-06-1999 10,000.00
22-68-56 09-07-1997 09-07- 01 8,000.00
22-76-54 02-05-1994 12-05-1997 5,000.00
22-76-23 09-09-1996 09-09-1999 9,500.00
Figure 250 ON COMPARE Testing Rule – Example 2
EXECUTE 'RECONCIL'
ON_COMPARE
SOURCE1
DD 'DDBEFORE' PROCESS USERBLOCK 'USERBL'
SOURCE2
DD 'DD#AFTER'
ON_PARM MODE DS LINECT 80
WHEN FLINE 1 TLINE 999 FCOL 1 TCOL 1 SEARCH 'I'
DO EXTRACT 'LINE' LEVEL 0 LINE +0 FCOL 1 TCOL 80
DO SET 'OUT_LINE' EVAL 'SYSCURLINE'
DO PRINT DATA 'NOT OK ==> %%OUT_LINE'
EXECUTE ’END’
ON_DATA
ALWAYS
DO TERMINATE RESULT OK USER-CODE 0
EXECUTE 'USERBL'
ON_DATA
ALWAYS
DO SET 'CH' EVAL 'SUBSTR(2,1,SYSCURLINE)'
IF ISNUMBER(CH)
DO SET 'SYSCURLINE' EVAL 'SUBSTR(1,20,SYSCURLINE)//''19''
//SUBSTR(21,12,SYSCURLINE)//''19''//SUBSTR(33,100,SYSCURLINE)'
Figure 251 ON COMPARE Output – Example 2
These output lines refer to those lines in the DD#AFTER report of Table 257 that contain bolded items.
NOT OK ==> C U S T O M E R L I S T I N G
NOT OK ==> 12-56-36 01-02-1998 01-02-0002 1,000.00
NOT OK ==> 12-66-98 01-02-1998 01-22-@@03 2,000.00
NOT OK ==> 22-68-56 09-07-1997 09-07- 01 8,000.00
Note: After reconstructing the line, the lengths of the SOURCE1 and SOURCE2 lines must remain the same in order for the comparison to determine that they are identical.
For examples of how the ON COMPARE statement can be used for converting currencies, see Euro Support.
Parent Topic |