Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Reduce subroutine ====== ==== Description ==== Creates a cursor using a filter or applies a filter to an existing cursor. ==== Syntax ==== **Reduce**(//reduce_script//, //sort_list//, //mode//, //table_name//, //cursorvar//, //flag//) ==== Parameters ==== The Reduce subroutine has the following parameters. ^Parameter^Description^ |//reduce_script//|Used to pass an expression containing the formatted reduction criteria. The information passed in //reduce_script// must be formatted as follows.\\ \\ · All column names must be enclosed in braces { }.\\ \\ · Column names must not have spaces in them.\\ \\ · All constants must be on the right side of the comparison operator and must be enclosed in either single or double quotes.\\ \\ · All comparison operators must be reduced to the primitive set of operators and must be separated by spaces.\\ \\ __Operator__ - __Primitive__\\ Between - Between\\ Equal to - EQ\\ Less than - LT\\ Greater than - GT\\ Less than or equal to - LE\\ Greater than or equal to - GE\\ Not - Not\\ Starting with - ]\\ Ending with - [\\ Containing - [ ]\\ Matches - Match\\ Range - From To\\ Sunday - Sun\\ Monday - Mon\\ Tuesday - Tue\\ Wednesday - Wed\\ Thursday - Thu\\ Friday - Fri\\ Saturday - Sat\\ Today - Today\\ Yesterday - Yst\\ Tomorrow - Tom\\ Next - Next\\ Last - Last\\ \\ __Example Assignments for reduce_script:__\\ reduce_script = "WITH NOT {DATE} EQ '9-23-59'"\\ reduce_script = "WITH {CITY} EQ 'Boston' OR WITH {STATE} EQ 'CA'"\\ reduce_script = 'WITH {GRADE_POINT} FROM "2.0" TO "4.0"'\\ reduce_script = 'WITH {MAJOR} EQ ': Quote(major_var)\\ reduce_script := ' AND WITH {MINOR} EQ ' : Quote(minor_var)\\ reduce_script = 'WITH {INV_DATE} LT ' : Quote(Date() - 30)\\ reduce_script := ' OR WITH {invoice_amt} GE "1000"'\\ reduce_script = 'WITH {PHONE} Match "3N-4N"'| |//Sort_list//|Pass the sort criteria in //sort_list//. The sort criteria requires the same format as when used in Select ... By.\\ \\ If the program intends to sort, both the call to Reduce and the Select statement must use the same //sort_list//.\\ \\ __Example assignments for //sort_list//:__\\ sort_list = "CITY"\\ sort_list = "ST" : @FM : "city"\\ sort_list = "#INV_TOTAL"\\ sort_list = "ST" : @FM : "#INV_TOTAL"| |//Mode//|Used to pass one of three values:\\ \\ __Value__ - __Description__\\ 0 - Indicates that these are new reduction criteria for an existing cursor.\\ 1 - Indicates that the subroutine should return the results of the reduction in the next available cursor.\\ 2 - Indicates that these are additional criteria for an existing cursor. The new criteria will be joined with a logical And to any previous criteria.| |//table_name//|Used to pass the name of the table to be searched.| |//cursorvar//|Used to pass a cursor already initialized (Modes 0 and 2) or a cursor to be initialized (Mode 1).| |//flag//|Returns true if the subroutine was successful and false if unsuccessful.| ==== See Also ==== [[select_by|Select...By]] ==== Example ==== <code> Function Reduce_Example(param1) * The following code provides reduction criteria to a selection of keys * from CUSTOMERS using Select...By. Declare Subroutine Reduce, Msg, FsMsg $Insert Logical Equ new_exist$ To 0 ; * Reduce Mode 0 Equ next_cur$ To 1 Equ add_exist$ to 2 table_name = "CUSTOMERS" flag = "" done = False$ CursorVar = "" * Clears all cursors For counter = 0 To 8 ClearSelect counter Next counter sort_list = "STATE" Reduce_Script = "WITH {STATE} EQ 'NY' OR WITH {STATE} EQ 'CA'" mode = NEXT_CUR$ Reduce(reduce_script, sort_list, mode, table_name, Cursorvar, flag) If flag then Select table_name By sort_list Using Cursorvar then Open table_name To file_var then ctr = 0 Loop ReadNext key Using Cursorvar By AT Else done = TRUE$ Until done Read rec From file_var, key then Gosub Processing end Repeat End Else FsMsg() End End Else FsMsg() end End Else FsMsg() End Return ctr Processing: ctr += 1 return </code> guides/programming/programmers_reference_manual/reduce.txt Last modified: 2024/06/19 20:20by 127.0.0.1