Project

General

Profile

ds-test.p

Igor Skornyakov, 11/30/2022 12:26 PM

Download (1.34 KB)

 
1
DEFINE TEMP-TABLE tt NO-UNDO
2
  FIELD cE  AS CHARACTER
3
  FIELD cM  AS CHARACTER
4
  FIELD val AS CHARACTER
5
  INDEX idxE AS UNIQUE cE.
6

    
7
DEFINE DATASET ds FOR tt
8
  DATA-RELATION r1 FOR tt, tt
9
    RELATION-FIELDS (cE, cM) RECURSIVE.
10

    
11
OUTPUT TO 'ds-test.txt'. 
12
CREATE tt. tt.cE = 'm0'. tt.val = '-m0'. 
13
CREATE tt. tt.cE = 'm1'. tt.cM = 'm0'. tt.val = 'm0-m1'. 
14
CREATE tt. tt.cE = 'm2'. tt.cM = 'm0'. tt.val = 'm0-m2'. 
15
CREATE tt. tt.cE = 'e1'. tt.cM = 'm1'. tt.val = 'm1-e1'. 
16
CREATE tt. tt.cE = 'e2'. tt.cM = 'm2'. tt.val = 'm2-22'.
17

    
18
DEFINE QUERY qtt1 FOR tt.
19

    
20
DEFINE DATA-SOURCE srctt1 FOR QUERY qtt1 tt KEYS(cE).
21
BUFFER tt:ATTACH-DATA-SOURCE(DATA-SOURCE srctt1:HANDLE).
22
QUERY qtt1:QUERY-PREPARE("FOR EACH tt").
23

    
24
DATASET ds:FILL() NO-ERROR.
25
RUN show-error("after ds:FILL()").
26

    
27
BUFFER tt:DETACH-DATA-SOURCE(). 
28

    
29
OUTPUT CLOSE.
30

    
31
PROCEDURE show-error:
32
    DEF INPUT PARAM action AS CHAR.
33
    
34
    DEF VAR nmsg AS INTEGER NO-UNDO.
35
    MESSAGE "After" action ": error =" ERROR-STATUS:ERROR 
36
            "num-messages =" ERROR-STATUS:NUM-MESSAGES 
37
            "type =" ERROR-STATUS:TYPE 
38
            .
39
    IF ERROR-STATUS:NUM-MESSAGES > 0 THEN DO:
40
        DO nmsg = 1 TO ERROR-STATUS:NUM-MESSAGES:
41
          MESSAGE "***" ERROR-STATUS:GET-NUMBER(nmsg) ':' ERROR-STATUS:GET-MESSAGE(nmsg).
42
        END.
43
    END.                      
44
END.