1
|
find first _MyConnection no-lock.
|
2
|
find first _File where _file-name = 'Customer' no-lock no-error.
|
3
|
|
4
|
DEF VAR hBuffer AS HANDLE NO-UNDO.
|
5
|
DEF VAR hQuery AS HANDLE NO-UNDO.
|
6
|
DEF VAR n AS INT NO-UNDO.
|
7
|
|
8
|
OUTPUT TO 'stat.txt'.
|
9
|
DEFINE NEW SHARED VAR create-trg-cnt AS INTEGER NO-UNDO INIT 0.
|
10
|
DEFINE NEW SHARED VAR create-trg-cnt-max AS INTEGER NO-UNDO INIT 1.
|
11
|
|
12
|
RUN stat('PRE-CLEAN').
|
13
|
n = 0.
|
14
|
FOR EACH Customer:
|
15
|
DELETE Customer.
|
16
|
n = n + 1.
|
17
|
END.
|
18
|
MESSAGE n 'records deleted'.
|
19
|
|
20
|
RUN stat('CLEAN').
|
21
|
|
22
|
CREATE BUFFER hBuffer FOR TABLE 'customer'.
|
23
|
CREATE QUERY hQuery.
|
24
|
hQuery:SET-BUFFERS(hBuffer).
|
25
|
hQuery:QUERY-PREPARE('FOR EACH customer NO-LOCK').
|
26
|
hQuery:QUERY-OPEN().
|
27
|
|
28
|
RUN stat('QUERY-OPEN()').
|
29
|
|
30
|
DO TRANSACTION:
|
31
|
RUN addrec(1234, 'xxx1').
|
32
|
RUN addrec(1235, 'xxx2').
|
33
|
RUN addrec(1236, 'xxx3').
|
34
|
RUN addrec(1237, 'xxx4').
|
35
|
RUN addrec(1238, 'xxx5').
|
36
|
hBuffer:BUFFER-RELEASE().
|
37
|
END.
|
38
|
|
39
|
RUN stat('CREATE').
|
40
|
|
41
|
DO TRANSACTION:
|
42
|
hQuery:GET-FIRST().
|
43
|
hQuery:GET-CURRENT(EXCLUSIVE-LOCK).
|
44
|
hBuffer:BUFFER-DELETE().
|
45
|
RUN addrec(1239, 'xxx6').
|
46
|
RUN addrec(1235, 'xxx6').
|
47
|
hBuffer:BUFFER-RELEASE() NO-ERROR.
|
48
|
END.
|
49
|
|
50
|
RUN stat('CREATE AND FAIL').
|
51
|
|
52
|
hQuery:GET-FIRST().
|
53
|
RUN stat('GET-FIRST()').
|
54
|
|
55
|
hQuery:REPOSITION-FORWARD(1).
|
56
|
RUN stat('REPOSITION-FORWARD()').
|
57
|
|
58
|
hQuery:GET-LAST().
|
59
|
RUN stat('GET-LAST()').
|
60
|
|
61
|
|
62
|
DO TRANSACTION:
|
63
|
hQuery:GET-CURRENT(EXCLUSIVE-LOCK).
|
64
|
hBuffer:BUFFER-FIELD('customerName'):BUFFER-VALUE='yyy'.
|
65
|
hBuffer:BUFFER-RELEASE().
|
66
|
END.
|
67
|
|
68
|
RUN stat("UPDATE").
|
69
|
|
70
|
hQuery:GET-FIRST().
|
71
|
RUN stat('GET-FIRST()').
|
72
|
|
73
|
DO TRANSACTION:
|
74
|
hQuery:GET-CURRENT(EXCLUSIVE-LOCK).
|
75
|
hBuffer:BUFFER-DELETE().
|
76
|
END.
|
77
|
|
78
|
RUN stat('DELETE').
|
79
|
|
80
|
OUTPUT CLOSE.
|
81
|
DEF VAR C AS INT NO-UNDO INITIAL 0.
|
82
|
DEF VAR R AS INT NO-UNDO INITIAL 0.
|
83
|
DEF VAR U AS INT NO-UNDO INITIAL 0.
|
84
|
DEF VAR D AS INT NO-UNDO INITIAL 0.
|
85
|
|
86
|
PROCEDURE stat:
|
87
|
DEF INPUT PARAM expr AS CHAR.
|
88
|
FIND FIRST _UserTableStat where _UserTableStat-Conn = _MyConnection._MyConn-UserId AND _UserTableStat-Num = _File._file-num no-lock NO-ERROR.
|
89
|
IF NOT ERROR-STATUS:ERROR THEN DO:
|
90
|
find first _File where _file-num = _UserTableStat-Num no-lock no-error.
|
91
|
message FILL(' ', 20 - LENGTH(expr)) + expr + ":"
|
92
|
'C:' (_UserTableStat-create - C)
|
93
|
'R:' (_UserTableStat-read - R)
|
94
|
'U:' (_UserTableStat-update - U)
|
95
|
'D:' (_UserTableStat-delete - D)
|
96
|
.
|
97
|
C = _UserTableStat-create.
|
98
|
R = _UserTableStat-read.
|
99
|
U = _UserTableStat-update.
|
100
|
D = _UserTableStat-delete.
|
101
|
END.
|
102
|
ELSE
|
103
|
message 'No _UserTableStat record found'.
|
104
|
END.
|
105
|
|
106
|
PROCEDURE addrec:
|
107
|
DEF INPUT PARAM num AS CHAR.
|
108
|
DEF INPUT PARAM name AS CHAR.
|
109
|
DEF VAR rc AS LOGICAL NO-UNDO.
|
110
|
|
111
|
rc = hBuffer:BUFFER-CREATE() NO-ERROR.
|
112
|
IF rc THEN DO:
|
113
|
hBuffer:BUFFER-FIELD('customerNum'):BUFFER-VALUE= num.
|
114
|
hBuffer:BUFFER-FIELD('customerName'):BUFFER-VALUE=name.
|
115
|
END.
|
116
|
ELSE DO:
|
117
|
MESSAGE 'Error in create record:' ERROR-STATUS:GET-MESSAGE(1).
|
118
|
END.
|
119
|
END.
|
120
|
|