mgo
OS/400 Edition
Volume 2, Number 70 -- September 13, 2002

Properly Sorting Numeric Arrays


Hey, Ted:

In a program, data could be stored in arrays related to each other. Arrays could be filled from different files, but they could have the same index.


To sort the arrays, we would have to combine the arrays into one alphanumeric array and sort it. However, if the sort field is numeric, and there are negative numbers in the sort field, this is not going to work.

I have a technique that allows proper sorting of numeric values in cases like this one. Would you like to publish it in Midrange Guru?

-- A Devoted Reader


I have good news for you. RPG knows how to handle this type of sorting.

The short program that follows illustrates this technique. Notice that the array called MyArray is defined within a data structure. Two other subfields--Alpha and Numeric--overlay MyArray. All three subfields--MyArray, Alpha, and Numeric--are arrays. Sorting one keeps the others in sync.

The >EVAL lines between the C specs were cut and pasted from the debugger to show what the values of the arrays were at that point.

-- Ted

D                 ds                                          
D   MyArray                     15    dim(5)                  
D   Alpha                       10    overlay(MyArray:1)      
D   Numeric                      5s 0 overlay(MYArray:11)     

C                   eval      MyArray (1) = 'A.........00000' 
C                   eval      MyArray (2) = 'C.........50005' 
C                   eval      MyArray (3) = 'E.........2000K' 
C                   eval      MyArray (4) = 'D.........7000P' 
C                   eval      MyArray (5) = 'B.........40004' 
                                                              
>EVAL myarray                      
    MYARRAY OF (1) = 'A.........00000'
    MYARRAY OF (2) = 'C.........50005'
    MYARRAY OF (3) = 'E.........2000K'
    MYARRAY OF (4) = 'D.........7000P'
    MYARRAY OF (5) = 'B.........40004'

C                   sorta     Alpha

>EVAL myarray                      
    MYARRAY OF (1) = 'A.........00000'
    MYARRAY OF (2) = 'B.........40004'
    MYARRAY OF (3) = 'C.........50005'
    MYARRAY OF (4) = 'D.........7000P' 
    MYARRAY OF (5) = 'E.........2000K'
>EVAL numeric                       
    NUMERIC OF (1) = 00000.            
    NUMERIC OF (2) = 40004.            
    NUMERIC OF (3) = 50005.            
    NUMERIC OF (4) = -70007.           
    NUMERIC OF (5) = -20002.           

C                   sorta     Numeric

>EVAL myarray                       
   MYARRAY OF (1) = 'D.........7000P' 
   MYARRAY OF (2) = 'E.........2000K' 
   MYARRAY OF (3) = 'A.........00000' 
   MYARRAY OF (4) = 'B.........40004' 
   MYARRAY OF (5) = 'C.........50005'
>EVAL numeric            
   NUMERIC OF (1) = -70007.
   NUMERIC OF (2) = -20002.
   NUMERIC OF (3) = 00000. 
   NUMERIC OF (4) = 40004. 
   NUMERIC OF (5) = 50005. 
   
C                   eval      *inlr = *on

Sponsored By
WORTH CONSULTING

Improve Legacy Programs with Super/Windows

Summary:

This newly released tool for the iSeries is used to improve user and programmer productivity and efficiency.

Pop-up windows (or selection windows) are what users want to make their jobs easier and more accurate. They have been exposed to "list boxes" when on the Internet or when using a typical windows-based program. This feature makes it so that the user does not need those sticky notes and reference material at their grasp to know what value to key in entry fields.

Programmers have been reluctant to put the selection window feature in entry programs because it takes substantial programming efforts to build the information and display it on the screen. It also requires major additions to the display files.

Super/Windows easily enables pop-up selection windows to your application programs in an affordable manner. Very few changes are required to be made to your existing RPG, COBOL, and CL programs. Changes to your display files are not needed! Your existing code or table files are used to populate the information in the windows from which your users make selection. You can also use the codes file (and maintenance program) that is included with Super/Windows. One of Super/Windows' functions generates the program source for each file ID using a simple entry program where the file and descriptive information is recorded. The source can be modified to return additional fields.

You do not have to make wholesale changes to your application software, can optimize your staff's existing skills, and little user training is needed. They will welcome Super/Windows with open arms!

Business Owner Benefits:

  • Low Investment / High ROI as compared to leading high investment solutions that generate application software.
  • Immediate observable results.
  • Efficiency in workforce.
  • Faster training of users and programmers by using existing skill sets.
  • Gradual implementation with control of the degree of application.
  • its your budget: no increase in personnel and no major software expense.
  • License fee is $1,500 for first system and $750 for each subsequent system, no matter how many users or system size!
  • Annual maintenance is $300, regardless of the number of installations.

Programmer Benefits:

  • Installs in 5 minutes. Free 30-day trial.
  • Values in windows are built from your existing code and table file…nothing is "hard-coded."
  • The programs that retrieve the data for display are automatically generated after entry of file and key information.
  • Easily implemented. Only two copybook lines and 8 lines for each field to be enabled are added to each program.
  • No changes to display files are needed, so programs can be promoted when currently active.
  • Code validation routines and file definitions for the enabled codes are no longer needed in your programs.
  • New programs to allow users to input criteria for reports and extracts are a snap!
  • Examples in RPG, RPGLE, COBOL, and CLP are provided.
  • The system can also be used in batch environment to retrieve descriptive values to be included in reports and extract files.

User Benefits:

  • Improved accuracy. Invalid keyed entry causes window to pop up allowing the user to select a valid entry.
  • Reliance on printed code lists and manuals is reduced.
  • Improved efficiency. Eyes remain on the screen and keyboard with no need to access the mouse to cause a list box to appear.
  • Selected values are always up to date from the code or table files.
  • Improved customer service as entries can be selected with customer consent when in phone contact.

Click here to learn more about Super/Windows.


THIS ISSUE
SPONSORED BY:

ASC
Worth Consulting


BACK ISSUES

TABLE OF CONTENTS

Put Users On the Fast Track

Properly Sorting Numeric Arrays

Reader Feedback and Insights: Binder Language


Editors
Howard Arner
Joe Hertvik
Ted Holt
David Morris

Managing Editor
Mari Barrett

Publisher and
Advertising Director

Jenny Thomas

Contact the Editors
Do you have a gripe, inside dope or an opinion?
Email the editors:
editors@itjungle.com



Last Updated: 9/13/02
Copyright © 1996-2008 Guild Companies, Inc. All Rights Reserved.