In Pascal this can be done by using the 
            'RECORDS' data type. You simply will have to define what a check is, 
            like this:
            type
            CheckType = record
            checkNumber : integer;
            paidTo : string[20];
            amount : real;
            category : integer;
            
end;
            var
            Check, Payment : CheckType;
'Check' is 
            considered to be a record. Each data item is called a field. Once it 
            has been declared like this, we can store data into the record as 
            follows:readln(Check.checkNumber);
              readln(Check.PaidTo);
              readln(Check.amount);
              
            readln(Check.category);
or as follows:
            with Check do
            beginreadln(checkNumber);
              readln(PaidTo);
              readln(amount);
              readln(category);
              
            
end;
            Using 'with Check do' eliminates the need for repeating 
            'Check.' when referring to a field. All these operations arelegal:
            readln(Check.checkNumber);
              
            writeln(Check.checkNumber);
            Check.checkNumber :=   1233;
            Payment := Check; {see the variable declaration 
            above.}
We can also create array of records if we wish to 
            keep one month's checks in the computer memory:
            var
            Check : array[1..50] of CheckType;
              
            i : integer;
begin
            for i:= 1 to 30 do
              
            with Check[i] do
                
            begin
            readln(checkNumber);
                  
            readln(paidTo);
            readln(amount);
            readln(Category);
            
end;Let's put it all together and write a program to 
            input some check records. To minimize data entry time, the program 
            is written to accept information on five checks.
            
            PROGRAM 11-1
            
              
              
                | Program RecordCheck(input); type CheckType = record
                    
                  checkNumber : integer; paidTo : string[20]; amount : real; category : integer; end; CheckArray = array[1..5] of CheckType; var check : CheckArray;
                    
                  count : integer; begin writeln('YOU WILL BE ASKED TO ENTER 
                    INFORMATION ABOUT 5 CHECKS.');
                    
                  end.writeln('For each check enter:'); writeln(' check number'); writeln(' paid to'); writeln(' amount'); writeln(' category (an integer)'); writeln('each followed by the enter key.'); writeln; for count := 1 to 5 do begin 
                      
                  end;writeln('check :',count:3); with check[count] do begin 
                        
                  end;readln(checkNumber); readln(paidTo); readln(amount); readln(category); writeln; | 
				  
            
            Program run:
            C:\TP>turbo 
            Turbo Pascal Version 6.0 Copyright (c) 1983,90 
            Borland International 
            YOU WILL BE ASKED TO ENTER INFORMATION ABOUT 5 
            CHECKS. 
            For each check enter: 
            check number 
            paid to 
            amount 
            category (an integer) 
            each followed by the enter key. 
            check : 1 
            101 
            HEB 
            19.35 
            4 
            check : 2 
            102 
            UT PANAM 
            59.35 
            5 
            check : 3 
            4 
            check : 2 
            102 
            UT PANAM 
            59.35 
            5 
            check : 3 
            103 
            CENTRAL POWER AND LIGHT 
            210.36 
            10 
            check : 4 
            104 
            MCALLEN PUBLIC UTILITIES 
            22.99 
            10 
            check : 5 
            105 
            BELL TELEPHONE 
            59.12 
            11 
            Type EXIT to return to Turbo Pascal... 
            Microsoft(R) MS-DOS(R) Version 5.00 
            (C)Copyright Microsoft Corp 1981-1991. 
            
The array of records created in Program 11-1 can 
            easily be written to a file. Such a file is called file of records. 
            Let us write the records we just created in a file. It would be a 
            good idea to review chapter three where we talked about text file 
            manipulation. File of records are assigned, opened and closed 
            exactly the same way. You can do seek operation of file of records, 
            this will allow you to write or read any record randomly. Program 
            11-1 creates a record file.
			
            
            PROGRAM 11-2
            
              
              
                | 
				  {This program will ask for information about 5 checks, check number, payee, amount and category. Then it will write it into a file of records} Program RecordCheck(input, bank); type CheckType = record
                    
                  end;checkNumber : integer; paidTo : string[20]; amount : real; category : integer; CheckArray = array[1..5] of CheckType; FileRec = file of checkType; var check : CheckArray;
                    
                  count : integer; bank : fileRec; begin assign(bank,'check.dta'); {file 
                    opening}
                    
                  rewrite(bank); {to write} writeln('YOU WILL BE ASKED TO ENTER INFORMATION ABOUT 5 
                  CHECKS.'); {instructions} writeln('For each check enter:'); writeln(' check number'); writeln(' paid to'); writeln(' amount'); writeln(' category (an integer)'); writeln('each followed by the enter key.'); writeln; | 
				  
            
            PROGRAM 11-2 CONTINUED.
            
              
              
                | 
				  {actual reading of information} for count := 1 to 5 do
                    
                  end;begin writeln('check :',count:3);
                      
                  end;with check[count] do begin readln(checkNumber); readln(paidTo); readln(amount); readln(category); write(bank,check[count]); {write to file writeln; close(bank); 
                  end. | 
				  
            
            After running the Program 11-2, exit Pascal and 
            check the directory. You should see a file called "check.dta". If 
            you type this file out, you will notice most characters are 
            unreadable. Files created as file of records are not saved in ASCII 
            format and are not readable. This is the difference between an ASCII 
            file created by the text file mode and the record file mode. 
            Now let's see how we can retrieve the information 
            placed in a record file. Program 11-3 reads records written by the 
            previous program and displays them on the screen.
			
            PROGRAM 11-3
            
              
              
                | 
				  Program RecordCheck(input,  bank); type CheckType = record
                    
                  end;checkNumber : integer; paidTo : string[20]; amount : real; category : integer; CheckArray = array[1..5] of CheckType; FileRec = file of checkType; var check : CheckArray;
                    
                  count : integer; bank : fileRec; begin assign(bank,'check.dta');
                    
                  end.reset(bank); count :=0; writeln('check# Paid To Amount Category'); writeln; while not eof(bank) do begin 
                  end;count := count+1; read(bank, check[count]); with check[count] do begin 
                  end;write(checkNumber:6); write(paidTo:24); write(amount:10:2); writeln(category:6); close(bank); | 
				  
            
			
            Program run:
            C:\TP> 
              
            check# Paid To Amount Category 
            1312 John Abraham 114.33 10 
            135 reggie 512.33 22 
            5123 jones 51.22 3 
            21 jacob 21.20 5 
            33 mary 12.33 1 
            Type EXIT to return to Turbo Pascal... 
            Microsoft(R) MS-DOS(R) Version 5.00 
            (C)Copyright Microsoft Corp 
              1981-1991.
            
Program fileRec (input, output,telefile);
            uses crt;
            {first programming assignment for 2380 students
1  ) Create an array of records with name and telephone number as fields
            
2  ) Sort the array of records
            
3 ) Write the array of records into a file of records 
            
4  ) Do a binary search for the name field
            
5A) If match found print the name and telephone number
            
5B) Edit the record if so desired
            
6  ) Send the entire name and telephone list to a  printer
            
Use procedures and functions where appropriate. A 
            menu driven program would be more user friendly} 
            Const
            Type
            
            PersonRec = record
              
            name : string[30];
            tele : string[8]
            
end;PeopleList = array [1..maxPeople] of PersonRec;
            teleFileType = file of personRec;
            var
            People : peoplelist;
              
            numPeople :Integer;
            telefile : 
            telefileType;
(***************)
            Procedure pause;
            begin
            write('Press any key to return to the 
              Menu..');
              
            while not keypressed do;
            
end;(***************)
            Procedure CreateNewFile (var telefile : 
            telefileType);
            begin
            end;
            
            (****************)
            Procedure Menu;
            begin
            textbackground(cyan);textcolor(blue);
              
            clrscr;
            writeln('CHOOSE ONE OF THE FOLLOWING: ');
            writeln(' 1. CREATE A NEW FILE');
            writeln(' 2. READ AN EXISTING FILE');
            writeln(' 3. ADD NAME AND TELEPHONE NUMBERS');
            writeln(' 4. SORT THE LIST');
            writeln(' 5. WRITE THE SORTED NEW LIST TO THE 
            FILE');
            writeln(' 6. PRINT THE ENTIRE LIST');
            writeln(' 7. SEARCH FOR AND EDIT A RECORD');
            writeln(' 0. QUIT THE PROGRAM');
            write('Your choice? ');
            
end;(***********)
            Procedure OpenFileAndRead(var 
            telefile:telefileType; var people :peopleList;
            var numPeople :integer);
            begin
            Assign(telefile, filename);
              
            reset(telefile);
            numPeople :=0;
            while not eof(telefile) do
            begin
            numPeople := numpeople +1;
                
            read(telefile, people[numPeople]);
            
end;writeln('Total names read: ',numPeople:4);
            pause;
            
end;(***************)
            Procedure InputInfo(var People:peopleList; var 
            NumPeople: integer);
            var
            
            begin
            writeln('This procedure will add names to 
              the list.');
              
            writeln('Enter LastName, FirstName MiddleName');
            write('Please enter name (just ENTER to quit) : 
            ');
            readln(tmpName);
            while tmpName <> '' do
            begin
            NumPeople := NumPeople + 1;
                
            People[numPeople].name :=    tmpName;
            write('Telephone number : ');
            readln(People[numpeople].tele);
            write('Please enter another name (just ENTER to 
            quit) :');
            readln(tmpName);
             
end; {while} 
end; {InputInfo}(*********************)
            Procedure Sort(var People: peopleList; 
            numPeople:integer);
            {sort using bubble sort}
            var
            passNum, index : integer;
              
            Procedure SwapPeople (var 
              person1, person2 : personRec);
var
            
            begin
            temp := person1;
              
            person1 := person2;
            person2 := temp;
end; {swapPeople}
            BEGIN {sort}
            for PassNum := 1 to numPeople - 1 do
              
            For index := 1 to NumPeople - passNum do
            if people[index].name > people[index+1].name 
            then
            SwapPeople(people[index],people[index+1]);
            writeln('Sort completed.');
            pause;
             
end; {sort}(************)
            Procedure Writefile ( people : PeopleList; 
            numPeople :integer;
            var telefile : telefileType);
            var
            
            begin
            rewrite(telefile);
              
            for count := 1 to numPeople do
            write (telefile,people[count]);
            writeln;writeln('File save completed.');
            pause;
            
end;(******************)
            Procedure Printfile ( people : PeopleList; 
            numPeople :integer);
            var
            tmp :char;
              
            count : integer;
begin
            for count := 1 to numPeople do
              
            begin
            with people[count] do
            writeln (name:1,' ':35-length(name), tele);
end;
            writeln('Print completed.');
            pause;
            
end;(******************)
            Procedure BinarySearch(var people: PeopleList; 
            peopleCount: integer);
            var
            first, middle, last : integer;
              
            temp : string[30];
            found: boolean;
begin
            found := false; first := 1; last := 
              PeopleCount;
              
            write('Enter Name to search for: ');
            readln(temp);
            while (not(found)) AND (first <= last) do
            begin
                
            middle := (last+1 - first) DIV 2 + FIRST;
            if People[middle].name =     temp then
            begin
            found := true;
                  
            writeln('Match found: ', people[middle].name:1, 
            people[middle].tele:10);
            write('Enter name change if any: ');readln 
            (temp);
            if temp <> '' then people[middle].name := 
            temp;
            write('Enter tele change if any: 
            ');readln(temp);
            if temp <> '' then people[middle].tele := 
            temp;
            
endelse
            begin
            if temp > People[middle].name
                  
            then first :=     middle+1
            else last :=     middle-1;
            
end;
end;if not(found) then writeln('Name not in list');
            pause;
            
end;(******************)
            var choice: integer;
            Begin
            menu; readln(choice);
              
            while choice > 0 do
            begin
                
            Case choice of
            1 : CreateNewFile(telefile);
                  
            2 : openFileAndRead (telefile, people, 
            numPeople);
            3 : inputinfo (people,NumPeople);
            4 : sort (people, NumPeople);
            5 : writefile(people,numPeople,teleFile);
            6 : printfile(people,NumPeople);
            7 : binarySearch(people, NumPeople);
            
end;menu; readln(choice);
            
end;close(telefile);
             
end.C:\TP> 
              
            CHOOSE ONE OF THE FOLLOWING: 
            1. CREATE A NEW FILE 
            2. READ AN EXISTING FILE 
            3. ADD NAME AND TELEPHONE NUMBERS 
            4. SORT THE LIST 
            5. WRITE THE SORTED NEW LIST TO THE FILE 
            6. PRINT THE ENTIRE LIST 
            7. SEARCH FOR AND EDIT A RECORD 
            0. QUIT THE PROGRAM 
            Your choice?
            6 
            ABRAHAM 687-2932 
            BOBBY 3513 
            JOHN 3422 
            MERCY 993 
            REGGIE 35122 
            Print completed. 
            Press any key to return to the Menu.. 
            Your choice?
            4 
            CHOOSE ONE OF THE FOLLOWING: 
            1. CREATE A NEW FILE 
            2. READ AN EXISTING FILE 
            3. ADD NAME AND TELEPHONE NUMBERS 
            4. SORT THE LIST 
            5. WRITE THE SORTED NEW LIST TO THE FILE 
            6. PRINT THE ENTIRE LIST 
            7. SEARCH FOR AND EDIT A RECORD 
            0. QUIT THE PROGRAM 
            Your choice? 
            6 
            ABRAHAM 687-2932 
            BOBBY 3513 
            JOHN 3422 
            MERCY 993 
            REGGIE 35122 
            Print completed. 
            Press any key to return to 
              the Menu..