(no subject)
Mike Palandri
palandri@4j.lane.edu
Wed, 24 Sep 2003 11:19:52 -0700
Hi yall,
I'm puzzled by some behavior I encountered in QTP 7.10 F4 OpenVMS. Here's
a simple example distilled from the longer program:
A file has four items and four records with the following values:
Item0 Item1 Item2 Item3
AAAAAA 111111 1 A
AAAAAA 111111 2 B
AAAAAA 111111 2 C
AAAAAA 111111 3 D
This QTP reads the file and creates a subfile:
CAN CLE
ACCESS TESTREC
TEMP TI-ITEM INT*02
TEMP TI-REC-CNT INT*10
ITEM TI-ITEM INITIAL 0
ITEM TI-REC-CNT INITIAL 0
SORT ON ITEM0, ITEM1, ITEM2, TI-REC-CNT
ITEM TI-REC-CNT = TI-REC-CNT + 1
ITEM TI-ITEM = ITEM2 AT TI-REC-CNT RESET AT ITEM1
SUBFILE TT1 KEEP INCLUDE &
ITEM0, &
ITEM1, &
ITEM2, &
TI-REC-CNT,
&
TI-ITEM
Here's what ends up in the subfile:
Item0 Item1 Item2 TI-REC-CNT TI-ITEM
AAAAAA 111111 1 1 0
AAAAAA 111111 2 2 1
AAAAAA 111111 2 3 1
AAAAAA 111111 3 4 2
TI-REC-CNT provides a control break on every record. The break is used to
assign the value of ITEM2 to the temp TI-ITEM. Because TI-REC-CNT changes
on every record, I thought that this assignment would take place on every
record.
However, on the third record, where the value of Item2 is the same as Item2
in the second record, the break never occurs, and the assignment of Item2
to TI-ITEM doesn't happen. The break truly does not occur; I ran a trace
and found "at end" processing of Ti-Rec-Cnt on the first, third, and
fourth complexes, but not the second:
# NEW RECORD COMPLEX -> 1
**** PROCESSING AT END OF TI-REC-CNT 1
**** ITEM TI-ITEM = : AT TI-REC-CNT
**** BEFORE 0
**** AFTER 1
# NEW RECORD COMPLEX -> 3
**** PROCESSING AT END OF TI-REC-CNT 3
**** ITEM TI-ITEM = : AT TI-REC-CNT
**** BEFORE 1
**** AFTER 2
# NEW RECORD COMPLEX -> 4
**** PROCESSING AT END OF TI-REC-CNT 4
**** ITEM TI-ITEM = : AT TI-REC-CNT
**** BEFORE 2
**** AFTER 3
However, if an additional sort key is inserted on the sort statement
between Item2 and Ti-Rec-Cnt, the "At end" processing for Ti-Rec-Cnt occurs
on all four complexes, and the code works as (I) expected.
New sort statement:
SORT ON ITEM0, ITEM1, ITEM2, ITEM3, TI-REC-CNT
New resulting subfile:
Item0 Item1 Item2 TI-REC-CNT TI-ITEM
AAAAAA 111111 1 1 0
AAAAAA 111111 2 2 1
AAAAAA 111111 2 3 2
AAAAAA 111111 3 4 2
It seems to me that the "AT" for the lowest level sort key should be
processed the same regardless of the value of higher level sort keys, or
reports with headings at multiple levels of control breaks would not work.
Anybody know what's going on?
Thanks,
Mike
.