Project

General

Profile

t2524a.p

Ovidiu Maxiniuc, 02/24/2015 03:11 PM

Download (3.29 KB)

 
1
def temp-table tt0 field f1 as int. 
2

    
3
PROCEDURE createSomeDynamicBuffers:
4
   DEFINE VARIABLE tth AS HANDLE NO-UNDO.
5
   DEFINE VARIABLE bh AS HANDLE NO-UNDO.
6
   
7
   CREATE TEMP-TABLE tth.
8
   tth:CREATE-LIKE(BUFFER book:HANDLE).
9
   tth:ADD-NEW-FIELD("f1", "integer").
10
   tth:TEMP-TABLE-PREPARE("newBook").
11

    
12
   bh = tth:DEFAULT-BUFFER-HANDLE.
13
   FOR EACH Book NO-LOCK:
14
      bh:BUFFER-CREATE.
15
      bh:BUFFER-COPY(BUFFER book:handle).
16
   END.
17
END PROCEDURE.
18

    
19
PROCEDURE createSomeDynamicBuffers2:
20
   DEFINE VARIABLE tth2 AS HANDLE NO-UNDO.
21
   DEFINE VARIABLE bh2 AS HANDLE NO-UNDO.
22
      
23
   CREATE TEMP-TABLE tth2.
24
   tth2:CREATE-LIKE(BUFFER book:HANDLE).
25
   tth2:ADD-NEW-FIELD("f2", "character").
26
   tth2:TEMP-TABLE-PREPARE("newBook2").
27

    
28
   bh2 = tth2:DEFAULT-BUFFER-HANDLE.
29
   FOR EACH Book NO-LOCK:
30
      bh2:BUFFER-CREATE.
31
      bh2:BUFFER-COPY(BUFFER book:handle).
32
   END.
33
END PROCEDURE.
34

    
35
PROCEDURE pDeleteDynamicBuffers:
36
   DEFINE VARIABLE VhCurrent AS HANDLE   NO-UNDO.
37
   DEFINE VARIABLE VhNext AS HANDLE      NO-UNDO.
38
   DEFINE VARIABLE cnt AS INTEGER INIT 0 NO-UNDO.
39
/* IF NOT SESSION:REMOTE THEN DO:
40
      MESSAGE "NOT SESSION:REMOTE".
41
      RETURN.
42
   END.
43
   MESSAGE "SESSION:REMOTE is true". */
44
   VhCurrent = SESSION:FIRST-BUFFER NO-ERROR.
45
   DO WHILE VALID-HANDLE(VhCurrent) WITH 5 DOWN:
46
       VhNext = VhCurrent:NEXT-SIBLING.
47
       cnt = cnt + 1.
48
       
49
       DISPLAY cnt + 0 "crt:"  VhCurrent:NAME.
50
       IF VALID-HANDLE(VhCurrent) THEN DO:
51
           /*only delete dynamic buffers*/
52
           IF VhCurrent:DYNAMIC THEN DO:
53
              DISPLAY "deleting" VhCurrent:NAME "buffer".
54
              DELETE OBJECT VhCurrent:TABLE-HANDLE. 
55
              /* DISPLAY VhCurrent:PREV-SIBLING. */
56
           END.
57
       END.
58
       VhCurrent = VhNext.
59
   END.
60
   MESSAGE cnt.
61
END PROCEDURE.
62

    
63

    
64

    
65

    
66

    
67

    
68
DEFINE VARIABLE b2 AS HANDLE.
69
b2 = BUFFER book:HANDLE.
70
FIND LAST book.
71

    
72
DEFINE VARIABLE b3 AS HANDLE.
73
CREATE BUFFER b3 FOR TABLE "book" BUFFER-NAME "b3s".
74
b3:FIND-FIRST().
75

    
76
DEFINE BUFFER sb FOR book.
77
FIND FIRST sb.
78
FIND NEXT sb.
79

    
80
DISPLAY sb.isbn string(b2::isbn) string(b3::isbn) b3:NAME.
81

    
82
RUN createSomeDynamicBuffers.
83
RUN createSomeDynamicBuffers2.
84

    
85
RUN pDeleteDynamicBuffers.
86
MESSAGE "Done.".
87

    
88
/*
89
Expected output:
90
┌──────────────────────────────────────────┐
91
│ISBN                                      │
92
│───────────────                           │
93
│111-11-1        tt       111-11-0 ?       │
94
└──────────────────────────────────────────┘
95
┌─────────────────────────────────────────────────┐
96
│         1 crt: newBook  deleting newBook  buffer│
97
│         2 crt: newBook2 deleting newBook2 buffer│
98
│         3 crt: b3s      deleting b3s      buffer│
99
│                                                 │
100
│                                                 │
101
└─────────────────────────────────────────────────┘
102

    
103
Invalid or inappropriate handle value given to DELETE OBJECT or DELETE PROCEDURE statement. (5425)
104
Done.
105
*/