====== Pop.Select subroutine ====== ==== Description ==== Restores a previously active select list, saved by the [[push_select|Push.Select subroutine]], into Cursor 0. ==== Syntax ==== **Pop.Select**(//f1, f2, f3, f4//) ==== Parameters ==== The Pop.Select subroutine has the following parameters: ^Parameter^Description^ |f1|Reserved.| |f2|Contains the list of record keys in the active select list| |f3|Contains the file variable for the table referenced in the active select list.| |f4|Reserved|| ==== See Also ==== [[push_select|Push.Select subroutine]] ==== Example ==== declare function Set_FSError declare subroutine push.select, pop.select open "CUSTOMERS" To customers_table else status = Set_FSError() return end open 'INVOICES' to invoices_table else status = Set_FSError() return end select customers_table Done = 0 loop ReadNext @ID else Done = 1 Until Done Do read @RECORD From customers_table, @ID else status = Set_FSError() return end * processing logic here ... GoSub PROCESS_CUSTOMER Repeat return 0 PROCESS_CUSTOMER: /* process the customer row */ call push.select(f1, f2, f3, f4) gosub PROCESS_CUSTOMER_INVOICES call pop.select (f1, f2, f3, f4) return PROCESS_CUSTOMER_INVOICES: /* process the invoices for a customer */ /* can use cursor 0 to do SELECT and READNEXT */ /* for example, the SELECT below will not destroy the SELECT */ /* on the CUSTOMERS table */ select invoices_table return