Project

General

Profile

stat1.p

Igor Skornyakov, 04/26/2021 02:45 PM

Download (3.11 KB)

 
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