> +- SORT_ACTION_NAMES > | IMPORTS: > | Group View group_import (optional,50,explicit,import only) > | Entity View g_import transaction_type_work > (optional,transient) > | action_name (optional) > | action_code (optional) > | EXPORTS: > | Group View group_export (50,explicit,export only) > | Entity View g_export transaction_type_work (transient) > | action_name > | action_code > | LOCALS: > | Work View local_num_sorted ief_supplied > | count > | Work View local_counter ief_supplied > | count > | Work View last_import ief_supplied > | count > | Group View group_local_1 (50,explicit) > | Entity View g_local_1 transaction_type_work > | action_name > | action_code > | Group View group_local_2 (50,explicit) > | Entity View g_local_2 transaction_type_work > | action_name > | action_code > | Entity View local_1 transaction_type_work > | action_name > | action_code > | Entity View local_2 transaction_type_work > | action_name > | action_code > | ENTITY ACTIONS: > | > | NOTE > **************************************************************** > | Purpose: Sort a list in ascending order via Bubble sort > | > **************************************************************** > | > | NOTE ***Initialize counters. > | > | SET last_import ief_supplied count TO LAST OF group_import > | SET local_num_sorted ief_supplied count TO 0 > | > | NOTE *** Use a local group to do sorting. It will alternate between > | *** group_local_2 and group_local_1. > | > | SET SUBSCRIPT OF group_local_2 TO 0 > | += FOR SUBSCRIPT OF group_import FROM 1 TO LAST OF group_import > BY 1 > | | SET SUBSCRIPT OF group_local_1 TO SUBSCRIPT OF group_import > | | MOVE g_import transaction_type_work TO g_local_1 > transaction_type_work > | +-- > | > | NOTE *** Start sorting. After each pass the last node is in the > | *** proper position. > | > | += FOR local_counter ief_supplied count FROM 2 TO last_import > ief_supplied count BY 1 > | | +- IF SUBSCRIPT OF group_local_2 IS EQUAL TO 0 > | | | SET SUBSCRIPT OF group_local_1 TO 1 > | | | MOVE g_local_1 transaction_type_work TO local_1 > transaction_type_work > | | | > | | | NOTE *** Make one pass thru group_local_1 and move sorted > | | | *** records to group_local_2. > | | | > | | | += FOR SUBSCRIPT OF group_local_1 FROM 2 TO LAST OF > group_local_1 - > | | | | local_num_sorted ief_supplied count BY 1 > | | | | MOVE g_local_1 transaction_type_work TO local_2 > transaction_type_work > | | | | SET SUBSCRIPT OF group_local_2 TO SUBSCRIPT OF > group_local_1 - 1 > | | | | +- IF local_1 transaction_type_work action_name IS GREATER > THAN > | | | | | local_2 transaction_type_work action_name > | | | | | MOVE local_2 transaction_type_work TO g_local_2 > transaction_type_work > | | | | +- ELSE > | | | | | MOVE local_1 transaction_type_work TO g_local_2 > transaction_type_work > | | | | | MOVE local_2 transaction_type_work TO local_1 > transaction_type_work > | | | | +-- > | | | +-- > | | | > | | | NOTE *** Move previously sorted nodes to second list. > | | | > | | | SET SUBSCRIPT OF group_local_2 TO LAST OF group_local_1 - > local_num_sorted ief_supplied > | | | count > | | | MOVE local_1 transaction_type_work TO g_local_2 > transaction_type_work > | | | +- IF local_num_sorted ief_supplied count IS GREATER THAN 0 > | | | | += FOR SUBSCRIPT OF group_local_1 FROM LAST OF > group_local_1 - > | | | | | local_num_sorted ief_supplied count + 1 TO > LAST OF group_local_1 BY 1 > | | | | | SET SUBSCRIPT OF group_local_2 TO SUBSCRIPT OF > group_local_1 > | | | | | MOVE g_local_1 transaction_type_work TO g_local_2 > transaction_type_work > | | | | +-- > | | | +-- > | | | > | | | NOTE *** Increment # sorted counter. > | | | > | | | SET local_num_sorted ief_supplied count TO local_num_sorted > ief_supplied count + 1 > | | | SET SUBSCRIPT OF group_local_1 TO 0 > | | | SET SUBSCRIPT OF group_local_2 TO 1 > | | +- ELSE > | | | SET SUBSCRIPT OF group_local_2 TO 1 > | | | MOVE g_local_2 transaction_type_work TO local_1 > transaction_type_work > | | | > | | | NOTE *** Make one pass thru group_local_1 and move sorted > | | | *** records to group_local_2. > | | | > | | | += FOR SUBSCRIPT OF group_local_2 FROM 2 TO LAST OF > group_local_2 - > | | | | local_num_sorted ief_supplied count BY 1 > | | | | MOVE g_local_2 transaction_type_work TO local_2 > transaction_type_work > | | | | SET SUBSCRIPT OF group_local_1 TO SUBSCRIPT OF > group_local_2 - 1 > | | | | +- IF local_1 transaction_type_work action_name IS GREATER > THAN > | | | | | local_2 transaction_type_work action_name > | | | | | MOVE local_2 transaction_type_work TO g_local_1 > transaction_type_work > | | | | +- ELSE > | | | | | MOVE local_1 transaction_type_work TO g_local_1 > transaction_type_work > | | | | | MOVE local_2 transaction_type_work TO local_1 > transaction_type_work > | | | | +-- > | | | +-- > | | | > | | | NOTE *** Move previously sorted nodes to second list. > | | | > | | | SET SUBSCRIPT OF group_local_1 TO LAST OF group_local_2 - > local_num_sorted ief_supplied > | | | count > | | | MOVE local_1 transaction_type_work TO g_local_1 > transaction_type_work > | | | +- IF local_num_sorted ief_supplied count IS GREATER THAN 0 > | | | | += FOR SUBSCRIPT OF group_local_2 FROM LAST OF > group_local_2 - > | | | | | local_num_sorted ief_supplied count + 1 TO > LAST OF group_local_2 BY 1 > | | | | | SET SUBSCRIPT OF group_local_1 TO SUBSCRIPT OF > group_local_2 > | | | | | MOVE g_local_2 transaction_type_work TO g_local_1 > transaction_type_work > | | | | +-- > | | | +-- > | | | > | | | NOTE *** Increment # sorted counter. > | | | > | | | SET local_num_sorted ief_supplied count TO local_num_sorted > ief_supplied count + 1 > | | | SET SUBSCRIPT OF group_local_1 TO 1 > | | | SET SUBSCRIPT OF group_local_2 TO 0 > | | +-- > | +-- > | > | NOTE *** Move previously sorted nodes to second list. > | > | +- IF SUBSCRIPT OF group_local_1 IS EQUAL TO 0 > | | += FOR SUBSCRIPT OF group_local_2 FROM 1 TO LAST OF > group_local_2 BY 1 > | | | SET SUBSCRIPT OF group_export TO SUBSCRIPT OF group_local_2 > | | | MOVE g_local_2 transaction_type_work TO g_export > transaction_type_work > | | +-- > | +- ELSE > | | += FOR SUBSCRIPT OF group_local_1 FROM 1 TO LAST OF > group_local_1 BY 1 > | | | SET SUBSCRIPT OF group_export TO SUBSCRIPT OF group_local_1 > | | | MOVE g_local_1 transaction_type_work TO g_export > transaction_type_work > | | +-- > | +-- > +--