IP Library Granted Patent US 7,111,003
Granted Patent B2
US 7,111,003 · App. 10/195,649 · Granted Sep 19, 2006

System and method for inputing data to a sort utility from a user program

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,111,003
App. No.
10/195,649
Granted
Sep 19, 2006
Kind
B2
Abstract

A method and system for inputing data to a sort utility from a user program. In one embodiment, first parameters may facilitate optimization for both programs, by either the user program or the sort utility. The sort utility may process the first parameters to optimize sorting by: returning second parameters to the user program; and supporting a multi-record interface between the two programs. The sort utility may process the data records into the multi-record interface by constructing reformatted data records and inserting the reformatted data records into the multi-record interface, or by utilizing an exit routine to construct and insert the reformatted data records into the multi-record interface. The sort utility may sort the data records (e.g., by directly processing them), optimizing memory usage by the sort utility and/or the user program. The processing and sorting actions of the sort utility program may be coordinated and overlapped.

Claims (103)

1. A computer-implemented method for inputting data records to a sort utility program, the method comprising:

providing first parameters from a first software program to the sort utility program;

returning second parameters from the sort utility program to the first software program, wherein the second parameters control allocation of memory and method of processing in the first software program;

allocating memory to support a multi-record interface for interfacing a plurality of elements of multiple data records between the first software program and the sort utility program;

processing a plurality of elements of multiple data records into the allocated memory for the multi-record interface;

sorting the elements of the multiple data records provided by the allocated memory for the multi-record interface with the sort utility program; and

repeating the acts of processing and sorting until all elements of the data records are processed,

wherein in the act of repeating, the acts of processing and sorting are coordinated and overlapped with one another.

2. The computer-implemented method of claim 1 , wherein the data records are formatted, and wherein the act of processing the plurality of elements of the data records into the multi-record interface comprises:

constructing reformatted data records by reformatting formatted data records; and

inserting the reformatted data records into the multi-record interface.

3. The computer-implemented method of claim 1 , further comprising minimizing data record manipulation by eliminating one or more moves of the elements of the data records from the first software program to the sort utility program.

4. The computer-implemented method of claim 1 , wherein in processing the plurality of elements of the data records, the sort utility program calls an exit routine; and wherein the exit routine processes the plurality of elements of the data records into the multi-record interface.

5. The computer-implemented method of claim 4 , wherein the data records are formatted, and wherein the act of processing the plurality of elements of the data records into the multi-record interface comprises:

constructing reformatted data records by reformatting formatted data records; and

inserting the reformatted data records into the multi-record interface.

6. The computer-implemented method of claim 4 , further comprising minimizing a number of requests for data records by the sort utility program from the exit routine.

7. The computer-implemented method of claim 1 , wherein the first parameters facilitate optimization for both the first software program and the sort utility program by the first software program.

8. The computer-implemented method of claim 1 , wherein the first parameters facilitate optimization for both the first software program and the sort utility program by the sort utility program.

9. The computer-implemented method of claim 1 , wherein the first parameters comprise one or more of: an average size of a data record, a type of the data record, a count of a plurality of data records, a plurality of data buffers to allocate, a size for each data buffer in the plurality of data buffers, an indication of a capability of the first software program to extract sort keys from the plurality of data records, a location of an exit routine, and a size of a master key.

10. The computer-implemented method of claim 1 , wherein the second parameters comprise one or more of: an average size of a data record, a type of the data record, a count of a plurality of data records, a plurality of data buffers to allocate, a size for each data buffer in the plurality of data buffers, an indication of a capability of the first software program to extract sort keys from the plurality of data records, a location of an exit routine, and a size of a master key.

11. The computer-implemented method of claim 1 , wherein the sort utility program sorting the elements of the data records comprises optimizing memory used by the sort utility program.

12. The computer-implemented method of claim 1 , wherein the sort utility program sorting the elements of the data records comprises optimizing memory used by the first software program.

13. The computer-implemented method of claim 1 , wherein the sort utility program sorting the elements of the data records comprises optimizing memory used by both the sort utility program and the first software program.

14. The computer-implemented method of claim 1 , wherein the sort utility program sorting the elements of the data records in the multi-record interface comprises the sort utility program directly processing the elements of the data records in the multi-record interface.

15. A system for inputting data records to a sort utility program using a network, the system comprising:

a CPU coupled to the network; and

a system memory coupled to the CPU,

wherein the system memory stores one or more computer programs executable by the CPU; and

wherein the computer programs are executable to:

provide first parameters from a first software program to the sort utility program;

return second parameters from the sort utility program to the first software program, wherein the second parameters control the allocation of memory and method of processing in the first software program;

allocate memory to support a multi-record interface for interfacing elements of multiple data records between the first software program and the sort utility program;

process a plurality of elements of multiple data records into the allocated memory for the multi-record interface;

sort the elements of the multiple data records provided by the allocated memory for the multi-record interface with the sort utility program; and

repeat the acts of processing and sorting until all elements of the multiple data records are processed,

wherein in the act of repeating, the acts of processing and sorting are coordinated and overlapped with one another.

16. The computer-implemented method of claim 15 , wherein the data records are formatted, and wherein the act of processing the plurality of elements of the data records into the multi-record interface comprises:

constructing reformatted data records by reformatting formatted data records; and

inserting the reformatted data records into the multi-record interface.

17. The system of claim 15 , wherein the computer programs are further executable to minimize data record manipulation by eliminating one or more moves of the elements of the data records from the first software program to the sort utility program.

18. The system of claim 15 , wherein in processing the plurality of elements of the data records, the sort utility program is further executable to call an exit routine; and wherein the exit routine is further executable to process the plurality of elements of the data records into the multi-record interface.

19. The computer-implemented method of claim 18 , wherein the data records are formatted, and wherein the act of processing the plurality of elements of the data records into the multi-record interface comprises:

constructing reformatted data records by reformatting formatted data records; and

inserting the reformatted data records into the multi-record interface.

20. The system of claim 18 , wherein the computer programs are further executable to minimize a number of requests for data records by the soft utility program from the exit routine.

21. The system of claim 15 , wherein the first parameters facilitate optimization for both the first software program and the sort utility program by the first software program.

22. The system of claim 15 , wherein the first parameters facilitate optimization for both the first software program and the sort utility program by the sort utility program.

23. The system of claim 15 , wherein the first parameters comprise one or more of: an average size of a data record, a type of the data record, a count of a plurality of data records, a plurality of data buffers to allocate, a size for each data buffer in the plurality of data buffers, an indication of a capability of the first software program to extract sort keys from the plurality of data records, a location of an exit routine, and a size of a master key.

24. The system of claim 15 , wherein the second parameters comprise one or more of: an average size of a data record, a type of the data record, a count of a plurality of data records, a plurality of data buffers to allocate, a size for each data buffer in the plurality of data buffers, an indication of a capability of the first software program to extract sort keys from the plurality of data records, a location of an exit routine, and a size of a master key.

25. The system of claim 15 , wherein in sorting the elements of the data records by the sort utility program, the sort utility program is further executable to optimize memory used by the sort utility program.

26. The system of claim 15 , wherein in sorting the elements of the data records by the sort utility program, the sort utility program is further executable to optimize memory used by the first software program.

27. The system of claim 15 , wherein in sorting the elements of the data records by the sort utility program, the sort utility program is further executable to optimize memory used by both the sort utility program and the first software program.

28. The system of claim 15 , wherein in sorting the elements of the data records in the multi-record interface by the sort utility program, the sort utility program is further executable to directly process the elements of the data records in the multi-record interface.

29. A program storage device, readable by a programmable control device, comprising instructions stored on the program storage device for causing the programmable control device to implement:

providing first parameters from a first software program to a sort utility program;

returning second parameters from the sort utility program to the first software program, wherein the second parameters control the allocation of memory and method of processing in the first software program;

allocating memory to support a multi-record interface for interfacing elements of multiple data records between the first software program and the sort utility program;

processing a plurality of elements of the multiple data records into the allocated memory for the multi-record interface;

sorting the elements of the multiple data records provided by the allocated memory for the multi-record interface with the sort utility program; and

repeating the acts of processing and sorting until all elements of the multiple data records are processed,

wherein in the act of repeating, the acts of processing and sorting are coordinated and overlapped with one another.

30. The computer-implemented method of claim 29 , wherein the data records are formatted, and wherein the act of processing the plurality of elements of the data records into the multi-record interface comprises:

constructing reformatted data records by reformatting formatted data records; and

inserting the reformatted data records into the multi-record interface.

31. The program storage device of claim 29 , wherein the program instructions are further executable to implement minimizing data record manipulation by eliminating one or more moves of the elements of the data records from the first software program to the sort utility program.

32. The program storage device of claim 29 , wherein in processing the plurality of elements of the data records, the sort utility program instructions are further executable to implement calls to an exit routine; wherein the exit routine program instructions are further executable to implement processing the plurality of elements of the data records into the multi-record interface.

33. The computer-implemented method of claim 32 , wherein the data records are formatted, and wherein the act of processing the plurality of elements of the data records into the multi-record interface comprises:

constructing reformatted data records by reformatting formatted data records; and

inserting the reformatted data records into the multi-record interface.

34. The program storage device of claim 32 , wherein the program instructions are further executable to implement minimizing a number of requests for data records by the sort utility program from the exit routine.

35. The program storage device of claim 29 , wherein the first parameters facilitate optimization for both the first software program and the sort utility program by the first software program.

36. The program storage device of claim 29 , wherein the first parameters facilitate optimization for both the first software program and the sort utility program by the sort utility program.

37. The program storage device of claim 29 , wherein the first parameters comprise one or more of: an average size of a data record, a type of the data record, a count of a plurality of data records, a plurality of data buffers to allocate, a size for each data buffer in the plurality of data buffers, an indication of a capability of the first software program to extract sort keys from the plurality of data records, a location of an exit routine, and a size of a master key.

38. The program storage device of claim 29 , wherein the second parameters comprise one or more of: an average size of a data record, a type of the data record, a count of a plurality of data records, a plurality of data buffers to allocate, a size for each data buffer in the plurality of data buffers, an indication of a capability of the first software program to extract sort keys from the plurality of data records, a location of an exit routine, and a size of a master key.

39. The program storage device of claim 29 , wherein in sorting the elements of the data records by the sort utility program, the sort utility program instructions are further executable to implement optimizing memory used by the sort utility program.

40. The program storage device of claim 29 , wherein in sorting the elements of the data records by the sort utility program, the sort utility program instructions are further executable to implement optimizing memory used by the first software program.

41. The program storage device of claim 29 , wherein in sorting the elements of the data records by the sort utility program, the sort utility program instructions are further executable to implement optimizing memory used by both the sort utility program and the first software program.

42. The program storage device of claim 29 , wherein in sorting the elements of the data records in the multi-record interface by the sort utility program, the sort utility program instructions are further executable to implement directly processing the elements of the data records in the multi-record interface.

43. The program storage device of claim 29 , wherein the program storage device is a memory medium.

44. A computer-implemented sort method implementable with a sort utility, comprising:

receiving first parameters for controlling sorting, wherein the first parameters include an indication of a capability of a software program to extract sort keys from the data records;

returning second parameters for controlling memory allocation and method of processing in the software program;

allocating memory to support a multi-record interface for interfacing elements of multiple data records between the software program and the sort utility;

processing data elements of multiple data records into the allocated memory of the multi-record interface, wherein the processing includes extracting keys from the elements of the multiple data records with the first software program;

sorting the data elements of multiple data records in the allocated memory of the multi-record interface with the sort utility; and

repeating the arts of processing and sorting until all data elements are sorted,

wherein the repeated acts of processing and sorting are coordinated and overlapped with one another.

45. The computer-implemented method of claim 44 , wherein the data records are formatted, and wherein the act of processing the plurality of elements of the data records into the multi-record interface comprises:

constructing reformatted data records by reformatting formatted data records; and

inserting the reformatted data records into the multi-record interface.

46. The computer-implemented method of claim 44 , wherein the act of processing data elements into the multi-record interface comprises calling an exit routine to processes the data elements into the multi-record interface.

47. The computer-implemented method of claim 44 , wherein the first parameters for controlling sorting comprise one or more of: an average size of a data element, a type of the data element, a count of data elements, a plurality of data buffers to allocate, a size for a data buffer, an indication of a capability to extract sort keys from the data elements, a location of an exit routine, and a size of a master key.

48. The computer-implemented method of claim 44 , wherein the second parameters for controlling memory allocation comprise one or more of: an average size of a data element, a type of the data element, a count of data elements, a plurality of data buffers to allocate, a size for a data buffer, an indication of a capability to extract sort keys from the data elements, a location of an exit routine, and a size of a master key.

49. The computer-implemented method of claim 44 , wherein the act of sorting the data records in the multi-record interface comprises directly processing the data elements in the multi-record interface.

50. A program storage device, readable by a programmable control device, comprising instructions stored on the program storage device for causing the programmable control device to implement a sort method with a sort utility, the method comprising:

receiving first parameters, wherein the first parameters include an indication of a capability of the software program to extract sort keys from the data records;

returning second parameters for controlling memory allocation and method of processing in the software program;

allocating memory to support a multi-record interface for interfacing elements of multiple data records between the software program and the sort utility;

processing data elements of multiple data records into the allocated memory of the multi-record interface, wherein the processing includes extracting keys from the elements of the multiple data records with the software program;

sorting the data elements of the multiple data records in the allocated memory of the multi-record interface with the sort utility; and

repeating the acts of processing and sorting until all data elements are sorted,

wherein the repeated acts of processing and sorting are coordinated and overlapped with one another.

Assignments (11)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
SECURITY AGREEMENT Recorded Sep 11, 2013
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 031204/0225 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED ON REEL 013114 FRAME 0246. ASSIGNOR(S) HEREBY CONFIRMS THE CORRECT ASSIGNEE NAME IS BMC SOFTWARE, INC. RATHER THAN BMC SOFTWARE. Recorded Sep 9, 2013
From: BLAICHER, CHRISTOPHER YOUNGS
To: BMC SOFTWARE, INC.
Reel/Frame 031190/0878 →