Project

General

Profile

testsFile.p

Eduard Soltan, 05/22/2024 02:37 AM

Download (2.94 KB)

 
1

    
2

    
3
def temp-table tt1 
4
     field f1 as integer
5
     field f2 as integer.
6

    
7
def temp-table tt2 
8
     field f3 as integer
9
     field f4 as integer.
10

    
11
def var i as int.
12
do transaction i = 1 to 5:
13
    create tt1.
14
    tt1.f1 = i.
15
    tt1.f2 = i.
16
end.
17

    
18
do transaction i = 1 to 3:
19
    create tt2.
20
    tt2.f3 = i.
21
    tt2.f4 = i.
22
end.
23

    
24
//4GL syntax
25
def var a as int.
26

    
27
do stop-after 5:
28
    a = a + 1.
29
end.
30

    
31
do stop-after 5 + 1:
32
    a = a + 1.
33
end.
34

    
35
def var timeout as int.
36
def var decimal_timeout as decimal.
37
def var int64_timeout as int64.
38

    
39
timeout = 4.
40
do stop-after timeout:
41
  a = a + 1.
42
end.  
43

    
44
decimal_timeout = 3.14.
45
do stop-after decimal_timeout:
46
  a = a + 1.
47
end.
48

    
49
int64_timeout = 3.14.
50
do stop-after int64_timeout:
51
  a = a + 1.
52
end. 
53

    
54
do stop-after 5 on stop undo, leave:
55
    a = a + 1.
56
end.
57

    
58
// Anormal condition flow 
59

    
60
do stop-after 5 on stop undo, leave:
61
    repeat:
62
       a = a + 1.
63
    end.
64
end.
65

    
66
block1:
67
do stop-after 5 on stop undo, retry:
68
    if retry then do:
69
       message "Retry so block".
70
       leave block1.
71
    end.
72

    
73
    repeat:
74
        a = a + 1.
75
    end.
76
end.
77

    
78
def var iter as int initial 0.
79
def var b as int.
80
forBlock1:
81
for each tt2 stop-after 3
82
             on stop undo, leave:
83
    if retry then do:
84
        message "for retry".
85
        leave forBlock1.
86
    end.
87
    
88
    message "Iteration " tt2.f3.
89
    
90
    repeat:
91
        b = b + 1.
92
    end.
93
end.
94

    
95
// Timmers
96

    
97
def var l as int initial 1.
98

    
99
block2:
100
do stop-after 5 on stop undo, retry:
101
   if retry then do:
102
      if l = 2 then do:
103
         message "retry 2".
104
         leave block2.
105
      end. 
106
      
107
      message "retry 1".
108
      l = 2.
109
      repeat:
110
         a = a + 1.
111
      end.
112
  
113
   end.
114

    
115
   repeat:
116
      a = a + 1.
117
   end.
118
end.
119

    
120

    
121
// Nested Blocks
122
do stop-after 3 on stop undo, leave:
123
   do stop-after 8:
124
      repeat:
125
         a = a + 1.
126
      end.
127
   end.
128
end.
129

    
130
block1:
131
do stop-after 3 on stop undo, retry:
132
   if retry then do:
133
      message "Nested block1 retry".
134
      leave block1.
135
   end.
136
    
137
   do stop-after 8:
138
      repeat:
139
         a = a + 1.
140
      end.
141
   end.
142
end.     
143

    
144

    
145
do stop-after 8 on stop undo, leave:
146
   do stop-after 3:
147
      repeat:
148
         a = a + 1.
149
      end.
150
   end.
151
end. 
152

    
153
block2:
154
do stop-after 8 on stop undo, retry:
155
   if retry then do:
156
      message "Nested blokc2 retry".
157
      leave block2.
158
   end.
159
    
160
   do stop-after 3:
161
      repeat:
162
         a = a + 1.
163
      end.
164
   end.
165
end.
166

    
167
iter = 0.
168
do stop-after 3 on stop undo, leave:
169
   message "Iteration " iter.
170
   iter = iter + 1.
171
    
172
   for each tt1 stop-after 5 on stop undo, next:
173
       repeat:
174
           a = a + 1.
175
       end.
176
   end.
177
end.
178

    
179
outterBlock:
180
do stop-after 8 on stop undo, retry:
181
   if retry then do:
182
      message "OuterBlock retry".
183
      leave outterBlock.
184
   end.
185
   
186
   
187
   innerBlock:
188
   do stop-after 3 on stop undo, retry:
189
      if retry then do:
190
        message "InnerBlock retry".
191
        leave innerBlock.
192
      end.
193
       
194
      repeat:
195
         a = a + 1.
196
      end.
197
   end.
198
   
199
   repeat:
200
      a = a + 1.
201
   end.
202
end.