Closes a query that was opened by a previous OPEN QUERY statement.
The r-clsqry.p procedure defines a query, q-cust, which it shares with r-query.p. Each time you choose the Ascending, Descending, or CustNum button, the procedure opens a new query for q-cust. To do this, the procedure must first close an open query for each q-cust. Therefore, the CLOSE QUERY statement is used in the CHOOSE trigger for each of these buttons.
r-clsqry.p
| DEFINE NEW SHARED BUFFER x-cust FOR Customer.
DEFINE NEW SHARED QUERY  q-cust FOR x-cust.
DEFINE BUTTON b_quit LABEL "Quit"
  TRIGGERS:
    ON CHOOSE QUIT.
  END.
  
DEFINE BUTTON b_ascend  LABEL "Ascending".
DEFINE BUTTON b_descend LABEL "Descending".
DEFINE BUTTON b_num     LABEL "CustNum".
FORM b_ascend b_descend b_num b_quit
  WITH FRAME butt-frame ROW 1.
ON CHOOSE OF b_ascend DO:
  CLOSE QUERY q-cust.
  OPEN QUERY q-cust FOR EACH x-cust NO-LOCK BY x-cust.name.
  DISABLE ALL WITH FRAME butt-frame.
  RUN r-query.p.
END.
ON CHOOSE OF b_descend DO:
  CLOSE QUERY q-cust.
  OPEN QUERY q-cust FOR EACH x-cust NO-LOCK
    BY x-cust.name DESCENDING.
  DISABLE ALL WITH FRAME butt-frame.
  RUN r-query.p.
END.
ON CHOOSE OF b_num DO:
  CLOSE QUERY q-cust.
  OPEN QUERY q-cust FOR EACH x-cust NO-LOCK
    BY x-cust.CustNum.
  DISABLE ALL WITH FRAME butt-frame.
  RUN r-query.p.
END.
DO WHILE TRUE:
  ENABLE ALL WITH FRAME butt-frame.
  WAIT-FOR CHOOSE OF b_ascend, b_descend, b_num, b_quit.
END. | 
r-query.p