Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
SORT-MERGE/XL Programmer's Guide: 900 Series HP 3000 Computer Systems > Chapter 2 Creating Core Routines That Sort and Merge

Example of Core Sorting Routine

» 

Technical documentation

Complete book in PDF
» Feedback
Content starts here

 » Table of Contents

 » Index

The following program sorts the personnel files shown below. They are sorted together by last name. The record size is determined by the input files. The status parameter is checked after the calls to HPSORTINIT and HPSORTEND.

The files that are used in this example are as follows (character positions and data descriptions are indicated for convenience only):

 
TEMPEMP

Information file about temporary employees:

Last Name           First Name       Employee Number       Hire Date

Gangley, Tomas 000003 06/06/87
Rields, Evelyn 000007 07/12/87
Everett, Joyce 000029 10/19/87

0 1 2 3 4 5 6 7
1234567890123456789012345678901234567890123456789012345678901234567890


PERMEMP

Information file about permanent employees:

Last Name          First Name        Employee Number       Hire Date

Jones, Eliza 000001 06/06/87
Smith, James 000005 06/06/87
Jackson, Johnathon 000006 06/06/87
Washington, Lois 000014 07/23/87
Jackson, Rosa 000022 08/15/87
0        1         2         3         4         5         6         7
1234567890123456789012345678901234567890123456789012345678901234567890



Example 2-1. SORTFILE Program

   program SORTFILE (input,output);

{This program reads the files, TEMPEMP and PERMEMP, }
{sorts by last name, and outputs to the file, ALLEMP}

var
tempFileNum: INTEGER;
permFileNum: INTEGER;
outFileNum : INTEGER;
status : INTEGER;

procedure HPFOPEN ; intrinsic;
procedure HPSORTINIT; intrinsic;
procedure HPSORTERRORMESS; intrinsic;
procedure HPSORTEND; intrinsic;
procedure FCLOSE; intrinsic;


procedure OPEN_FILES;

const
designator = 2;
domain = 3;
access = 11;
record_size = 19;

var
tempFile : packed array [1..10] of CHAR;
permFile : packed array [1..10] of CHAR;
outFile : packed array [1..10] of CHAR;
permanent : INTEGER;
new : INTEGER;
write : INTEGER;
size : INTEGER;

begin
tempFile := '%TEMPEMP%';
permanent := 1;
HPFOPEN (tempFileNum, status, designator, tempFile, domain, permanent) ;

permFile := '%PERMEMP%';
HPFOPEN (permFileNum, status, designator, permFile, domain, permanent) ; new := 4;
write := 1;
size := 80;
outFile := '%ALLEMP%';
HPFOPEN (outFileNum, status, designator, outFile, domain, new, access,
write, record_size, size);
end;


procedure DO_SORT;

var
inputfiles : array [1..3] of INTEGER;
outputfile : array [1..2] of INTEGER;
outputOption : INTEGER;
numKeys : INTEGER;
keys : array [1..4] of INTEGER;
altseq : packed array [1..2] of CHAR;
message : packed array [1..80] of CHAR;
length : INTEGER;
statistics : array [1..6] of INTEGER;

begin
inputfiles [1] := tempFileNum;
inputfiles [2] := permFileNum;
inputfiles [3] := 0;
outputfile [1] := outFileNum; {from HPFOPEN}
outputfile [2] := 0;
outputOption := 0; {output record format same as input record format}
numKeys := 1; {one key }
keys[1] := 1; {key begins}
keys[2] := 20; {key length}
keys[3] := 0; {byte data }
keys[4] := 0; {ascending order}
altseq[1] := CHR(255); {data = ASCII; sequence = ASCII}
altseq[2] := CHR(255); {256 characters in ASCII}
HPSORTINIT (status, inputfiles, outputfile, outputOption,,, numKeys, keys,
altseq,,,,,);
if status <> 0 then {If error in HPSORTINIT }
begin {Get message and write it to screen}
Message := ' ';
HPSORTERRORMESS (status, message, length);
writeln (message);
end;

HPSORTEND (status, );

if status <> 0 then {If error in HPSORTEND }
begin {Get message and write it to screen}
message := ' ';
HPSORTERRORMESS (status, message, length);
writeln (message)
end;
end;


procedure CLOSE_FILES;

var
disposition : SHORTINT;
securityCode : SHORTINT;

begin
disposition := 0;
securityCode := 0;
FCLOSE (tempFileNum, disposition, securityCode);
FCLOSE (permFileNum, disposition, securityCode);
disposition := 1;
FCLOSE (outFileNum, disposition, securityCode);
end;

begin {main}
OPEN_FILES;
DO_SORT;
CLOSE_FILES;
end.

When this program is executed, the output from the sort is written to ALLEMP. To view the output:

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© Hewlett-Packard Development Company, L.P.