Suche Bilder Maps Play YouTube News Gmail Drive Mehr »
Anmelden
Nutzer von Screenreadern: Klicke auf diesen Link, um die Bedienungshilfen zu aktivieren. Dieser Modus bietet die gleichen Grundfunktionen, funktioniert aber besser mit deinem Reader.

Patentsuche

  1. Erweiterte Patentsuche
VeröffentlichungsnummerWO2001063472 A2
PublikationstypAnmeldung
AnmeldenummerPCT/IL2001/000173
Veröffentlichungsdatum30. Aug. 2001
Eingetragen22. Febr. 2001
Prioritätsdatum24. Febr. 2000
Auch veröffentlicht unterEP1287443A2, US6455764, US20010044942, WO2001063472A3
VeröffentlichungsnummerPCT/2001/173, PCT/IL/1/000173, PCT/IL/1/00173, PCT/IL/2001/000173, PCT/IL/2001/00173, PCT/IL1/000173, PCT/IL1/00173, PCT/IL1000173, PCT/IL100173, PCT/IL2001/000173, PCT/IL2001/00173, PCT/IL2001000173, PCT/IL200100173, WO 0163472 A2, WO 0163472A2, WO 2001/063472 A2, WO 2001063472 A2, WO 2001063472A2, WO-A2-0163472, WO-A2-2001063472, WO0163472 A2, WO0163472A2, WO2001/063472A2, WO2001063472 A2, WO2001063472A2
ErfinderZiv Tur, David Tzvi Ben, Koby Biller
AntragstellerBmidas.Com Ltd.
Zitat exportierenBiBTeX, EndNote, RefMan
Externe Links:  Patentscope, Espacenet
System and method for secure, query-driven, targeted electronic solicitation
WO 2001063472 A2
Zusammenfassung
A system and method for directing a blind solicitation to a pre-definable, anonymous potential customer client via the network. A supplier sends an offer to the query-aggregating server, communicatively connected to a network. The query-aggregating server receives a recognized request and sends a query to the client system through the network. The query comprises an offer from the supplier and a definable characteristic profile for identifying a potential customer .In response to the query the client system activates the personal agent, located in the client agent. The personal agent executes the query, scans the data in the personal database, located in the clients system, and determines the relevance of the offer to the customer.
Ansprüche  (OCR-Text kann Fehler enthalten)
What is claimed is
1 A system for directing a blind solicitation to a pre-definable anonymous potential customer client computer, comprising i a supplier and a query aggregating server said query aggregating server communicatively connected to a network said query aggregating server including programming for forwarding a query upon receiving a recognized request, said query comprising an offer from said supplier and a definable characteristics profile for identifying a potential customer, and n a customer's client computer communicatively connectable to said network said customer's client computer further comprising a personal agent for requesting and receiving a query from said query aggregating server via said network, said customer's client computer further comprising personal databases accessible to said personal agent said personal agent further including programming for executing said query, scanning data in said personal databases and determining the relevance to said customer of said offer contained in said query, and for notifying said customer of said offer if said determination for relevance is positive, whereby no identifying information about said potential customer is returned or accessible to said supplier
2 The system for directing a blind solicitation to a pre-definable, anonymous potential customer client computer device, according to claim 1 , wherein said said query aggregating server is part of said supplier's network
3 The system for directing a blind solicitation to a pre-definable, anonymous potential customer client computer device, according to claim 2, wherein said query is downloaded to said client computer as part of the code of said supplier's Webpage
4 The system for directing a blind solicitation to a pre-definable, anonymous potential customer client computer device, according to claim 1 , where in said device is a communication device
£2
5. The system of claim 2. wherein said communication device is selected from tb-e group consisting of: Personal Data Assistants (PDA), Wireless Application Protocol (WAP), telephones, cellular phone, e-mail, laptops, personal computers.
6. The system for directing a blind solicitation to a pre-definable, anonymous potential customer client computer device, according to claim 1 , wherein said personal agent is activated automatically.
7. The system for directing a blind solicitation to a pre-definable, anonymous potential customer client computer device, according to claim 1 , wherein said personal agent is activated according to a time period, programmed by the user.
8. The system for directing a blind solicitation to a pre-definable, anonymous potential customer client computer device, according to claim 1 , wherein the personal agent contains a user preference checklist enabling the client to choose from which suppliers he wants to get offers.
9. The system for directing a blind solicitation to a pre-definable, anonymous potential customer client computer device, according to claim 1 , wherein the personal agent contains a user preference checklist enabling the user to choose the subject matter about which he wants to get offers.
10. The system for directing a blind solicitation of claim 1 wherein, said query could be updated by said supplier.
11. The system for directing a blind solicitation of claim 1 wherein, said query could be updated by said query-aggregating server according to said supplier needs.
12. The system for directing a blind solicitation of claim 1 wherein, said client can activate an offer responding machine.
13. The system for directing a blind solicitation in accordance with claim 12, wherein said user can choose to which suppliers said offer responding machine should reply.
14. The system for directing a blind solicitation in accordance with claim 12, wherein said offer responding machine may be set to automatically reply according to the subject matter of said offer.
15. A method for directing a blind offer to a pre-definable, anonymous potential customer client device, in a system including a supplier and a query aggregating service provider, said supplier desiring to present an offer to said pre-definable, anonymous potential customer's client device, comprising the steps of:
(a) selection by said supplier of a definable characteristics profile for identifying a potential customer;
(b) forming a query from said profile and said offer;
(c) receiving a request from said customer's client device to said query aggregating service provider for downloading a query;
(d) forwarding said query, from said query aggregating service provider to said customer's client device;
(e) determining the relevance to said customer of said offer contained in said query by scanning a personal database in said client device, upon receiving said query from said query aggregating service provider, said scanning being conducted according to said definable characteristics profile and notifying said customer of said offer if said determination for relevance is positive.
16. A method in accordance with claim 15 for directing a blind offer to a pre-definable, anonymous potential customer client device, in a system including a supplier and a query aggregating service provider, said supplier desiring to present an offer to said pre-definable, anonymous potential customer's client device, further comprising the step of enriching said offer with personal information obtained from said personal database.
Beschreibung  (OCR-Text kann Fehler enthalten)

SYSTEM AND METHOD FOR SECURE, QUERY-DRIVEN, TARGETED

ELECTRONIC SOLICITATION

Field of the Invention

The present invention relates to the field of network navigation and browsing. More particularly, the present invention relates to a method and system for securely directing highly focused, blind solicitations from soliciting suppliers to a pre-definable, potential customers while maintaining the potential customer's anonymity.

Background of the Invention

The information network known as the World Wide Web (WWW) is arguably the most complete source of publicly accessible information available. Today, companies offer various subscription services accessible via the network.

For example, many people now do their baking, stock trading, shopping and so forth from the comfort of their own homes via Internet access. Companies from various industries, utilize the advantages of the network to expand the number of their potential customers.

The main problem many companies are facing is targeting and identifying those anonymous potential customers. With so many people of various interests and needs surfing the network, it's difficult for a company to be sure that the distributed information and data will indeed reach the desired target audience, and answer their specific needs, thus creating that important first link with future prospective clients.

The paradox of reaching as many people as possible while maintaining a good unique and personal relationship calls for a system which can recognize potential clients and make sure vital information is made available to them in such way that benefits both sides. The situation of a fast, personal and diverse communication world created new customers. Those customers demand relevant and available data in real time. The data they receive from the suppliers must fit their economical and social conditions and ambitions.

Customers connected to the network are facing the same problem from the other side. Until recently the sheer volume of information available, strewn over various sites and sources could leave a would-be customer hopeless and confused. This situation creates a frustrated customer. Customers today receives mass of data that isn't relevant to them, meanwhile the data they need and that would interest them often does not reach them.

What is needed is a system that will ensure a customer that he will get all the data and information he needs, data that matches his personal conditions. Maintaining a productive relationship over the network today is first and foremost a matter of privacy and security. In today's business world where some of the main Internet services providers are banks and credit companies, matters of secrecy and security are of grave importance. From the very first steps, a customer is usually asked to provide sensitive private information that is essential to the relationship at hand. The client expects a fully secured system, assuring that none of his personal data will be made available to other parties.

More particularly, there is a need for a system which permits soliciting suppliers, i.e. companies which want to identify particular classes of customers and offer goods or services to those particular customers. Balanced against this need is the potential customer's desire to be identified for offers which are particularly well-suited to his needs or lifestyle without being bombarded by junk e-mail, eel phone calls, SMS text ads, etc. and to be identifiable to the soliciting suppliers without exposing any personal information to access by the soliciting supplier or any other third party.

Summary of the Invention

Thus the present invention has the following as objectives, although this following is not exhaustive: It is one objective to permit soliciting suppliers to be able to identify with greater particularity those persons which it considers as potential customers for select products, services and offers.

It is a further objective of the present invention to be able to identify particular potential customers by being able to query the information in the databases on the personal computers of the potential customers.

It is a further objective of the present invention to permit polling or querying of databases on personal computers of potential customers without actually giving access to the personal database to the enquiring soliciting supplier.

It is a further objective of the present invention to permit polling or querying of databases on personal computers of potential customers without actually identifying oneself to the enquiring soliciting supplier.

It is a further objective of the present invention to permit potential customers to filter with greater accuracy the kind of unsolicited offers and solicitations they receive by permitting anonymous polling or querying of personal databases without without actually giving access to the personal database to the enquiring soliciting supplier.

It is still a further objective of the preset invention to provide a potential customer's client device with a personal agent which can execute queries originating from a soliciting supplier and interact with the local personal database on the client device and determine whether or not to bring the query to the attention of the potential customer.

It is yet a further objective of the present invention to provide personalized solicitation screening to potential customer's which can refer to the potential customer's personal databases with security being guaranteed to the potential customers by providing a system in which personal information is only inflowing, never outflowing, during the polling or querying process. These objectives and others not mentioned hereinabove are accomplished by the methods and systems of the present invention in which a blind offer may be directed to a pre-defiπable anonymous potential client device. In one exemplary embodiment of the present invention, a supplier, for example third party desiring to present an offer to a potential customer's client, is registered with the server of a query-aggregating service provider and is provided with software for creating a query, supplied by the query-aggregating server company. The query comprises an offer from a supplier and a definable characteristic profile for identifying a potential customer. After the soliciting supplier creates the query he sends the query directly to the query aggregating server (which may also be referred to hereinbelow as the service provider server).

In an alternative embodiment of the present invention, the details of the offer are simply forwarded from the soliciting supplier to the query-aggregating service provider by an means including by facsimile, telephone, speech recognition, etc. the query is then formulated by the query-aggregating service provider into a downloadable query and saved in the query-aggregating and forwarding server. Please note that the gathering and forwarding function are independent and can be performed by independent, but communicatively linked, servers or by a single server performing both functions.

The customer's client device, communicatively connectable to the network, includes a personal agent of the preset invention, for requesting and receiving queries from the query aggregating server via any communications network, and a personal database accessible to the personal agent. The personal agent includes a program, the database management system (hereinafter "DMS") for executing a query, scanning data in the personal database and determining the relevance of the personal database contents to the query in question. When such relevance is established the personal agent notifies the potential client of the offer, while no identifying information about the client is returned or revealed to the query-aggregating server or to the supplier.

Brief Description Of The Drawings

The details of the present invention, both as to its structure and operation, can best be understood by referring to the accompanying drawings, in which like reference numbers and designations refer to like elements.

FIG. 1a is a block diagram of a typical conventional Internet communication system where the database is located on the server;

FIG. 1b is a block diagram of a typical conventional Internet communication system where the database is located on the client;

FIG. 2a is a block diagram of one embodiment of an Internet communication system, according to the present invention;

FIG. 2b is a block diagram of one embodiment of an Internet communication system, according to the present invention;

FIG. 3a is a block diagram of an exemplary client system, shown in FIGS. 2a and 2b;

FIG. 3b is a block diagram of an exemplary client system, shown in FIGS. 2a and 2b;

FIG. 4a describes the types of elements, according to the present invention;

FIG. 4b describes one embodiment of the elements described in FIG 4a;

FIG. 5 is an exemplary Flowchart diagram;

FIG. 6 is a block diagram of a network constructed in accordance with the present invention; Fig. 7 is an overview of a blind solicitation system, according to an embodiment of the present invention; and

Fig. 8 is an illustration of the client's device connected to the network, according to an embodiment of the present invention.

Detailed Description Of The Exemplary Embodiments

A typical known Internet communication system is shown in FIG.s 1a and 1b. With reference to FIG. 1a, a client computer system 102 communicates with server computer system 106 across the Internet 108. For simplicity, only one client and one server are shown, although many servers and clients are actually connected to the Internet. Client system 102 executes a browser application program 104 that allows a user of client system 102 to access objects, such as documents, graphics, programs, etc., that are stored on a server, such as server 106, through the Internet 108. The browser 104 displays graphics and/or text, which represents, identifies or describes objects, which may be accessed. The user selects an object 106 to be accessed, typically by clicking on the text or graphics representing the object. Each object is identified by an Internet address known as a uniform resource locator (URL). For example, URL 114 identifies object 116, which is stored on server 106. The URL specifies the location of an object on the Internet, including the server on which the object is located and the location of the object on that server. Browser 104 stores a URL identifying each object 116 on serverv 106 which is available and for which text or graphics may be displayed by the browser.

In response to the selection by the user of an object, such as object 116, which is identified by URL 114, browser 104 uses URL 114 to initiate an access 110 to object

116. Server 106 then initiates a transmission 111 of object 106 to client system 102.

Each object includes an identifier of the type of the object. In FIG. 1 , object 116 includes type identifier 112. Common object types include, for example, "Hyper Text Markup

Language" (HTML) objects and "Graphical Interchange Format" (GIF) objects. The object type identifier allows the browser to properly process and display the received object. The object type is not usually communicated to the user.

With respect to a database-related application, the server 106 connects with the database 120 and retrieves data. The Server 106 then initiates a transmission 111 of object 106 to client system 102, via the publicly accessible and vulnerable Internet. The transmission 111 includes data gained from database 120 after being analyzed by the server 106. Thus personal data, which was stored on database 120, has been exposed to the server 106 and then exposed on the Internet connection 108.

FIG. 1 b differs from FIG. 1a by where the database is located. In FIG. 1b, it is shown that when the database 170 relates with client 152, client 152 initiates a transmission 160 to the server 156. Transmission 160 includes data extracted from the database 170. The data is then analyzed on the server 156 and transmitted back to the client 152 by the server 156. Again, in this scenario, personal data has been transferred via the unsecured Internet connection 160, has been analyzed on the server 156 and sent back through connection 162. Personal data has again been exposed on connection 160, then exposed to the server 156 and then exposed again on connection 162.

The present invention relates to a system and method whereby a query, which usualy will comprise an offer from a soliciting supplier, is programmed and delivered, via a query-aggregating service provider server, in what is an essentially one-way communication path, to be read only by those potential customers for whom the offer will be of particular interest. The query is constructed in a manner which may be authenticated and executed by a personal agent in the potential customer's client device. An analysis is then performed by the personal agent on the contents of the query and based upon comparison of the query parameters with the personal database of the client device. The personal agent uses the comparison analysis to determine whether in fact the offer is one which is likely to be of interest to the potential customer. If the decision is that the offer is of interest or relevant to the potential customer's interests profile, then the personal agent brings the offer to the attention of the potential customer. Thus, without having to open many uninteresting, unsolicited junk solicitations, a potential customer can passively receive offers that were truly designed for him as a consumer and the soliciting supplier can know that only appropriate consumers, such as those with real means to accept the offer, will even be made aware of the special terms of the offer. Instead of mass mailings, mailings can be directed to preferred customers, even preferred customers of which the soliciting supplier was unaware.

The above process is carried out with reference to the customer's personal information available on his local database, according to the specific demands and requirements of the soliciting supplier and yet without permitting the soliciting supplier to either know the identity of the potential customer nor to have access to any of the extremely personal and sensitive information stored in the user's database. The following exemplary embodiments describe alternative ways in which the system and method of the present invention may be constructed and carried out. Athough reference may be made to certain specific types of networks, comunications devices, browser environments and software languages, it should be understood that these are being used by way of example only and are not necessarily limited to the precise examples given herein.

With reference to FIG. 2a, there is illustrated a block diagram of one leg of an embodiment of an Internet communication system for focusing offers or advertisements of goods or services to particular customers while still maintaining the anonymity of blind solicitation, in accordance with the present invention. A personal agent 240 has been previously installed and made a part of a user's (potential customer's) client resources in the client device 200, i.e. everything on the client's side of the network 208 between client 202 and query-aggregating service provider server 206. Personal agent 240 may be constructed according to one exemplary embodiment as described further hereinbelow in Appendix A and functions as the go-between for the client's resources 200 and query-aggregating server 206. Personal agent 240 comprises a query processing bundle which includes the data management system 230 (usually incorporating some functional portion or extension of a device's operating systems), through which personal databases 220 are built, managed and accessed, all on the client 202. Personal agent 240 may further comprise data filters and object display handlers for dealing with the transfer of information between the DMS 230 and the client browser 204. A user of client system 202 selects an object 241 identified by URL 214. URL 214 identifies an object 241 on personal agent 240, which includes a request 232 for additional data, i.e. the user initiates a query dowload request sequence from a server 206. Personal agent 240 initiates request 232 of DMS 230, which initiates transmission 222 of request 232. Database 220 receives transmission 222 of request 232 and sends the results of the transmission to DMS 230 via transmission 221. The request is analyzed by personal agent 240 using DMS 230 and is returned, tagged irrelevant (i.e., not of interest to the user, not a potential customer) or relevant (suitable for and of interest to the user or potental customer) and enriched with personal data, to the personal agent 240, which sends it to the client 202, if relevant.

The objects 241 on personal agent 240 are kept up to date by the server 206 using periodical push technology as shown later in FIG. 6. The object 241 has a clear definition in it of what result is relevant and what result isn't relevant. Using the invention, no personal data has left the client personal resources. The only data passed over the Internet is a request for query download and the handshake processes. Substantive data of a fairly general nature only, i.e. the query itself, is passed only in the direction of user's device 200.

With reference to FIG. 2b, an alternative exemplary embodiment has objects 266 which are stored on server 256. A user of client system 252 selects an object identified by URL 264. URL 264 identifies an object 266 on query aggregating server 256, which object 266 includes a request 263 for additional data as well as an offer forwarded to server 256 by a supplier (not shown). Object 266 is passed over a network, such as the Internet, to browser 254 which opens the object 266 and sends the request 263 to personal agent 290. Personal agent 290 initiates an access 282 of DMS 280, which initiates a transmission 272 of request 263. The request is analyzed by DMS 280 with reference to personal databases 270 and returns 281 tagged either irrelevant or relevant to personal agent 290. If tagged relevant, the request 263 is first enriched with the personal data culled from the personal databases 270 before being returned to personal agent 290. Personal agent 290 sends enriched relevant requests 263 to the browser 254 to be displayed on client 262. Irrelevant tagged requests 263 are simply deleted, trashed or otherwise disposed of, although they might, for example, be saved for casual browsing. Using the invention, no personal data has left the client personal resources and yet the user has been made aware of an offer of particular relevance to his interests without the supplier even being actually aware of his identity. Additionally, the supplier has been able to send an offer which it can be confident will only be displayed for users for whom such an offer is really of interest. The only data passed over the Internet is general information contained in object 266, i.e., the offer and the criterion by which the query can determine relevance of the offer to the recipients thereof. The criterion comprise the request 263 which will be made to the personal databases 270 and analyzed for relevance or irrelevance.

An altenative exemplary embodiment of the system and method of the present invention are described hereinbelow where the client system is shown based on a personal computer ("PC") as illustrated in FIG. 3a . The arrangement described hereinbelow is well-suited, for example, where a bank server sends information directly to a user and then later uses the query aggregating server to send focused queries to its customers according to the present invention. The embodiment is divided into 4 stages for ease of understanding:

Setup Phase: In this stage, the system, which includes a service provider server 305, sends data 307 to personal agent 340 upon getting a request from the personal agent 340. Personal agent 340 sends the users personal data 307 to the DMS 330 through transaction 332 for saving in a personal database 320 via transaction 322 and from which the DMS 330 will be able to access the information in the future in response to queries. An example of this might be the stage when all of the user's bank account details from a particular banking services provider are first downloaded and saved locally.

General Update Phase: Server 306 sends general data, for example interest rates, exhange rates, general information regarding accounts, etc. and interface objects 0 (HTML) to personal agent 340 through transaction 312. The general data is then transmitted through 332 to the DMS 330 and then stored on database 320 through transaction 322. This type of general data might be useful for updating objects used for displaying results of relevant queries.

Query Execution Phase: Client 302 accesses object 341 , which is identified by URL 314. Object 341 is stored on personal agent 340. When object 341 is activated, it sends a data request 332 to the DMS 330. The DMS 330 imports the saved users personal data acquired from the setup phase and from previous general data updates, as well as the current query from personal database 320 and sends it back to the personal agent 340 through transaction 331. The personal agent 340 then sends the enriched object 341 to client 302 through transaction 311. An enriched object 341 is the offer which will be displayed to the browser when a query has been tagged relevant, however the offer now may have incorporated therein personal data taken from the personal database 320 which is specifically relevant to the substance of the offer.

Object Enrichment: As a hypothetical, a bank A may wish to find potential customers who, according to their own personal data have a savings account with another bank having a minimum balance of $5,000 and are earning interest at a rate of 6.5% or lower, for the purpose of offering those persons an account which will bear interest at 7%. The details of the sought customer will be contained in a search profile table in the query and the details of the offer will be in an offer HTML object in the query. When the DMS 330 analyzes personal database 320 and finds that the user has a savings account #123456789 at bank B which has a balance of $10,000 and earns interest at a rate of 5.5%, the query is tagged as relevant, the object is enriched with the details about the user's current account situation, and the enriched offer is displayed, for example as follows:

"Bank A is pleased to advise you that the $10,000 which you have on deposit in Account #123456789 at Bank B earning only 5.5% interest is eligible to be deposited into one of our high-interest accounts bearing interest at 7%. If you would be interested in more details, please either press on the button to send us an automatic e-mail or contact Joe A. Banker at the following phone, fax, etc. " One way of constructing the above mechanism is shown in appendix A, Module 2 where it can be seen that object 341 is an HTML object In the HTML code of object 341 there is a request for data The HTML activates the Active X control shown in module 1 of Appendix A to execute a data request from the database and then sends the enriched object to the client (transaction 311)

Periodic Query Re-execution Phase In this phase, If-Then queries, which have been saved on the client 302 are re-executed periodically by personal agent 340 and DMS 330 re-analyzes the clients' database 320 for the purpose of determining whether a previously irrelevant query is now relevant due to changing personal circumstances in the user's life as evidenced by changes in the personal databases 320 For example, the Bank A query would not be displayed if no accounts exceed $5,000 however several months, there may be accounts which now satisfy the minimum balance requirement of the query and should now be of interest to the user Personal agent 340 initiates a set of analyses to be made by the DMS 330 The DMS 330 runs the queries using the data stored in the Setup and General Update Phases 307 and 312 on database 320 by transaction 322 The analyses are then sent to the personal agent 340 through transaction 331 The analyses are enriched with the clients' personal data and tagged relevant/irrelevant this is done by the DMS using the database The personal agent 340 then sends the analysis tagged relevant to the client 302 using transaction 311 The analyses are displayed on the client's browser 304 This phase is typically run on many objects which have been stored over a period of time Although the agent may have processed many analyses, the client receives results in the form of the offers only of those queries whose analysis indicated that they are relevant to the specific interests of the potential customer

With reference to FIG 3b there is illustrated an alternative exemplary embodiment in which the client device is a personal data assistant (PDA) or any other wireless communications-enabled device such as a wireless application protocol (WAP)-based client system, i e an Internet-enabled cellular phone is shown in FIG. 3b Phase 1 (Setup): The system in the figure includes a service provider server 355, which sends data 357 to personal agent 390 at the request of personal agent 390 and only after the appropriate security clearance procedure has been performed by personal agent 390. Personal agent 390 sends the user's personal data to the DMS 380 through transaction 382. The DMS 380 saves the data on database 370 through transaction 372.

Phase 2 (Query Download and Execution): Client 352 accesses object 366, which is identified by URL 364. Object 366 is stored on personal agent 390. When object 366 is operated, it sends a data request 382 to the DMS 380. The DMS 380 imports the data from database 370 (enrichment) and sends it back to the personal agent 390 through transaction 381. The personal agent 390 then sends the enriched object to client 352 through transaction 361.

Phase 3 (Periodic Query Re-execution) : Personal agent 390 periodically analyzes the clients' database 370. Personal agent 390 initiates a request 362 to the browser 354 which accesses object 366. Object 366 is identified by URL 364 and is stored on server 356. When object 366 is operated it initiates a set of analyses to be made on the DMS 380. The DMS 380 runs the queries using the data stored on database 370 with transactions 382 and 381. The analyses are then sent to the personal agent 390 through transaction 381. The analyses are enriched with the clients' personal data and tagged relevant/irrelevant all of which is done by the DMS 380 using the database 370. The personal agent 390 then sends offers of those analyses which were tagged relevant to the client 352 using transaction 362. The offers which survive the analyses and have been tagged as relevant are displayed on the client's browser 354. This phase is run on many objects. Although the agent 390 processes many analyses, the user may have displayed only the few offers which the analyses showed were of relevance to him.

In FIG. 4a we see an illustration of the client system. The client system is divided into the following four elements: Examples of browser applications 411 which may be used in the present invention include an Internet browser suitable for navigating the Internet from a desktop PC or network terminal, such as Microsoft Corporation's Internet Explorer® Netscape Corp 's Navigator® or it may be a wireless browser designed for oisplay using the Wireless Application Protocol ("WAP") 412 or some other application useful on a protocol designed for use in the wireless device environment, e g cellular phone browser application 413 or a wireless personal digital assistant, or in fact for any other form of network-enabled application such as WebTV, in which the client has no local resources at his command, i e the player is temporarily downloaded along with the client

A personal agent 421 may be an ActiveX control (OCX) module implemented from within the browser application 411 as a browser application plug-in module 422, and implemented in the browser application itself Alternatively, the personal agent 421 may be a Java applet 423, implemented from within browser application 411 Finally, personal agent 421 may be constructed as a stand alone application 424 executable directly in the operating system of choice for the intended recipient

Alternative exemplary embodiments may use a database management system 431 (hereinafter "DMS") which is based on protocols such as an ODBC Protocol 432, JDBC Protocol 433, or ADO / DAO Protocol 434 For using specific database commands which are not implemented by the particular protocols, it is possible to construct a database stored in text files and implement code written in Visual Basic to retrieve data from the text files as demonstrated in Appendix A, module 7

A database 441 useful for the present invention can be practically any form of database, such as Microsoft Corporation's Access® and Fox Pro®, text files, SQL Server®, Oracle®, Palm OS-compliant, Windows CE compliant, etc li With reference to Fig. 4b, there is illustrated an alternative exemplary embodiment of the client system of the present invention.

In the instant exemplary embodiment, the four basic elements, browser, personal agent, DMS and database, may be located and implemented on the client's system, e.g. a PC or other network browser-enabled device.

The flowchart diagram shown in FIG. 5 illustrates an example of the processing of a query.

A request for using the personal agent may either initiated by the user manually or automically according to a periodic interval estabished by the user or the agent itself, for example everytime the browser is activated and at ten minute intervals:

1) User request: the user opens his browser and elects to look at his financial status, the agent is automatically activated. Automatic initiation may include that the agent identifies that the user is connected to the Internet and proceeds or the agent calculates that some specified time interval since the previous update has passed and, even in the absence of an Internet connection, establishes new Internet connection and connects by itself.

2) Personal agent requests an update of the objects from the query aggregating server of the personal agent service provider. The personal agent downloads the updated list of object files from the query aggregating server, and compares the updated list with a local (to the client) list, which is stored on the personal agent's system. The personal agent then downloads the updated or new object files and deletes the unnecessary files.

3) The personal agent activates an object. For example, the object may be an HTML file which the personal agent reads and identifies as being requests for data, in one exemplary embodiment accompanied by a soliciting supplier's offer.

4) The activated object requests data from the DMS, using the DMS commands.

5) The request is then processed by the DMS using the database. The DMS returns the request tagged relevant or irrelevant and enriched with personal data from the database. For example, if a request was sent by a bank to check if the user is in overdraft and if so in what different accounts he has a positive balance, for the purpose of offering a new overdraft account feature or automatic account balance pooling service. The DMS checks in the database related to the banking accounts

45 and, if there is an overdraft, the request is returned tagged relevant. Then the DMS enriches the request with personal data, in this case other accounts where the user has a positive balance. For an account related to travel, the DMS would check the travel-related database or databases.

6) If the request was tagged irrelevant by the management system, the process ends. If the request was tagged relevant, it is passed to the client.

7) The client receives a data-enriched object. This object is then made available for the clients interface e.g. browser. The object can be shown to the ciient in different ways: desktop browser, WAP cellular phone browser, wired or wireless PDA, e-mail, etc.

A further alternative exemplary embodiment of the personal agent is illustrated in FIG 6, in which the query aggregating server provides the additional service of gathering general data and delivering it to personal agent equipped clients using the personal agent as a filtering mechanism. For example, the query aggregating server can be gathering news and stock index information on an ongoing basis from various news suppliers and Internet information portals. When the client signs into the system, the personal agent will be given a download of current events and stock information queries which will display only the particular news events stories and stock market information relevant according to the analysis of the query. As follows:

Step 1 : The query aggregating service provider server 601, gathers general data from Internet based general data providers 610, the data is then stored on query aggregating service provider server 601. The query aggregating service provider server 601 is fed with updated objects, by the agent services provider company 610. The query aggregating service provider server 601 now holds general data and updated objects due to this process, which is repeated routinely.

Step 2: The agent 606 is activated, automatically or by the clients' request. On activation, the agent 606 connects to query aggregating service provider server 601 and updates its database with updated general data and updated objects stored thereon.

Then the agent 601 connects with personal service providers 602 of the particular user that the agent 601 is serving. Examples of personal service providers are personal e-banking Websites or a travei agent Website. Of course, the service provider need not be contactable via the Internet as othyer forms of networks are specifically

46 contemplated to be utilized with the present invention. After gathering all the data, it is transferred to the agents database 607.

Step 3: The objects in the personal agent 606 are activated, handled by the DMS (not shown but part of personal agent 606) and returned from the personal database 607 tagged irrelevant or relevant and enπched with personal data. The objects can optionally be activated (displayed) by the user or automatically by the personal agent 606. If relevant, the personal agent sends the enriched object for display on the client's preferred interface, for instance, browser 620, cellular phone, PDA or WAP device 621 or e-mail 622.

Fig. 7 is an overview of a blind solicitation system, according to an embodiment of the present invention. In step 1 , databases and objects on the ciient device 2 are updated. Supplier's servers 10, 21 , 23, and 25 connected to the Internet 6 (or other network), send updated objects data and personal information 11, 31, 33, and 35 to the client's personal agent 5. The network 6 could be a cellular phone network, local area network ("LAN") or a wide area network ("WAN") such as the World Wide Web (WWW) or any other part of the Internet. The present invention isn't limited to any specific kind of network. The personal agent 5, whether activated automatically or by the client's request, receives personal data and sends it to the personal databases 3, where all personal data is securely kept. For example, server 21 may be bank server, wherein interactive on-line banking and account managing may be performed, sending personal data 31 which contains information about the client's bank account.

In order to achieve a high level of security the user shouldn't be able to transmit his data, which is stored in the client's personal database 3, to another user. Techniques such as double scrambling, and security handshakes and passwords are used to secure the data.

In the next stage, a soliciting supplier 10, or any third party that wishes to send a specialized offer directed at a certain kind of pre-definable customer, sends a request to make a query 17 to a query aggregating server 1 for targeting the pre-defined potential customer. In response, the query aggregating server 1 provides the soliciting supplier 10 with a software query model builder, which the soliciting supplier 10 uses to creates his own αuerv Query 17 includes the oπ'er to be displayed if the recipient in this case the user oτ client 2, is found to be a match as well as a table defining the characteristics for which the DMS of personal agent 5 must look on pesonal databases 3 in order to identify a match and tag the query 17 relevant for display to the user/potential customer The query 17 thus generated is packaged and sent to the query aggregating server 1 , where it is held for downloading by users either for a set time period or until replaced or cancelled by either soliciting supplier 10 or by query aggregating service provider 1 Thus eacn query may be provided by the soliciting supplier 10 that sent it, with a different and unique query that has the ability to identify the most suitable client to his request

Finally, the personal agent 5 connects to the query-aggregating server 1 In a previous installation process, the user's client device 4 downloads the personal agent 5 that enables client 2 to receive queries and offers, and select and decide from what suppliers and vendors he wants to receive service or about which subjects he would like to receive offers After connecting and passing through a security protocol for the purpose of establishing identities and authorizations, the user's personal agent 5 receives a query 71 (although in reality a personal agent will receive and process as many previously unknown queries as there are) comprising an offer from a previously selected soliciting supplier 10 The personal agent 5 determines the relevance of the offer by scanning the personal database 3 The scanning is conducted by seeking for matches to the definable characteristic profile that was made part of the query by the soliciting supplier 10

If matches are found, the answer to the query is "relevant" and the offer is displayed to the user 4 The personal agent 5 may be activated automatically every time the clients device is operated, or according to time periods the client selects, for example every 12 or 24 hours

Security and anonymity for the user are provided by the system of the present invention since the sensitive information in the form of discriminating queries always flows in a uni-directional way from the query aggregating server 1 and soliciting supplier's servers to the client device 2 and never does a soliciting supplier know who actually was seletced to see the offer Through the whole process there is definite

IB separation between the query aggregating server and the personal database to assure that the data used to decide if the offer is relevant is never exposed through the network.

Fig. 8 is an illustration of the client's device connected to a network, according to an embodiment of the present invention. A query is created by a supplier 33, using special software supplied by the query aggregating service provider, and transmitted by communications process 103 to query aggregating server 91. The query 61 could be updated as described hereinabove with respect to a General Update Phase according to the supplier's 33 needs, by receiving an updated query 62 through line 102 directly from the query aggregating server via the network. The update of the query could be made by the customer 33 and later be sent to the query aggregating server, or created by the query aggregating server according to the customers requests. Personal database 70, located in the personal agent, stores updated data 71,72,73 sent by servers 31 , 32,33, possibly in objects which came packaged as queries. The objects might thus be used to update supplier templates and the like for helping in displaying relevant data or offers sent by the supplier using the invention. The personal data 71, 72, and 73 are displayed on the user's screen 40, using a local data aggregation system 51. The personal data could be summarized and be displayed to the client 41.

In addition to the personal data, the personal database 70 is shown containing a query and an offer 61 , which were pulled automatically or by the user's request, from the query-aggregating server 91 through communication process 104.

The personal agent 12 contains a user preference checklist 45 which enables the user to decide from a list of soliciting suppliers the query aggregating company is serving or a list of subjects, from which suppliers or on what subjects he wishes to receive offers. A data filter 52, working as part of the DMS portion of personal agent 12, receives the personal data 71 ,72 and 73 from the personal database portions of personal agent 12, and executes queries 61, and 62, by scanning data 71, 72, and 73. In the end of the scanning process the selectable offers that were found relevant, and that matches the client characteristics, would be displayed to the client via a personal offer display 42.

4Θ For example server 33 can be a travel agency looking for new potential clients and offering them a ski vacation. The travel agency sends a query "can you find the word ski" and an offer for a ski vacation in France 103 to the query aggregating server 91. The personal agent 12 downloads the query containing the offer from the query aggregating server 91 and scans the personal databases 71, 72 and 73 looking for the word "ski". If the answer to the query is "relevant" then the travel agency offer is displayed to the client.

In one exemplary embodiment of the present invention, the user can choose to respond to the offers by sending e-mail or a fax 44 or calling directly to the supplier. In another aspect of the invention, the client can activate an offer responding machine 101. The offer responding machine 101 enables the client to choose from a list of suppliers, from whom the client received offers, and to whom the user wants to send a response. The machine 101 informs the user that he received offers, optionally showing him a list of suppliers that sent him offers, and asks the user to indicate 1) to which suppliers he wants to send a message 2) what is the message he wants to send.

In an alternate exemplary embodiment, the soliciting supplier could have queries integrated within the HTML of Website, whereby, when a personal agent-equipped client browses on the Website, the queries can be downloaded and executed locally by the client, thereby providing an enriched experience to the client. In such a way, a soliciting supplier can still deliver well-focused offers, enriched with the personal information from the personal database, and the user/potential customer can rest assured that the information in the personal database was not available to any third party, or even to the soliciting supplier.

It should be understood that exemplary embodiments described hereinabove are merely given by way of non-limiting example. It is understood and anticipated that modifications and variations on the above examples may be made by one of skill in the art without departing from the spirit and scope of the invention as that invention is hereinafter claimed. Appendix A

Coαe Exairples of invention

Convention used: X [Y] = X is an example of Y

Module 1 [Part of Personal Agent] - Example of agent embodiment as Active X Control (OCX)

Tne following code when compiled as an Active X control (OCX) nicr. is used m an HTML page shown in Internet Exπlorer [Browser] executes data request 332 to database management system using ADO [DMS] .

Open Connection - Opens an ADO connection to DB.MDB [Database (320) m figure

3al .

CloseConnection - Closes an ADO connection to DB.MDB [Database (320) n figure 3a] .

AskQuery - [Data Request 332]

ReturnValue - Returns data from the database, this data can be tested m the code of the HTML page and if relevant can De enriched.

Dim connConnectionToDB As ADODB . Connection Dim rs As ADODB . Recordset Private Type udR ecord ro ( ) As String End Type Dim arrResult() As udRecord

Public Sub OpenConnection ( ) Dim strDB_Path As String strDB_Path = App. Path strDB_Path If Rιght$ (s strDB_Path

Open a connection. Set connConnectionToDB = ew ADODB . Connection connConnectionToDB. ConnectionStπng = _ Provιder=Mιcrosoft. Jet . OLEDB.3.51; " & Data Source=" & strDB_Path & ";" & Persist Security Info=False" connConnectionToDB . Open End Sub Public Sub CloseConnection ( ) connConnectionToDB . Close End Sub

Public Function AskQuery (query As String, numOfFields As Integer) Dim mtLoopCounter D m mtRowsCounter Dim size As Integer Dim temp ( ) As String Set rs = New ADODB. Recordset ReDim temp(0) ReDim arrResult (0) mtLoopCounter = 0 mtRowsCounter = 0 size = numOfFields - 1 rs .ActiveConnection = connConnectionToDB rs.Oper (query) 4 As Q-ery = Null Else intCount = 0 rs .MoveFirst Do Until (rs.EOF)

For mtLoopCounter = 0 To size temp (mtLoopCounter ) = rs . Fields (mtLoopCounter ) ReDim Preserve temp (UBound (temp) + 1) Next mtLoopCounter arrResult (mtRowsCounter) .row = temp ReDim Preserve arrResult (UBound (arrResult ) -*- 1) rs .MoveNext mtRowsCounter = mtRowsCounter 1 Loop

GetHisahon = " " End If rs . Close End Function

Public Function ReturnValue (ByVal rowNumoer As Integer, ByVal f eldNumber As Integer) As String

ReturnValue = arrResult (rowNumner) . row (fieldNumber ) End Function Public Function GetSιze() As String

GetSize = UBound (arrResult ) End Function

Module 2 [Part of personal agent]- Example of HTML page that uses the Active X control shown on module 1 to execute a data request from database and then sends enriched object to client [transaction 311 in Fig 3a]

A. Data.ntml requests data from the αatabase through OCX

<HTML>

<HEAD>

<META NAME="GENERATOR" Content="Mιcrosoft FrontPage 4.0">

<TITLEX/TITLE>

</HEAD>

<BODY>

<! — If any of the controls on this page require licensing, you must create a license package file. Run LPK_TOOL.EXE to create the required LPK file. LPK_TOOL.EXE can be found on the ActiveX SDK, http://www.microsoft.com/mtdev/sak/sdk.htm. If you have the Visual Basic 6.0 CD, it can also be found n the \Tools\LPK_TOOL directory.

Tne following is an example of the Object tag: —>

<OBJECT ID="test"

CLASSID="CLSID:0B770616-A8AB-11D3-A324-0080AD7DBF90"

CODEBASE="data/Test.CAB#versιon=l,0, 0, 0" wιdth="495" heιgnt="34">

<param name="_ExtentX" value="13097">

<param name="_ExtentY" value="900">

</0BJECT>

<SCRIPT LANGUAGE="VBScrιpt">

test . OpenConnection

aim cnoose cnoose =2

2.2 'a =test .AskQuery ( "SELECT Max (TnuotBan.- . Date) AS MaxOfDate, Last (TnuotBank. Itra) AS LastOfltra, TnuotBank. Hesnbor.ID, HeshBank. HeshbonName FROM TnuotBank LEFT JOIN HeshBank ON TnuotBank.HeshbonlD = HeshBank . HeshbonID GROUP BY TnuotBank.HeshbonlD, HeshBank. HeshbonName HAVING (( (Last (Tnuot3ank. lira) )<>0) ) ORDER BY Max (TnuotBank. Date) DESC ", 4)

'a =test.AskQuer ("SELECT Ma (TnuotBank. Date) AS MaxOfDate, Last (TnuotBank. Itra) AS LastOfltra, TnuotBank.HeshbonlD, HeshBank. HeshbonName FROM TnuotBank LEFT JOIN HeshBank ON TnuotBank.HeshbonlD = HeshBank . HeshbonID GROUP BY TnuotBank.HeshbonlD, HeshBank . HeshbonName ORDER BY Max (TnuotBank. Date) DESC ", 4) a =test.AskQuer ("SELECT Max (TnuotBank. Date) AS MaxOfDate, Last (TnuotBank. Itra) AS LastOfltra, TnuotBank.HeshbonlD, HeshBank. HeshbonName FROM HeshMaxDate INNER JOIN (TnuotBank LEFT JOIN HeshBank ON TnuotBank.HeshbonlD = HeshBank. HeshbonID) ON (TnuotBank.HeshbonlD = HeshMaxDate. HeshbonID) AND (HeshMaxDate .Max"! iπnDate = TnuotBank . Date ) GROUP BY TnuotBank.HeshbonlD, KeshBank. HeshbonName ORDER 3Y Max (TnuotBank. Date) DESC ", 4) dim imax sizeltra=test .GetSize imax =sizeltra -1 dim it (5, 4) , i, j for i=0 to imax for j=l to 4

Seilect Case ( : j >

Case 1 it(i,j) = test . ReturnValue (( i ), 0 )

Case 2 it(i, j) = test . ReturnValue ( ( i ) , 1 )

Case 3 it(i, j> = test . ReturnValue ( ( i ) , 2 )

Case 4 it(i, j) = test . ReturnValue ( ( i ) , 3 )

End Select next next

'get tnua and value of tnua a= test.AskQuery ("SELECT Itra , Value , Makor , Asmachta , Date, HeshbonID FROM TnuotBank ORDER BY Date DESC", 6) dim tnua(200, 6) ,p(2,7) dim sizeTnua sizeTnua=test.GetSize imax =sizeTnua -1 for i=0 to imax for j=l to 6

Select Case ( j ) Case 1 tnua(i,j) = test .ReturnValue ( (i) , 0) Case 2 tnua(i,j) = test .ReturnValue ( (i) , 1) Case 3 tnua(i,j) = test .ReturnValue ( (i) , 2) Case 4 tnua(i,j) = test .ReturnValue ( (i) , 3) Case 5 tnua(i,j) = test .ReturnValue ( (i) , 4 ) Case 6 tnua(i,j) = test .ReturnValue ( (i) , 5) End Select next next

'get tnua accordinα to account number: a= test. AskQuery ("SELECT r.esnbonlD FROM TnuctBant Group By hesnocnlD" 1) dim sizeHeshbon 'number of accounts aim tnuotall (10, 200, 5) 'array contain all tnuot

' -heshbon ia

'3 -nu of record

' k - num of f_eld dim tnuot (10) 'array will hold neshbon ID's dim tnuotGodel (10) sizeHesnbon =test .GetSize for m=0 to sιzeHeshbon-1 tnuot (m) =test . ReturnValue ( (m) , 0 ) next for ι=0 to sizeHeshbon -1 x=tnuot (l) a= test.AskQuery ("SELECT Itra , Value , Makor , Asmachta , Date FROM TnuotBank WHERE HeshDonID='" & x & "' ORDER BY Date DESC ", 5) ιmax=test . GetSize -1 tnuotGodel (1) =ιmax +1 for ]=0 to imax for k=l to 5 Select Case (k) Case 1 tnuotall (I, , k) = test . ReturnValue ( (3 ), 0)

Case 2 tnuotall (1, 3 , k) = test . ReturnValue ( (3 ) , 1)

Case 3 tnuotall (1, 3, k)= test . ReturnValue ( (3 ) ,2) Case 4 tnuotall (1,3, k)= test .ReturnValue ( (3) , 3) Case 5 tnuotall (1, 3 , k)= test .ReturnValue ( ( ) , 4 ) End Select next next next

'get visa and value of visa ' a = test. skQuery ("SELECT BDate , Esek , BSum , Asmachta , HSum , Month ( [Hdate] ) AS [month], Month ( [bdate] ) AS monthB From visa Where ( Month ( [Hdate] )= 10 And CardID = 601 )" , 7) 'dim vιsa_601_10(ll,5) 'ιmax=test .GetSize -1

' for ι=0 to max 'for 3=1 to 5 ' Select Case (3)

Case 1 ' vιsa_601_10 (1, 3 ) =test . ReturnValue ( (1) ,0) ' Case 2 ' vιsa_601_10 (1, 3) = test .ReturnValue ( (1) , 1)

Case 3 ' vιsa_601_10 (1,3 ) = test .ReturnValue ( (1) , 2) Case 4 vιsa_601_10 (1,3) = test . ReturnValue ( (1 ) , 3) 1 Case 5 visa 601_10(ι,j) = test . ReturnValue ( ) , 4) End Selec ' next ' next 'get v sa ana value of visa a = test .AskQuery ( "SELECT BDate , Esek , BSu , Asmacnta , HSum From visa ORDER BY BDate DESC" , 5)

dim sizeVisa sizeVisa =tes . GetSize ιmax=sιzeVιsa -1 for 3=1 to 5

Select Case (3 ) Case 1 visa (1, 3 ) =test .ReturnValue ( (1) , 0) Case 2 vιsa(ι,3) = test . ReturnValue ( (1) , 1) Case 3 vιsa(ι,3) = test . ReturnValue ( (1) , 2) Case 4 vιsa(ι,]) = test .ReturnValue ( (1) , 3) Case 5 vιsa(ι,3) = test .ReturnValue ( (1) , 4) End Select next next

'get visa and value of visa

' a = test .AskQuery ("SELECT BDate , Esek , BSum , Asmacnta , HSum , Month ( [Hdate] ) AS [month], Month ( [bdate] ) AS monthB From visa Where ( Month ( [Hdate] )= 11 And CardID = 601 )" , 7) 'dim vιsa_601_ll (11,5) 'ιmax=test. GetSize -1 ' for ι=0 to imax for 3=1 to 5

Select Case (3) Case 1 vιsa_601_ll (1,3) =test . ReturnValue ( (1) , 0) Case 2 vιsa_601_ll (1, 3 ) = test . ReturnValue ( (1 ) , 1)

Case 3 vιsa_601_ll (1,3 ) = test .ReturnValue ( (1) , 2) Case 4 vιsa_601_ll (1, ) = test . ReturnValue ( (1) , 3) Case 5 vιsa_601_ll (1, ) = test . ReturnValue ( (1 ) , 4) End Select ' next 'next

'get visa and value of visa ' a = test.AskQuery ("SELECT BDate , EseK , BSum , Asmachta , HSum , Month ( [Hdate] ) AS [month], Month ( [bdate] ) AS monthB From visa Where ( Month ( [Hdate] )= 10 And CardID = 3047 )" , 7) dim vιsa_3047_10 (11,5) ' ιmax=test .GetSize -1 ' for ι=0 to imax ' for 3=1 to 5 ' Select Case (3) ' Case 1 v sa_3047_10 (1, ) =test . ReturnValue ( (1) , 0) ' Case 2 vιsa_3047_10 (1, 3 ) = test . ReturnValue ( (1 ) , i) Case 3 v sa_3047_lC (1, ) = test . ReturnValue ( ( , 2) Case 4 vιsa_3047_10 (1,3) = tes .ReturnValue ( ) , 3) Case 5 vιsa_3047_10 (1,3) = tes . ReturnValue ( (l) , 4) ' End Select ' next ' next

'get visa and value of visa ' a = test .AskQuery ( "SELECT BDate , EseK , BSum , Asmacnta , HSum , Month ( [Hdate] ) AS [month], Month ( [bαate] ) AS monthB From visa Where * Month ( [Hdate] )= 11 And CardID = 3047 )" , 7) aim vιsa_3047_ll (11,5) ' ιmax=test . GetSize -1

for 3=1 to 5

Select Case (3) Case 1 vιsa_3047_ll(ι, )=test. ReturnValue ( (1) , 0) Case 2 vιsa_3047_ll (1, ) = test . ReturnValue ( (1 ) , 1)

Case 3 v sa_3047_ll (1, ) = test . ReturnValue ( (1) , 2)

Case 4 vιsa_3047_ll (1, ) = test . ReturnValue ( (1) , 3) Case 5 vιsa_3047_il (1,3 ) = test . ReturnValue ( (1) , 4 ) End Select next ' next

'get pik and value of pik 'a = test. AskQuery ("SELECT Osum , Nsum , HeshbonID , Update , Name, SDate , Ribit FROM Pikdonot ", 7) a = test .AskQuery ("SELECT Pikdonot . Osum , Pikdonot . Nsum , Pikdonot . HeshbonID , Pikdonot .Update , Pikdonot .Name, Pikdonot . SDate , Pikαono . Ribit FROM Pikdonot INNER JOIN PikadonMax ON Pikαonot . Update = PikaαonMax.MaxπnπUpdate" , 7) dim pιk(100,7) ιmax=test . GetSize -1 sizePik = test. GetSize for ι=0 to imax for 3=1 to 7

Select Case (3) Case 1 pιk(ι, 3 )=test. ReturnValue ( (1) , 0) Case 2 pιk(ι,3) = test . ReturnValue ( (1) , 1)

Case 3 pi (1,3) = test .ReturnValue ( (1) , 2) Case 4 pik (1,3) = test . ReturnValue ( (1) , 3) Case 5 pik (1,3) = test .ReturnValue ( (1) , 4) Case 6 pιk(ι,3) = test .ReturnValue ( (1) , 5) Case 7 pιk(ι,3) = test .ReturnValue ( (1) , 6) End Select next

2.6 next

'get marot eren and value of niarot

' a = test .AskQuery ( "SELECT change , vbuy , va_ue , price , camut , nename , neid , heshbomα , update FROM NiarotEreh ORDER BY upαate DESC", 9) a = test. AskQuery ( "SELECT NiarotEreh. change , iarotEreh. Duy , iarotEren. value , NiarotEreh. price , NiarotEreh. camut , iarotEren. nename , NiarotEreh. neid , NiarotEren. neshbomd , NiarotEren. Update FROM NiarotEren INNER JOIN NiarotErehMax ON NiarotEreh. Update = NiarotErehMax. Maxl innUpdate ", 9) dim niarot (250, 9) dim sizeNiarot sιzeNιarot=test .GetSize ιmax=sιzeNιarot-l

for 3=1 to 9

Select Case (3) Case 1 niarot (1,3) =test .ReturnValue ( (1) , 0) Case 2 niarot (1,3) = test . ReturnValue ( (1) , 1)

Case 3 niarot (1,3) = test . ReturnValue ( (1) , 2) Case 4 niarot (1,3) = test . ReturnValue ( (1) , 3) Case 5 niarot (1,3) = test .ReturnValue ( (1) , 4 ) Case 6 niarot (1,3) = test. ReturnValue ( (1) , 5) Case 7 niarot (1,3) =■ test . ReturnValue ( (1) , 6) Case 8 niarot (1,3) = test . ReturnValue ( (1) , 7) Case 9 niarot (1,3) = test . ReturnValue ( (1) , 8) End Select next next 'get gemel a = test.AskQuery ("SELECT name, num, shovile, shoviit, hafkadot, ιtuah,mahut, tpa, vetek, heshbonid, update FROM gemel", 11) dim gemel (250, 11) dim sizeGemel sιzeGemel=test .GetSize -1

'document .write ("<font>" & sizeGemel & "</font>") imax =sιzeGemel

for 3=1 to 11

Select Case (3) Case 1 gemel (1,3) =test . ReturnValue ( (1) , 0) Case 2 gemel (1,3) = test .ReturnValue ( (1) , 1)

Case 3 gemel (1,3) = test .ReturnValue ( (1) , 2) Case 4 gemel (1,3) = test .ReturnValue ( (1) , 3) Case 5 gemel (1,3) = test .ReturnValue ( (1) , 4 ) Case 6 gemel (1,3) = test .ReturnValue ( (1) , 5) Case 7 gemel (i, ) = test . ReturnValue ( (i) , 6) Case 8 gemel (i, ) = tes . ReturnValue ( (i ) , 7) Case 9 gemel (i, ) = test . ReturnValue ( (i) , 8) Case 10 gemel (i, ) = test . ReturnValue ( (i) , 9) Case 11 gemel (i,j) = test . ReturnValue ( (i) , 10) End Select next next

'get hisahon a = test.AskQuery ("SELECT name, nameid, num, sdate, edate, osum, nsum, psu , Update, HeshbonID FROM hisahon", 10) dim hisahon(200, 10) sizeHisahon = test. GetSize imax=sizeHisahon -I for i=0 to imax for j=l to 10 Select Cast Case hisa _, ) =test. ReturnValue ( (i) , 0) Case ? his ..jn (i, j ) = tes . ReturnValue ( (i) , 1)

Case 3 hisahon (i,j) = test .ReturnValue ( (i) , 2) Case 4 hisahon (i,j) = test .ReturnValue ( (i) , 3) Case 5 hisahon(i,j) = test . ReturnValue ( (i) , 4 ) Case 6 hisahon (i,j) = test .ReturnValue ( (i ) , 5) Case 7 hisahon (i,j) = test .ReturnValue ( (i) , 6) Case 8 hisahon(i,j) = test .ReturnValue ( (i) , 7) Case 9 hisahon (i,j) = test .ReturnValue ( (i ) , 8) Case 10 hisahon(i,j) = test . ReturnValue ( (i) , 9) End Select next next test. CloseConnection —>

</script> </BODY>

</HTML>

B. Code that relates to the.data.html

<HEAD>

<META NAME="GENERATOR" Content="Microsoft FrontPage 4.0">

<META HTTP-EQUIV="Content-type" CONTENT="text/htmi; charset=windows-1255">

<TITLE>Bank Account</TITLE>

<link REL="stylesheet" KREF="styles . css">

<script language="javascript"> var titlelD = 'urir I inami rmjun - p J 3. liαmπ 7iτm'; <»/scrιpL> < r.EAD>

carent .title. location. nref= Oank_tι le . htm' var helpID nelpID=20; top.hID = helpID; parent. help. loca ιon.nref=' bank_tιp .htm'

</scrιpt>

<dιv alιgn=rιght>

<table border=0 cellpadd ng=0 cellspacmg=0 wιdth=450> <tr>

<tdx/td> </tr>

<tr alιgn=rιght valιgn=top> <td w dth=450>

<scπpt language='*3avascr pt"> //writing tnuot taole var l, 3, k; document .write ( "<table border=l cellpaddmg=0 cellspacmg=0

document .write ("<td alιgn=' center ' bgcolor=' 669966 ' font face=' times' sιze=2 color=' white 'xb>πm Jπ</td>") ; document .write ("<td alιgn= ' center ' bgcolor=' 669966 ' xfont face=' times' sιze=2 color= ' white ' xb>Niιn ] </td>" ) ; document .write ("<td alιgn=' center ' bgcolor=' 669966 ' xfont face='tιmes' sιze=2 color-='whιte'xb>NπDTiDK</td>") ; document .write ( "<td alιgn=' center ' bgcolor=' 669966 ' xfont face='t mes' sιze=2 color='whιte'xb>viNrι</tdx/face>") ; for (I = 0; l <parent . data. sizeTnua; ι++) { document .write ( "<tr>") ; for (3 = 1; 3 < 6; 3++) { document .write ( "<td alιgn= ' right ' >") ; var num=parent . data . tnua (1, 3 ) ; if (num < 0) document .write ( "<font face='tιmes' sιze=2 color=Red>" num) ; else document .write ( "<font face='tιmes' sιze=2 co!or=DarkSlateBlue>" + num) ; document .write ( "&nbsp; </td>") ;

} document .write ("</tr>") ; } document. write ("</table>") ;

</scπpt>

</td> </tr> </table> </dιv> </body> </HTML>

Module 3 [Phase 1 in Fig 3a] Saves αata sent to tr.e client from service provider server m HTML formal (Transaction 307 in fig 3a)

Public Sjb URLsaveAs2 (strURL As String, strLocal As String) Dim b () As Byte Dim ir.t≤aveAs As Integer Dim strHt lLine As String intSaveAs = FreeFileO

Open strLocal For Output As #intSaveAs

Cn Error GoTo ErrorHandler fr Connected. Ir.etl . RequestTimeout = 180 b() = frmlnetCti. Inetl . OpenURL (strURL, 1) For t = 0 To UBound (b) - 1 If b(t) = 10 Then

Print #intSaveAs, strHtmlLine strHtmlLine = "" Else strHtmlLine = strHtmlLine & Chr(b(t)) End If Next

Print #mtSaveAs, strHtmlLine Close -r ntSaveAs

ErrorHandler:

OnError "urlsaveas2", Err, Error?, Now, "we don't have line input here"

Exit Sub End Sub

B. Example of saving data that arrived with URLSaveas2 in Database using ADO (Transaction 330 in fig 3a)

************************************************************

*'DESCRIPTION : import info from heshbonall.html *

*'and update table TnuotBank *

************************************************************

Sub I porttnuotHTML ( )

Dim rsTnuot As ADODB . Recordset 'holds mfo from tnuotbank table

Dim strNewLine As String 'input line from html file

Dim strYearTemp As String 'year of update

Dim strHeshbon As String 'number of account

Dim a As Integer 'checks if new account (a=l)

Dim dtUpdated As Date 'updating date

Dim fileNumber As Integer 'number of input file

Dim dtUpdateTizmun As Date 'gets date of importing for tizmun table

On Error GoTo error_l :

Set rsTnuot = New ADODB . Recordset rsTnuo .ActiveConnection = conDB_Connection rsTnuot .LockType = adLockOptimistic rsTnuct.Open "SELECT * FROM TnuotBank", , adCmdText fileNumber = FreeFileO

Open GetPath & "heshbonall.htm" For Input As #fileNumber

Line Input #fileNumber, strNewLine strNewLine = TernUpperToLower (strNewLine)

Do While Not (EOF { fileNumber) )

Do Until Mid (strNewLine, 1, 26) = "<font

Or EOF (fileNumber)

Line Input #fileNumber, strNewLine strNewLine = TernUpperToLower (strNewLine) -OOP

' f c EOF (fileNumber) Then

End If

'Do Until EOF (fileNumber)

' MsgBox ("strNewLme=" & Mid (strNewLine, 93, 8)) ' Line Input fileNumber, strNewLine 'Loop dtϋpdateTizmun = Mid (strNewLine, 98, 8)

Line Input fιleNumber, strNewLine dtUpdated = M d (strNewLine, 77, 8) strYearTemp = Mid (strNewLine, 83, 2)

Line Input #fιleNumber, strNewLine strHeshbon = Mid (strNewLine, 71, 9)

Line Input fιleNumber, strNewLine

Line Input #fileNumber, strNewLine

Line Input #fιleNumber, strNewLine strNewLine = TernUpperToLower (strNewLine)

Do While Mid (strNewLine, 1, 26) = "<font color=whιte/>l< ont>"

If (Mid (StrNewLine, 80, 1) = "/") And (Mid (strNewLine, 68, 8<> (

rsTnuot .AddNew

If Mid (strNewLine, 27, 13) = " " Then

Else rsTnuot ("itra") = Mid (strNewLine, 29, 13) End If

If Mid (strNewLine, 41, 5) = " " Then Else rsTnuot ("datev") = Mid (strNewLine, 41, 5) End If rsTnuot ("value") = Ilf (M d (strNewLine, 54, 4) <> " Mid (strNewLine, 50, 16), Mid (strNewLine, 60, 16))

If Mid (strNewLine, 54, 4) = " " Then rsTnuot ( "value" ) = -1 * rsTnuot ("value") rsTnuot ("date") = Mid (strNewLine, 78, 2) & "/" & M d (strNewLine, 81, 2) & "/" & strYearTemp rsTnuo ("asmachta") = Mid (strNewLine, 84, 8) rsTnuo ("makor") = Trim (Mid (strNewLine, 93, 14)) rsTnuot ( "heshbonid") = strHeshbon rsTnuo ("update") = dtUpdated rsTnuot . Update End If

Line Input SfileNumber, strNewLine strNewLine = TernUpperToLower (strNewLine) Loop Loop

Close tfileNumber rsTnuot. Close

UpdateTizmun "tnuotbank", dtUpdateTizmun error_l :

OnError "ImporttnuotHTML", Err, Error$, dtUpdated, strNewLine Resume Next End Sub

Updatedata - a module that uses the above 2 functions (A & B) order to login into and get personal data from service provider server and save it m the local database.

3i After upαating t e αata tne oroceαure calls procedure Chec<RedFlags [282 m fig 2b] wπch accesses the Dv5 m orαer to analyze the αata m αatabase and if relevant, shows enπcned cata.

Public Sub UpdateDataO

URLsaveAs2

"http: //hb. bankleum .co.il: 8000/homepank/FιrstLogmMιddleFrame . asp?/L=H/TBL/U

=I127011/A=2", AppPatr s "hb.ntml"

URLsaveAs2

"http : //hb. bankleumi . co . il : 8000/Homebank/HBIsapi . dll?MfcISAPICommand=GetForm& query=/L=H/S=01/T=01/Q=01/APl=*/WCQUERY/IE4/STD/U=I127011/A=2", AppPath &

"hb.htm"

URLsaveAs2

"http: //hb. bankleumi.co.il: 8000/Homebank/HBIsapi . dll?MfcISAPICommand=GetForm& query=/L=H/S=01/T=01/Q=01/APi=678330002567212/WCQUERY/IE4/STD/U=I127011/A=2",

AppPath & "heshbon.htm"

ImporttnuotHTML

CheckRedFlags

End sub

D. The following function periodically updates the client's database with data from the service provider server, according to the relevance of changes m the personal data.

Dim rsTizmun As ADODB . Recordset open table tizmun Set rsTizmun = New ADODB. Recordset rsTizmun.ActiveConnection = conDB_Connectιon rsTizmun. LockType = adLockOptimistic rsTizmun. Open "SELECT tablename, update FROM Tizmun", , adCmdText f nd the requiered record and update the updating date Do Until (rsTizmun. EOF)

If (rsTizmun ("tablename") = tableName) Then rsTizmun ( "update") = newDate rsTizmun. Update Else rsTizmun . MoveNext End If Loop rsTizmun. Close End Sub

*'DESCRIPTION : this runction gets a table ID number *

*'and activates the function that *

*'updates this table *

*'INPUT : : integer - table ia number *

********************************************************,

Sub ActivateFunction (ByVal tableName As String) Select Case (tableName) Case "pikdonot" ImportPikaαonAll

Case "gemel" ImportGemel

Case "hisahon" ImportHisahon

3£ Case " iarotere " DpdateNiarotΞreh

Case "tnuotbank" blnNeeαlmportOld = True

ImporttnuotHTML

LocateTnua

Case "v saold" Importtnuotv

Case "v sanew" ImporttnuotvNew

Case "tnuotold" ImportTnuotOld

End Select End Sub

^DESCRIPTION: th s function cnecKS f the tables that * need to pe updated eacn month were * upαated in the current month, if they * weren't , ne function updates them here *

Sub UpdateAllTables ()

Dim rsTizmun As ADODB. Recorαset 'get mfo from tizmun table

D m strUpdated As String 'get αate of updating

Dim mtHefresn As Integer 'hefresh between the date and updating date

Dim strPath As String 'path of application blnlmportFa led = False 'assume import succedes strPath = GetPath

URLsaveAsl "http: //hb. bankleumi . co . il : 8000/homebank/default . asp", strPath & "filel.html"

URLsaveAsl "http ://hb. bankleumi. co. il: 8000/homebank/top. asp? /L=H/TBL/U=I127011/A=2", strPath & "file2.html"

URLsaveAsl "http: //hb. bankleumi.co.il: 8000/homeoank/FιrstLogmMιddleFrame . asp?/L=H/TBL/U =I127011/A=2", strPath & "file3.html"

URLsaveAsl "http : //ho .bankleumi . co . l : 8000/homebank/HBIsapi . dll?MfcISAPICoιτιmanα=GetForm& query=/L=H/TBL/U=I127011/A=2", strPath & "file4.html"

URLsaveAsl "http ://hb. bankleumi. co. il : 8000/homebank/Alert . asp? /L=H/TBL/U=I127011/A=2", strPath & "file5.html"

URLsaveAsl "http ://hb. bankleumi. co . il: 8000/homebank/TooIBoxAfterNew. asp?/L=H/TBL/U=I1270 11/A=2", strPath & "file6.html"

URLsaveAsl "http : //hb . bankleumi . co . il : 8000 /homeoank/HBIsapi . dll?MfcISAPICommand=ShowButt ons&command=/L=H/TBL/U=I127011/A=2", strPath & "file7.html"

URLsaveAsl "http ://hb. bankleumi. co. il: 8000/ho ebank/Adv. asp?/L=H/TBL/U=I127011/A=2", strPath & "f le8.html"

URLsaveAsl "http: //hb. bankleumi . co. l : 8000/homebank/default .asp", strPath & "fιle9.htrrl"

UpdateTnua 'update tnuotbank ana cneck for otner updatmgs I f (clnlmport Faileα = True ) Tnen

MsgBcx { " Import Failea , try later " ) End I f get mfo from tizmun table Set rsTizmun = New ADODB. Recorαset rsTizmun.ActiveConnection = conDB_Connectιon ' rsTizmun. LockType = adLockOptimistic rsTizmun. Open "SELECT tablename, filename, update, Tkufa, UrlPath FROM Tizmun", , adCmdText rsTizmun. MoveFirst

' if tao_e is updated each month (tkufa=l) :

' check if table needs to be updated this month f taole is updated each week (tkufa=2) : cneck if table needs to be updated this week if table is updated each day (tkufa=3) :

' update table URLsaveAsl "http: //hb. bankleumi.co.il: 8000/homebank/FirstLogmMiddleFrame . asp? /L=H/TBL/ϋ =I127011/A=2", AppPath & "hb.ntml" Do Until (rsTizmun. EOF) strUpαated = rsTizmun ( "update") Select Case (rsTizmun ( "Tkufa" ) ) Case 1 'update each month

If (Month (strUpdated) <> Month (date) ) Then

ImportAndUpdate rsTizmun ( "UrlPath" ) , rsTizmun ( "FileName" ) , rsTizmun ("TableName") End If

Case 2 'update each week hefresh = DateDiff ( "d", strUpdated, date) If hefresh >= 7 Then

ImportAndUpdate rsTizmun ( "UrlPath" ) , rsTizmun ( "FileName" ) , rsTizmun ("TableName") Else

If Weekday (strUpdated) > Weekday (date) Then

ImportAndUpdate rsTizmun ( "UrlPath" ) , rsTizmun ( "FileName" ) , rsTizmun ( "TableName" ) End If End If

Case 3 'update each day

If (rsTizmun ("TableName") = "tnuotold") Then

If blnNeedlmportOld = True Then 'update tnuotold only if nessesary ImportAndUpdate rsTizmun ( "UrlPath" ) , rsTizmun ( "FileName") , rsTizmun ("TableName") End If Else

If (rsTizmun ("TableName") <> "tnuotbank") Then

ImportAndUpdate rsTizmun ( "UrlPath") , rsTizmun ( "FileName" ) , rsTizmun ( "TableName" ) End If End If End Select rsTizmun.MoveNext Loop rsTizmun. Close

MsgBox "finished upαat g all") End Sub Sub IπoortAndUpαate (ByVal ur-Path As Str g, ByVa_ f leNa e As String, ByVa_ tableName .as Strmg)

Dim strFullName As String 'name of f__e +patn strFullName = GetPatnO & fileName

If (ImportFile (-rlPatn, strFullName) = True) Tnen ActivateFunct on (tableName)

Else blnlmportFaileα = True

End If End Sub Sub UpdateTnua ( )

Dim rsTizmun As ADODB. Recordset 'holds recorαs of tizmun table

Dim strUrlPath As String 'url of tnuot htmx

Dim strF leName As String 'name of file to save

Dim strTableName As String 'name of record m table tizmun

Set rsTizmun = New ADODB. Recordset rsTizmun.ActiveConnect on = conDB_Connectιon rsTizmun. LockType = adLockOptimistic rsTizmun. Open "SELECT tablename, update, filename, Tkufa, UrlPath FROM Tizmun", , adCmdText

Do Until (rsTizmun ("tablename") = "tnuotbank") rsTizmun.MoveNext Loop strUrlPath = rsTizmun ( "UrlPath") strFileName = rsTizmun ( "FileName" ) strTableName = rsTizmun ( "TableName") rsTizmun. Close

ImportAndUpαate strUrlPath, strFileName, strTableName

End Sub

Module 3 - [phase 2 of fig 3a]

UpdateApp - Gets general data and interface ob ec s (HTML) from Server (306) , and saves it in the client's machine on a αataαase (320) . The function is an example of transaction 312, 332, 322 fig 3a.

Public Sub UpdateApp ( )

Dim oldDate, newDate As Variant

Dim strNewFileName, strOldFileName As String

Dim IngNewFileVersion, IngOldFileVersion As Long

If blnCharLoaded = True Then Character .MoveTo 366, 97

Character .Speak "I am now searching for newer versions of B-Midas pages... "

Character . Play "search" End If frmUpdateApp . Show

UrlSaveAs Homepage + "NewVersionInfo.txt", AppPath & "NewVersionInfo.txt" tOld = FreeFile ()

Open AppPath + "Versionlnfo.txt" For Input As mt01d mtNew = FreeFileO

Open AppPath + "NewVersionInfo.txt" For Input As #mtNew

Do While (Not EOF (mtNew)) Or Not EOF(mtOld) ' Loop until end of a file Input #mt01d, strOldFileName, oldDate Input tfmtNew, StrNewFileName, newDate

Add file Do While (strNewFileName < strOldFileName) And (Not EOF(ιntNew)) frmUpdateApp.Listi.Addltem "Adding " + Replace ( StrNewFileName, "/", "\")

URLsaveAs2 Homepage + strNewFileName, AppPath + Replace (strNewFileName, "/", "\")

Input tmtNew, StrNewFileName, newDate Loop

Delete file Do While (strOldFileName < StrNewFileName) And EOF(mtOld) frmUpdateApp.Listi.Addltem "Deleting " + Replace (strOldFileName, "/", "\")

Kill AppPath + StrOldFileName Input tmtOld, StrOldFileName, oldDate Loop

' Update file

If strOldFileName = strNewFileName Then If oldDate < newDate Then frmUpdateApp.Listi.Addltem "Updating " -- Replace (strNewFileName, "/", "\")

Beep

URLsaveAs2 Homepage ->- strNewFileName, AppPath + Replace (StrNewFileName, "/", "\") End If End If Loop

Close tmtOld Close tintNew

FileCopy AppPath + "NewVersionInfo.txt", AppPath & "VersionInfo.txt" Kill AppPath + "newversionmfo.txt" End Sub

Module 4 - [Part of Personal Agent] Example of functions used to access database through the DMS (332 m fig 3a) n order to analyze the personal data and tag it relevant or irrelevant and show it enriched.

Dim db_fιle As String

Public conn As ADODB. Connection

Dim rs As ADODB. Recordset

Dim rsl As ADODB .Recordset

Dim rs2 As ADODB. Recordset

Public rs3 As ADODB. Recordset

Dim rs4 As ADODB .Recordset

Dim txt As String

Dim fid As Field

Dim fldl As Field

Dim fld2 As Field

Dim arr2 () As pik

Private Type tnua itra As String value As String makor As String asmachta As String date As String End Type

Private Type visa bαate As String esek As String bsum As String asmacπa As String hsum As String End Type Private Type pik osum As String nsum As Strmg heshbonid As Strmg

Update As Strmg name As String sdate As String ribit As String End Type Private Type itra heshoonname As String heshbonid As String firstofitra As String maxofαate As String End Type Private Type rasconn dwSize As Long hrasconn As Long szEntryName As String * 257 szDeviceType As String * 17 szDeviceName As String * 130 End Type

Public Sub mit () Get the data. db_fιle = App. Path ' & "\bank\data\"

If Rιght$ (db_flie, 1) <> "\" Then db_fιle = db_fιle & "\" db_fιle = db_fιle & "DB.mdb" 'MsgBox ("path= " & db_fιle) Open a connection. Set conn = New ADODB . Connection conn.ConnectionStrmg = _

Prov der=Mιcrosoft. Jet. OLEDB.3.51; " & _ Data Source=" & db_fιle & ";" & Persist Security Info=False" conn. Open End Sub

Public Function GetTnua (X As Strmg) As String Dim d As tnua ReDim arr(0) If (X = "") Then

Set rs = conn. Execute ( "SELECT Itra , Value , Makor , Asmacnta , Date FROM TnuotBank ORDER BY Date DESC", , adCmdText) Else

Set rs = conn. Execute ( "SELECT Itra , Value , Makor , Asmachta , Date FROM TnuotBank WHERE HeshbonID='" & X & "' ORDER BY Date DESC ", , aαCmdText) End If If rs.EOF Then

GetTnua = Null Else For I = 0 To 9 txt = txt & Tri S (fid. a αe) α.itra = rs.Fιelds(O) α. value = rs.Fιelds(l) α.ma or = rs.Fιelds(2) d. asmachta = rs. Fields (3) d.date = rs.Fιelds(4) arr(I) = d

ReDim Preserve arr (UBound (arr) 1) rs .MoveNext Next I

If Len(txt) > 0 Then txt = Left$(txt, Len(txt) - 1) GetTnua = " " End If End Function Public Function GItraO As Strmg

Set rs3 = conn. Execute ( " SELECT Max (TnuotBank. Date) AS MaxOfDate, First (TnuotBank. Itra) AS FirstOfltra, TnuotBank.HeshbonlD, HeshBank. HeshbonName FROM TnuotBank INNER JOIN heshBank ON TnuotBank. HesnbonlD = HeshBank. HeshbonID GROUP BY TnuotBank.HeshbonlD, HeshBank. HeshbonName Havmg (First (TnuotBank. itra) <> 0) ORDER BY Max (TnuotBank. Date) DESC ", , adCmdText) Dim e As itra Dim p As Integer ReDim arr3 (0) p = 0 If rs3.EOF Then

GItra = "" Else

Do Until (rs3.EOF) e.maxofdate = rs3. Fields (0) e. firstofitra = rs3. Fields (1) e. heshbonid = rs3. Fields (2) e .heshbonname = rs3. Fields (3) arr3 (p) = e p = p + 1 ReDim Preserve arr3 (UBound (arr3) + 1) txt = txt & Tnm$ (fldl. value) & vbTab rs3.MoveNext Loop

If Len(txt) > 0 Then txt = Left$(txt, Len(txt) - 1) rsl. MoveNext GItra = "" End If End Function

Public Function Gvaltnua (X As Integer, Y As String) As Strmg Select Case (Y)

Gvaltnua = arr (X). itra Case "value"

Gvaltnua = arr (X). value Case "makor"

Gvaltnua = arr (X).makor Case "asmachta"

Gvaltnua = arr (X) .asmachta Case "date"

Gvaltnua = arr (X). date End Select End Function

Public Function Grecsnum(X As String) As String Select Case (X) Case "tnua" Grecsnu = Bc nd (arr ( ) )

Grecsnum = UBound (arrl () ) Case "pik"

Grecsnum = UBounα (arr2 ( ) )

Grecsnum = UBounα (arr3 () ) End Select End Function

Public Function Gvalιtra(X As Integer, Y As Strmg) As String Select Case (Y)

Case "heshbcnname"

Gvalitra = arr3 (X) .neshbonname Case "heshooniα"

Gvalitra = arr3 (X) . heshboniα Case "firstofitra"

Gvalitra = arr3 (X) . firstofitra Case "maxofdate"

Gvalitra = arr3 (X) .maxofdate End Select End Function

Public Sub destructor () ' rs. Close ' rsl. Close ' rs2. Close ' rs3. Close rs4.Close conn. Close End Sub

Module 5 - [Phase3, 311 in fig 3a] a. An example of a way of sending enriched ob ect to client m a form of an E-Mail message the personal agent sends to the client.

Private Sub SendEmailRedFlags () Dim mtFileNum As Integer Dim TheOutlook, TneMapiName, TheMail

Set TheOutlook = CreateOb3ect ( "Outlook. pplication" ) Set TheMapiName = TheOutlook. GetNamespace ( "MAPI " ) If TheOutlook = "Outlook" Then

TheMapiName .Logon "profile", "password" Set TheMail = TheOutlook. Createltem (0) TheMail. To = EmailAddress

TheMail. Sub: ect ^ EDTiπ imuπi. FlUTiπ" = B-Midas" TheMail. Boαy"500- "7U] FTT^CD π~mv7 '1922 l.π " TheMail. Send End If End Sub b. An example of a way of sending enriched ob:ect to client n a form of an Cellular SMS (Short Messaging System) message tre personal agent sends to the client.

This function receives a message to be sent, identifies the preferred cellular SMS system, and activates the relevant function for that service provider. (In our example UpdateCellLog)

Sub AlertCell (ByVal strAlert As Strmg)

Dim strPath As String ' aolication path strMessage = strAlert strPam = Acp.Patn & "\" strAreaCode = GetSetting ( "takzibit " , "Init", "CellAreaCode", "")

'the user nas cellcom If strAreaCoαe = "052" Or strAreaCode = "053" Or strAreaCoαe = "058" Then UpdateCellLog 'insert to cellLog.ntm

'the apropriate username and password

'we want to give time to load the page 'and only after get session ia frmCellSend.Timerl. Enabled = True

'opening cellcom login page frmCellSend.WebBrowserl .Navigate strPath & "cellLog.htm" 'cellcom send message page is being opened by 'cellLog.htm , in orαer to read session id number Else 'the user has pelephone UpdatePele frmCellSend.Timerl. Enabled = False frmCellSend.WebBrowserl .Navigate strPath & "Peletext Sirvice.htm" End If End Sub

This function activates two HTML pages the first log. html & message.html. This function enriches log. html with the users logon name and passworα and submits the html ob3ect to the service providers' server. The service providers' server returns an html ob3ect and the function the activates function: msertnumber

Sub UpdateCellLog ()

Dim mtFilelnput As Integer 'number of input file

Dim mtFileOutput As Integer 'number of temp output file

Dim strUserName As Strmg 'username

Dim strPassWord As String 'password

Dim strLine As String ' line input

strUserName = GetSetting { "takzibit", "Init", "CellUserName", "bmidas") strPassWord = GetSetting ("takzibit", "Init", "CellPassWord", "bmidas") mtFilelnput = FreeFileO

Open App. Path &

For Input As #mtFιleInput mtFileOutput = FreeFileO

Open App. Path & "\cellLog.htm" For Output As #mtFιleOutput

Do Until EOF (mtFilelnput)

Line Input ttmtFilelnput, strLme

If (strLme Like "*<'—insert username here—>*") Then strLme = Replace (strLme, "- --insert username here-->", strUserName) End If If (strLme Like "*<■ --insert password here—>*") Then strLme = Replace (strLme, "<' --insert password here-->", strPassWord) End If

Print #mtFιleOutput, strLme Loop

Close #mtFιleInput Close #mtFιleOutput End Sub

This function fills the html ob3ect received by the server with tne message and submits it to the server. Tne suomission of message.html sends the message to the user. '"DESCRIPTION: tnis function gets a nu oer *

' " and inserts it to tne right *

'* places in ceil hodact file *

'*INPUT: strNumber - string *

Sub InsertNumber (strSessionNumoer As String)

Dim mtFilelnput As Integer ' input file number Dim mtFileOutput As Integer 'output file numoer Dim strLme As String ' line input strNumαer = GetSetting ( "takzioit", "Init", "CellPhoneNumber" , "498164") strAreaCode = GetSetting ( "takzmit", "Init", "CellAreaCode", "053") strCounter = 100 - Len (strMessage)

'opennmg JllUTin Dli7"7D

'and writing session number mtFilelnput = FreeFile

Open App. Path & "\cellHodTavnit.htm" For Input As #mtFιleInput mtFileOutput = FreeFileO Open App. Path & "\cellHod.htm" For Output As #ιntF leOutput strLme = ""

Do Unt l EOF (mtFilelnput)

If EOF (mtFilelnput) Then

End If

Line Input #mtFιleInput, strLme

If (strLme Like "*<| — rite your session number here—>*") Then strLme = Replace (strLme, "< —write your session number here-->", strSessionNumber ) End If If (strLme Like "*<' —insert area code here—>*") Then strLme = Replace (strLme, "< —insert area code here—>", strAreaCode)

End If

If (strLme Like "*<ι — nsert number here—>*") Then strLme = Replace (strLme, "<' —insert number here-->", strNumoer)

End If

If (strLme Like "*<ι —insert counter here—>*") Then strLme = Replace (strLme, "< --insert counter nere—>", strCounter)

End If

If (strLme Like "*<| — nsert msg here-->*") Then strLme = Replace (strLme, "< * —insert msg here-->", strMessage)

End If Print #mtFιleOutput, strLme Loop

Close tmtFilelnput Close

strPatn = App. Path & "\" frmCellSend.WebBrowserl. Navigate strPath & "cellHod.htm" End Sub

Log. html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transιtιonal//EN">

<' — saveα from url= ( 0054 ) ttp : / /text . cellcom . co . ιl /webp/cg /pu/pu_logm . exe ?x=x — >

<HTMLXHEADXTITLE>Uϋϊ?ϋ D1|7'7I]</TITLE> i <META ccr.tert = "text/htm; cnarset=_so-8859-3 " nttp-eσu_v=Content-Type>< ' -- <META .-TTP-EQ'JIV="Cc-.tεrt-Type content=" text /html; cnarset=ιso-8859-8"> — >

<scrιpt _anguage=3avascrιpt> function f lllSubmit ( )

{ document . LogmForm. ShownUserName. value = ""11117 αocument .LogmForm. ShownPassworα. value = "JIN"1.]"

Chec<LogmSubmιt ( ) αocument .LogmForm. submit ( ) ;

}

</scπpt>

<SCRIPT src="UDi7U Dlj7'7D_f lies/Resize .3 s "></SCRIPT>

<SCRIPT src="UDj71D Dlj7'7D_f lles/GeneralFunctions .3 s "></SCRIPT>

<SCRIPT src="UD U Dlp'7U_f ι es/PU_Logm.3 s"X/SCRIPT>

<META content="MSHTML 5.00.2314.1000" name=GENERATORX/HEAD>

<BODY on oaα ="f llSubmit O " bgColor=#f 4ef αα l <=olack vLmk=black>

<DIV angn=center>

<SCRIPT> sMissmgϋserName = "T\W\?21 l^CU WT]J1(I]T]π Dϋ] T\R UJpil"; sMissmgPassword = "πϋJpm HΩO~ W ?Γ\" ; bAlreadySubmitted = false; </SCRIPT>

<TABLE alιgn=center border=0 cellPaddmg=0 cellSpacmg=0>< ' — Advertisment >

<TBODY>

<TR>

<TD alιgn=rιght colSpan=5 vAlιgn=top><A href="http: //www. cellcom. co . l/f ramemamδ . html"><IMG border=0 heιgnt=55 src="13Dj7U Dlpi7U_fιles/Banner . g f " wιdth=400x/AX/TD>

<TD alιgn=left vAlign=top><A href ="http : //www. cellcom. co . il/ "XIMG borαer=0 heιght=66 src="UDpU Dl '7I]_f lles/CellcomLogo . gif " wιαth=:41></AX/TDX/TR>< ' — Navigation Bar >

<TR>

<TD alιgn=rιght colSpan=6 vAlιgn=bottomXA nref="http: //www. cellcom. co . il/f ramemam4. html "x IMG border=0 heιgnt=46 src="UDplD mj77D_f ιles/CellcomTextLogo2. gif " wιαth=14lx/AX/TDX/TR> <TR>

<TD alιgn=πght colSpan=5 vAlign=bottom><IMG heιght=18 <T Lang=Eng"XIMG . gif " wιαt

<TR>

<TD alιgn=πght colSpan=5 vAlιgn=top>

<TABLE bgColor=#fbae07 Dorder=0 cellPaddmg=0 cellSpacmg=0 heιgnt=350 wιdth=471> <TBODY> <TR>

<TD alιgn=mιdαle vAlιgn=top>

<TABLE bgColcr=wmte borαer=0 ceilPaαα ng=3 cellSpacing=0 neιgr.t = 3 5 wιαth=467> <T30DY> <TR>

<TD aχ gn=πgnt colSpan=3><! — FONT FACE="Courιer New (Hebrew)" SIZE="2"

FONT color=#ad0000 size=2><B>&nbsp; </Bx/FONTX/TDx/TR> <TR>

<TD coISpan=3>

<HR> </TD></TR> <TR>

<TD alιgn=left

href="http://192.115.11.18/webp/Cgi/PU/PU_RegForm. exe?Lang=Heb"><IMG porder=0 heιght=34 src="D1p'7D UDpU_fιles/btn_Regιstratιon.gιf" wιdth=69x/AX/TD> <TD alιgn=rιght colSpan=2 vAlιgn=topXFONT sιze=2XB>T17[]]

T]ϋ]πi][D</BX/FONTXBRXFONT color=#ad0000 sιze=2>'7T]]1"1"' [DΗ1J1

UJΠΓI U ΏR IΏI nm^in ni7inn Drnxm <BR>.D'?PIU Op r mum Ϊ PTIΓ <BR>.VNπι ππiωnπ JT0Ϊ7T1 NT^ ΠD-'ΪJΠΠ TΠNI ^puπr

</FONTx/TDX/TR>

<FORM actιon=http: //192.115.11.18 /webp/Cgi/PU/PU_CheckLogm. exe methoα=post name=LogmForm onsupmιt="return CheckLogmSubmit ( ) ; "XINPUT name=Lang type=hιdden value=Heb> <TR>

<TD colSpan=3>

<HR> </TDX/TR> <TR>

<TD

T]

7ΓJ:ΓΌΠ

JN Vi^tf KJI Π3H_ΓD ΠZWΌ </FONT></TDX/TR>

<TR>

<TD alιgn=leftXA href ="3 avascπpt : ResetLogmForm ( ) ; "XIMG border=0 heιght=32 src="UDpU E1p'7D_f ιles/btn_Reset . gif " wιdth=51X/AX/TD>

<TD alιgn=πghtxFONT face="Couπer New (Hebrew) " sιze=3XINPUT maxLength=50 name=ShownUserName sιze=15>

<INPUT name=UserName type=hιdden> </FONTx/TD> <TD alιgn=πght><! — FONT FACE="Couπer New (Hebrew)" SIZE="2" — XFONT sιze=2><B>:0]D T]U]J1D[D</B> </FONTX/TDX/TR> <TR>

<TD alιgn=left><INPUT border=0 he ght=32 src="UDpϋ D1p'7D_fιles/btn_Logm.gif" type=ιmage width=51X/TD>

<TD align=right><FONT face="Couπer New (Hebrew) " sιze=3XINPUT maxLength=50 name=ShownPassword sιze=15 type=password> <INPUT name=PASSWORD type=hιdden> </FONTX/TD>

<TD alιgn=r ght><1 — FONT FACE="Courιer New (Hebrew)" SIZE="2"— XFONT

</FONTX/TDX/TR> <TR>

<TD alιgn=πght colSpan=3> <HR> <FONT color=#ad0000 sιze=2>, 311211KT11131 KJ1 ITUTiri πDPUπ RU nmnri <ΞR><F0NT color= aα00C0 sιze=2>.71K7 -H7pU7ir lD""DT]π riUJ7π [DID. <F0NT color=oιack size=2><A href="http : //192.1

</FONTX/FONTX/FONTX/TD></TR></TBODYX/TABLEX/TDX/TRX/TBODYX/TABLEX/TD >

<TD bgColor=#ad0000>&nbsp;</TDx/TR> <TR>

<TD alιgn=rιght colSpan=6 vAlιgn=top><IMG heιght=58 src="lDDpU D1p7t)_fιles/scr_Bottom. gif" wιdth=14lx/TDX/TR> <SCRIPT> var sCookieValue = ""; var sTempCookieValue = GetCook e ( "PU_CellcomTextLogm" ) ; sCookieValue = sCookieValue+sTempCookieValue; if (sCookieValue != "null") { asDetails = sCookieValue . split (";") ; document . LogmForm. ShownUserName .value = ""; document . LogmForm. ShownPassword. value = ""; } </SCRIPT>

</FORMX/TBODYX/TABLE>< ' —</DIV> </BODY>

</HTML>—><' —<A HREF="aaa">

<IMG SRC="/webp/Images/Pu/Heb/General/Footer . gif " BORDER="0" ISMAP> </A> — XIMG border=0 heιght=47 src="13DpU D1p7ϋ_f lies/Footer . gif " useMap=#FooterMap wιdth=619> <MAP name=FooterMapXAREA coords=320, 0, 375, 24 href="http: //www. cellcom. co. il/" shape=RECT target=Cellcom tιtle="Cellcom home page"XAREA coords=64, 27, 108, 47 href="http: //www.box. co . il/" shape=RECT target=Box tιtle="Box home page"XAREA coords=552, 27, 619, 47 href="http: //www.netology-sms . com/" shape=RECT target=Netology tιtle="Netology home page"X/MAPx/DIVX/BODYX/HTML>

Message.html

<HTML>

<HEAD>

<• —<META HTTP-EQUIV="Content-Type" content="text/html; charset=ιso-8859-8">—>

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

<τιτLE>mi)7iπ notun - αupu TJIP7D</TITLE>

<SCRIPT ni7[U - UUpϋ ϋ1p7D_fιles/Resιze.3s"x/SCRIPT>

<SCRIPT m ϋ]T1 -UUplD Dlp7D_fιles/GeneralFunct ons.3s"X/SCRIPT>

<SCRIPT πi7ϋ]D - UUpϋ ulp7ϋ_fιles/PU_RegFunctιons.:s"x/SCRIPT>

<SCRIPT T117U]T] - UϋpU D1p7D_f les/SetDbInfo.:s"></SCRIPT>

<SCRIPT πi [UL1 - ϋDpϋ D1p7D_fιles/MessageCounter.3s"x/SCRIPT>

<SCRIPT

T117UJT] - UUpU mp7ϋ_fιles/SubmιtMessage.3s"x/SCRIPT>

<SCRIPT> nPhoneLen = 6; nMaxMsgLen = 100; sAreaCodeAlert = " .371.17"^ 11113.7 Rl" ; sPhoneNumoerAlertl = "]2 "'IpTI 11371313D11 UTpn7 T7D"; sPhoneNumberAlert2 = "111130"; sAIlcweα "abcαefq: LmnopqrstuvwxyzABCDΞFG:-:iJKLMNOPQRST VWXYZ123456" ( 1 - sHebrew = "Fiπιηπωιρ:_?3uo]π j-,unrιrm:-K' sAreaCodes "052;053;058"; sϋrgencies "D1iπ;cliπ7;7"'Jl"; nDe fault Urgency = "0"; sMiss ngSender Alert = "iimpzαiuω Γ\R ωpπ",- sIllegalSenderAlert = "Π7IUJΠ παπ "-piTi κ IΓI KIΠ"; sMiss gMsgAlert "πtopαn πiπiπ

"; sIllegalMsgAlert "mmm " in κ7 in NIΠ",-

// General Alerts sMissmgAlert = "nu jj ωpπ",- sIllegalCharAlert 2 "-pin N7 m NIΠ"; sLeadmgBlankAlert = "π7",πri-i "'pin ιrκ mi7 in-',-

// Fields types sSenderFieldType = "π7ιω DCD"; sRcptFieldType sGrpFieldType sMsgFieldType = "πimπ"; sNickNameFieldType = "tuTiπωπ uw ; sFullNameFieldType sPwdFieldType = "[DuJiωn πτ]DηD' sOrgFieldType sDefaultF eldType = "IΠIDTIΠ TΓ.TΓI.Π mm",-

</SCRIPT>

<script language=javascript> function fillForm() { document .MmSendForm. SenderName . value = "bmidas" document. MmSendForm. RcptAreaCode. value ="<! —insert area code here—>' document .MinSendForm. RcptNumber .value="< ! --insert number nere—>" document. MinSendForm.CurrMsg. value ="<! --insert msg here—>" document . MinSendForm. Counter . value="< ! —insert counter here—>" CheckPuSendSubmit ( ' Heb ' ) ; document .MinSendForm. submit ( ) ; }

</script>

</HEAD>

<30DY BGCOLOR="#F4EFDD" onLoad= ' SetDocumentCapture ( document . MinSendForm. CurrMsg, document .MinSendForm. Counter) ;

UpdateCounter ( αocument .MinSendForm. CurrMsg, document .MinSendForm. Counter) ; fillFormf) ; ' onUnload=' SetDocumentRelease ( ) ; ' > <!--<BODY onLoad = 'fillFormf)' BGCOLOR="#F4EFDD">—> <DIV ALIGN="Center"> <TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" ALIGN="Center">

<! — Advertisment >

<TR> S

- UDpϋ ElpTO "></AX/TD>

<TD ALIGN="Left" VALIGN="Top"XA KRΞF="http : //www. cellcom . co . ιl"XIMG 1117U3T] - ϋUpϋ

BORDER="0" WIDTP="141" HEIGHT="66"X/AX/TD> </TR>

< ' -- Navigation Bar >

<TR>

< HREF="h "XIMG HEIGHT=

<' — <TD ALIGN="Rιght" VALIGN="Bottom"XA HREF="http: //192.115.11.18/webp/Cg /PU/PU_rielp. exe?UserName=omιdas&SessιonID= < i — write your session number here-->

m7ϋ3Tl - UDpU BORDER="0" WIDTH="94" HEIGHT="59"X/AX/TD> — >

<TD

- UD ϋ Dlp7U BORDER="0" WIDTH="94" HEIGHT="59"x/TD>

<TD ALIGN="Rιght" VALIGN="Bottom"XIMG

- UUpϋ D1p7ϋ

<TD ALIGN= HREF="http: //192 ιdas&S essιonID=< ' --wri

&Lang=Heb"xiMG

BORDER="0" WIDTH="79" HEIGHT="58 "></AX/TD>

<TD ALIGN="Rιght" VALIGN="Bottom"XA HREF="http: //192.115.11.18/webp/Cgι/PU/PU_SendForm. exe?UserName=omιdas&Sessιo nID=<' — rite your session number here-->

&Lang=Heb"xiMG

TlT7tDT - UDpU BORDER="0" WIDTH="98" HEIGHT="59"X/AX/TD>

<TD ALIGN="Rιght" VALIGN="Bottom"XA HREF="http: //www. cellcom. co. il/f ramemam4. html"><IMG

- ϋUpϋ mp7D mi)7iπ_f les\CellcomTextLogo.gif" BORDER="0" WIDTH="141" HEIGHT="59"X/AX/TD>

<TR>

<TD COLSPAN="5">&nbsp;</TD>

<TD BGCOLOR="#a.D0000" ROWSPAN="5 ">&nosp; </TD> £ </TR>

<TR>

<TD ALIGN="Rιgnt" VALIGN="Tcp" C0LSPAN="5">

<FONT SIZE="2" C0L0R="31ack"XB>, </Bx/F0NT>

<BRXFONT SIZE="2" COLOR="#AD0000 "> . UpDID 7U31''"' U3Η131 D7plϋ UpDU 3737

ΩΩΩll ΪΠ 371377U371T1 ni713131</FONT> </TD>

</TR>

<TR>

<TD ALIGN="Rιght" VALIGN="Top" C0LSPAN="5">

<FONT SIZE="2" COLOR="#AD0000">."TJ''D</FONT>

<FONT SIZE="2" COLOR="Black"XB> 1 </BX/FONT>

<FONT SIZE="2"

331p13n ϋ37</FONT>

<FONT SIZE="2" COLOR="Black"XB> 20 </BX/FONT>

<FONT SIZE="2" COLOR="#AD0000">7",7",3J311, illl H1J377u]7",1Ul</F0NT> </TD> </TR>

<TR>

<TD ALIGN="Rιght" VALIGN="Top" C0LSPAN="5">

<FONT SIZE="2" COLOR="Black"XFONT SIZE="2" COLOR="#AD0000">.</FONTXB>06/01/2000</BX/FONT>

<FONT SIZE="2" COLOR="#ADOOOO">3J77n«T'l</F0NT>

<FONT SIZE="2" COLOR="#ADOOOO">ni73J137</FONT>

<FONT SIZE="2" COLOR="Black"XB> 19 </BX/FONT>

<FONT SIZE="2"

1 U17</F0NT>

</TD> </TR>

<TR>

<TD C0LSPAN="5">&nbsp;</TD>

</TR>

<FORM NAME="MmSendForm" METHOD="Post"

ACTION="http: //192.115.11.18/webp/Cgι/PU/PU_SendMessage . exe" onSubm t="return CheckPuSendSub it ( ' Peb ' ) ; ">

< — Hidden Fields —>

<INPUT TYPE="Hιdden" NAME="FormType" VALUE="MmιmalMam">

<INPUT TYPE="Hιdden" NAME="RecιpιentStrmg">

<INPUT TYPE="Hιdden" NAME="UserName" VALUE= "bmidas ">

<INPUT TYPE="Hιdden" NAME="SessιonID" VALUE=< ' — write your session number here — >>

<INPUT TYPE="Hιdden" NAME="SentMessages " VALUE="1">

<INPUT TYPE="H dden" NAME="Lang" VALUE="Heb">

< — Details <TR>

<TD ALIGN="Rιght" VALIGN="Top" COLSPAN="5"XIMG SRC= "1117031] - ϋϋpϋ Ulp7U

I113J7in_files\tit_Details-L.gif" WIDTH="472" HEIGHT="39"x/TD>

<TD ALIGN="Rιght" VALIGN="Top" BGCOLOR="#AD0000"XIMG SRC="- UϋplD ϋlp7U mimn ni7u311_files\tit_Details-R.gif" WIDTH="141" HEIGHT="39"x/TD> </TR>

<TR>

<TD ALIGN="R ght" VALIGN="Top" COLSPAN="6"> <TABLE 3CRDΞR="0" 3GC0L0R="White" HΞIGHT=""1" WIDTH=" 610" CΞLLPADDING="C" CELLS?ACING="0"> <TR>

<TD ROWSPAN="4" 3GCOLOR="#FBAE07 " WIDTH="2 "XIMG SRC="ϋlp7ϋ πiDTiπ T117U31] -

WIDTH="2" HEIGHT="2"X/TD>

<TD WIDTH="109" ALIGN="Left" BGCOLOR="#F4EFDD"X/TD>

<TD WIDTH="32" ALIGN="Left" BGCOLOR="#AD0000"XIMG WIDTH="2" HEIGHT="2 "></TD>

<TR>

<TD ALIGN="Right" BGCOLOR="White " COLSPAN="2"> <FONT FACE="Courier New (Hebrew)" SIZE="3"> <INPUT TYPE="Text" NAME="SenderName" SIZE="20" MAXLENGTH="11">

</FONT> </TD>

<TD WIDTH="109" ALIGN="Left" BGCOLOR="#F4EFDD"XIMG m7031] - UUpϋ mp7D_files\lbl_SenderName.gif" WIDTH="100" HEIGHT="17"X/TD>

<TD WIDTH="32" ALIGN="Left" BGCOLOR="#AD0000"XIMG SRC="mi371il T1V7UJ1. - UDplD Dlp70_files\RedDot.gif" WIDTH="2" HEIGHT="2"X/TD> </TR>

<SCRIPT>

// Get the last sender name from the senders cookie and

// put it in the sender name text box. var sPreviousSenders = GetCookie ( "PU_LastSenders") ; if (sPreviousSenders != null) { asPreviousSenders = sPreviousSenders . split (";") ;

// In Netscape 4.03 and Internet Explorer 4 the method split considers a null

// after the last seperator (";" in that case) as an element in the array.

// In Netscape 4.05 it doesn't.

// The next if takes care of this situation. if (asPreviousSenders . length%2)

{ nLength = asPreviousSenders . length;

} else { nLength = asPreviousSenders . length + 1;

document .MinSendForm. SenderName .value asPreviousSenders [nLength - 3] ;

} </SCRIPT>

W <TR>

<TD ALIGN="Right" COLS?AN="2">

<FONT FACE="Cour er New (Hebrew)" SIZE="2">

<SELECT NAME="RcptAreaCode" SIZE="1">

<OPTION VALUE="Default" SELECTED>J11]17"'p</OPTION> <OPTICNX/OPTION><! — These 2 empty options are placeholders for the -->

<OPTIONX/CPTION>

<OPTICNX/OPTION><! — actual options, that are filled later in a JS code. —>

</SELECT> </FONT>

<FONT FACE="Courier New (Hebrew)" SIZE="3"> <INPUT TYPE="Text" NAME="RcptNumber" SIZE="9"

MAXLENGTH="6">

</FONT> </TD>

<TD WIDTH="109" ALIGN="Left" BGCOLOR="#F4EFDD"XIMG 1117031] - IDDplD

WIDTH="100" HEIGHT="I7"X/TD> BGCOLOR="#AD0000 "XIMG WIDTH="2" HEIGHT="2"x/TD>

<TR>

<TD WIDTH="32" ALIGN="Right " COLSPAN="2" BGCOLOR="White"><IMG

m703D - IDDplD D1p7D_files\WhiteDot.gif" WIDTH="2" HEIGHT="2"X/TD>

<TD W BGCOLOR="#AD0000"XIMG WIDTH="109" HEIGHT="12"

<TD WIDTH="32" ALIGN="Right " BGCOLOR="#AD0000"XIMG 1117031] - IDDplD D1p7D_files\RedDot.gif" WIDTH="2" HEIGHT="2 "></TD> </TR>

<TR>

<TD COLSPAN="3" BGCOLOR="#FBAE07 "XIMG SRC="- UDplD Dlp7D 3113J7in

WIDTH="2" HEIGHT="2"X/TD>

<TD WIDTH="32" COLSPAN="2" BGCOLOR="#AD0000"XIMG SRC="D1p7ϋ nilinn m7CDn -lDDplD_files\RedDot.gif WIDTH="2" HEIGHT="2"X/TD> </TR> </TABLE> </TD> </TR>

<! — Message Details >

<TR>

<TD ALIGN="Right" VALIGN="Top" COLSPAN="5"XIMG SRC="Tll7θ3D - UDpU ϋlp7D

311U7in_fiies\tit_MsgDetails-L.gif" WIDTH="472" HEIGHT="29"X/TD>

<TD ALIGN="Right" VALIGN="Top" BGCOLOR="#AD0000"XIMG SRC="- IDDpU D1p7D mi)7in 1H7u3n_files\tit_MsgDetails-R.gif" WIDTH="141" HEIGHT="29"X/TD> </TR> S <TR>

<TD ALIGN="Right" VALIGN="Tcp" C0LSPAN="6">

<TABLE 3ORDER="0" EGCOLOR="White" HEIGHT="'7l" WIDTH="610" CELL?ADDING= " 0 " CELLSPACING=" 0 " > <TR>

<TD ROWSPAN="4" 3GCOLOR="#FBAE07 " WIDTH="2 "XIMG S?.C="ϋlp7D 31111711 m70J - QDplD_files\YellowDot.gif" WIDTH="2" HEIGHT="2"X/TD>

<TD COLSPAN="2" WIDTH="467 "XIMG SRC="πi7θ3D - UDpU ϋlp7D

WIDTH="2" HEIGHT="2"x/TD>

<TD WIDTH="109" ALIGN="Left" BGCOLOR="#F4EFDD"X/TD>

<TD WIDTH="32" ALIGN="Left" BGCOLOR="#AD0000"XIMG 11170J1] -IDDplD D1p7D_files\RedDot.gif" WIDTH="2" HEIGHT="2"X/TD> </TR>

<TR>

<TD ALIGN="Left" VALIGN="Top"XlMG SRC="lll7θ3T] - IDDplD D1p7θ

WIDTH="27" HEIGHT="9">

<FONT FACE="Courιer New (Hebrew)" SIZE="2"> <INPUT TYPE="Text" NAME="Counter" SIZE="4" TABINDEX="-1" onChange='if (! IsNumber (this . value ) ) {

UpdateCounter (document .MinSendForm. CurrMsg, this) ;

} onFocus="blur ( ) ; "> </FONT> <IMG

WIDTH="27" HEIGHT="10"

<TD ALIGN="Right" VALIGN="Top">

<!-- <IMG

m7ϋ3T] - UDpU Dlp7D_f iles\txt_EngMsg.gif" WIDTH="218" HEIGHT="11"> — >

<IMG

m703D -UDpU Dlp7D_files\WhiteDot.gif"

WIDTH="2" HEIGHT="2">

</TD>

<TD WIDTH="109" ALIGN="Left" BGCOLOR="#F4EFDD"X/TD>

<TD WIDTH="32" ALIGN="Left" BGCOLOR="#AD0000"><IMG 1117031] -IDDpU Dlp7D_files\RedDot.gif" WIDTH="2" HEIGHT="2"X/TD> </TR>

<TR>

<TD ALIGN="Right" COLSPAN="2"> <FONT FACE="Courιer New (Hebrew)" SIZE="3">

<INPUT TYPE="Text" NAME="CurrMsg" SIZE="44" MAXLENGTK="100" onFocus="SetMessageTextFocus (true) ;

UpdateAndStart (document .MinSendForm. CurrMsg, document .MinSendForm. Counter) " onBlur="SetMessageTextFocus (false) ;

UpdateAndStop (document .MinSendForm. CurrMsg, documen .MinSendForm. Counter) " onChanσe=' UpdateCounter (document .MinSendForm. C rrMsσ, SO documen . MmSenαForm . Counter ) ;

UpdateAnαStop ; αocumen . inSendForm. CurrMsg, document .MinSendForm. Counter) ' > </F0NT> </TD>

<TD WIDTH="109" ALIGN="Left" 3GCOLOR="#F4EFDD"XIMG Ϊ11703D - UDplD

WIDTH="100" HEIGHT="17"X/TD>

<TD WIDTH="32" ALIGN="Left" 3GCCLOR="#AD0000"XIMG HEIGHT="2"x/TD>

<TR>

<TD BGCOLOR="White"XIMG

WIDTH="2" HEIGHT="2"X/TD>

<TD WIDTH="109" VALIGN="Top" ALIGN="Left" BGCOLOR="#AD0000"XIMG

m7θJl] - UDpU WIDTH="109" HEIGHT = "12"X/TD>

<TD WIDTH="32" ALIGN="Right " BGCOLOR="#AD0000"XIMG WIDTH="2" HEIGHT="2 "X/TD>

<TR>

<TD COLSPAN="3" BGCOLOR="#FBAE07 "XIMG SRC="- UDpU D1p7U mimn

WIDTH="2" HEIGHT="2"X/TD>

<TD WIDTH="32" COLSPAN="2" BGCOLOR="#AD0000"XIMG SRC="D1p7D miJ7in Ϊ11703D -UDpU_files\RedDot.gif" WIDTH="2" HΞIGHT="2"X/TD> </TR> </TABLE> </TD> </TR>

<!-- Options >

<TR>

<TD ALIGN="Right" VALIGN="Top" COLSPAN="5 "XIMG SRC="Tll7ϋ31] - UDpU Ulp7ϋ nilJ7in_files\tit_0ptions-L.gif" WIDTH="472" HEIGHT="31"x/TD>

<TD ALIGN="Right" VALIGN="Top" BGCOLOR="#AD0000 "XIMG SRC="- UDpU Ulp7a nilJTin m70311_files\tit_Options-R.gif" WIDTH="141" HEIGHT="31"x/TD> </TR>

<TR>

<TD ALIGN="Right" VALIGN="Top" COLSPAN="6"> <TABLE BORDER="0" BGCOLOR="White" HEIGHT="35" WIDTH="610" CELLPADDING="0" CELLSPACING="0"> <TR>

<TD ROWSPAN="3" BGCOLOR="#FBAEC " WIDTH="2"XIMG SRC="Dlp7D πiTTlil 1117031]

HEIGHT="2"x/TD>

<TD CCLSPAN="2" WIDTH="467 "XIMG SRC="11l7031] - UDpU U.1p7U

s-f <TD I,7IDTU="109" ALIGN="Left" ΞGCOLOR="-F4EFDD"X/TD> BGCOLOR="f*-AD0000"XlMG WIDTH="2" HΞIGHT="2 "></TD>

<TR>

<TD ALIGN="Rιght" C0LSPAN="2">

<FONT FACE="Couπer New (Hebrew) " SIZE="2">

<SELECT NAME="Urgency" SIZE="1">

<OPTION> </OPTION>

<OPTIONX/OPTION><1 — These 3 empty options are placeholαers for the >

<OPTIONx/OPTION><1 — actual options, that are filled later m a JS coαe. >

</SELECT>

</FONT>

</TD> LOR="#F4EFDD"XIMG WIDTH="100"

BGCOLOR="#AD0000"XIMG WIDTH="2" HEIGHT="2 "></TD>

<TR>

<TD WIDTH="32" ALIGN=" Right" COLSPAN="2" BGCOLOR="Whιte"XIMG

1117031] -UDpU

WIDTH="2" HEIGHT="2"X/TD>

<TD WIDTH="109" VALIGN="Top" ALIGN="Left" BGCOLOR="#AD0000"XIMG

D1703D - UDpU WIDTH="109" HEIGHT="12"x/TD>

<TD WIDTH="32" ALIGN="Rιght " BGCOLOR="#AD0000 "XIMG WIDTH="2" HEIGHT="2"X/TD>

<TR>

<TD COLSPAN="3" BGCOLOR="#FBAE07 "XIMG SRC="- UDpU D1p7ϋ rnrJ71il

WIDTH="2" HEIGHT="2"X/TD>

<TD WIDTH="32" COLSPAN="2" BGCOLOR="#AD0000"XIMG SRC="Dlp7D πi3J7iπ 111703D WIDTH="2" HEIGHT="2"X/TD>

</TABLE> </TD> </TR>

<' — Sena

->

<TR>

<TD ALIGN="Left" VALIGN="Center" COLSPAN="5 "XINPUT TYPE="IMAGE" m703D -UDpU U1p7D_files\btn_SendMsg.gif" BORDER="0" WIDTH="104" HEIGHT="34"X/TD>

<TD ALIGN="Rιgnt" VALIGN="Top"XlMG SRC="ϊll7ϋ3D - UDpU Ulp7θ HEIGHT="58 "></TD>

</TR>

</FORM> </TABLE>

<SCRIPT> var nValidTime = 30; var dToday = new Date ( ) ; var αExpires = new Date () ; dExpires. setTime (dToday. getTime ( ) -- 1000*60*nVai dTιme) ;

SetCookie ("PU_CellcomTextLogm", "omιdas"+" ; "+"pmιdas", dExpires) ;

SetAreaCodesInSelectBox (document .MmSendForm. RcptAreaCode, true) ; SetUrgenciesInSelectBo (document .MmSendForm. Urgency, false) ; fillFormO ; </SCRIPT>

<! —</DIV> </BODY> </HTML>—>

<'--<A HREF="aaa">

<IMC SRC="311II7iπ 1117031] -UDpU

BORDER="0" ISMAP> </A> — >

<IMG T1170J1] - UUpϋ Dlp7D_files\Footer.gif" HEIGHT="47" WIDTH="619" BORDER="0" USEMAP= " # FooterMap " >

<MAP NAME="FooterMap">

<AREA SHAPE="Rect"

COORDS="320, 0, 375,24"

TARGET="Cellcom"

HREF="httρ : //www. cellcom. co . il"

TITLE="Cellcom home page">

<AREA SHAPE="Rect"

COORDS="64,27, 108, 47" TARGET="Box"

HREF="http://www.box.co.ιl" TITLE="Box home page">

<AREA SHAPE="Rect"

COORDS="552,27, 619, 47"

TARGET="Netology"

HREF="httρ: //www.netology-sms . com"

TITLE="Netology home page">

</MAP> </DIV> </BODY> </HTML>

Module 6 - Example of enriched data sent from server (306 in fig 3a) to personal agent (340) coupled to a query. If personal agent (340) analyzes the client's catabase (320) tnrough the DMS (330) accorαmg to the query coupled

S3 t o t ._s .H TML page ana tags t re. evart , tr i s HTML cage _ s snown t o the clien t

( Transact ion 31 ^

>HTML>

>HEAD>

>META NAME=" GΞMERATOR" Content= "M crosof t Visual Stuαio 6 . 0 " >

>TITLEX/TITLE>

/>HEAD>

>BODY>

>P alιgn=cent er><FONT co or=fuchs ιaXSTRONG//>3 7',703 illJT<STRONGX / FONT> < / P>

Module 7 - This module contains exemplary Database commanαs which are not implemented by the other protocols. This s an example of accessing a text αatabase. a. This function accesses an html downloaded from a service proviαer ana saves it m a text file.

DESCRIPTION : import mfo from neshDonall.html * and update table tnuot *

' " orαer of fielαs in table: Date - 1"HNJ1 * strHesnbon - 11303111E3DD * dtUpdated - 17112f riKJl asmachta - KIOUUK * nose -llpfl * tnua - πunπ *

nowdate -limn T1N31

Sub I porttnuotHTMLO

Dim strNewLine As String 'input line from html file

Dim strYearTemp As String ' year of update

Dim strHeshbon As String 'number of account

Dim a As Integer 'checks if new account (a=l)

Dim dtUpdated As Date 'updating date

Dim fileNu oer As Integer 'number of input file

Dim dtUpdateTizmun As Date 'gets date of importing for tizmun table

Dim mtTimes 'number of accounts

Dim fileNumoerOpen As Boolean 'is fileNumber open

Dim intFileNumberDB As Integer 'number of αb file

Dim intFileNumberTemp As Integer 'number of temp file

Dim blnFileDbOpen As Boolean 'is db file open

Dim blnFileTempOpen As Boolean 'is temp file open

Dim arrResult (100, 7) As String 'array will hold result

Dim line (7) As Strmg

Dim rows As Integer ' row number

Dim columns As Integer ' columns nu oer rows = 0 columns = 0

blnFileDbOpen = False blnFileTempOpen = False

f lemputOper. = False fιleOαtputOpeπ = False

S4 f ileNumoerGpen = False t Times = 0 ' opening html file to reaα data fileNumper = FreeFile O

Open AppPath & " \heshbonall . htm" For Input As itfileNumber fileNumberOpen = True mtFileNuiruoerTemo = FreeFile O

Open AppPath & " \temp . txt " For Output As #mtFιleNumberTemp blnFileTempOpen = True

Line Input #fιleNumber, strNewLine strNewLine = TernUpperToLower (strNewLine ) Do While Not (EOF ( f ileNumber ) ) If intTimes > 0 Then

If Leumi = True Then ιtrot ( countHeshbon, 0 ) = "TI1N7 p33"

Else ltrot (countHeshbon, 0) = "U^LJigil p]3"

End If ltrot (countHeshbon, 1) = strHeshoonCopy ltrot (countHeshbon, 2) = itra ltrot (countHeshbon, 3) = dtϋpdateαCopy countHeshbon = countHeshbon + 1 End If

Do Until Mi α( strNewLine, 1, 26) = "<font color=whιte>k/font>" Or EOF (fileNumber) Or Mid (strNewLine, 1, 26) = "<font color=whιte>a</font>"

Line Input tfileNumber, strNewLine strNewLine = TernUpperToLower (strNewLine) Loop If EOF (fileNumber) Then

End If Do Until (strNewLine Like "* 1NJ1*") Or EOF (fileNumber)

Line Input tfileNumber, strNewLine

'strNewLine = TernUpperToLower (strNewLine) Loop If EOF (fileNumber) Then

End If Line Input tfileNumber, strNewLine dtUpdated = Mid (strNewLine, 77, 8) dtUpdatedCopy = dtUpdated strYearTemp = Mιd(strNewLme, 83, 2) Line Input tfileNumber, strNewLine strHeshbon = Mid (strNewLine, 71, 9) strHeshbonCopy = strHeshbon mtTirαes = mtTimes + 1

'dtUpdateTizmun = Mid (strNewLine, 98, 8)

Line Input tfileNumber, strNewLine

Line Input tfileNumber, strNewLine

Line Input tfileNumber, strNewLine strNewLme - TernUpperToLower (strNewLine)

Do While Mid (strNewLme, 1, 26) = "<font color=whιte>l</font>"

If (Mid (strNewLine, 80, 1) = "/") And (Mid (strNewLine, 68, 8) <> "7Iiηpiπ3") Then

'writing itra m3

If Miα (strNewLine, 27, 13) ■= " " Then itra = " " Else itra = Mid (strNewLine, 29, 13)

If Mid (strNewLine, 28, 1) = "11" Then itra = -1 * itra

End If End If

'writing value ilDllTl tnua = Ilf (Mid(strNewLine, 54, 4) <> " Mid (strNewLine, 50, 16), Mid (strNewLine, 60, 16))

If Mid (strNewLine, 54, 4) = " " Then tnua = -1 tnua

'writing makor RWM nose = Trim (M d (strNewLme, 93, 14)) nosel = ""

For I = " -se) let- ≤, I, 1)

I <> 34 Then

- = nosel & lett

- im (nosel) mg asmachta N31 DDN ichta = Mid ( strNewLine , 84 , 8 )

'writing date T1NI1 nowdate = Mid (strNewLine, 78, 2) & "/" & Mid (strNewLine, il, 2) strYearTemp todayDate = Format (Date, "dd/mm/yy") pageDate = Format (dtUpdated, "dd/mm/yy")

Write tintFileNumberTemp, todayDate; strHeshbon; pageDate; asmachta; nose; tnua; itra; nowdate arrResult (rows, 0) = strHeshbon arrResult (rows, 1) = pageDate arrResult (rows, 2) = asmachta arrResult (rows, 3) = nose arrResult (rows, 4) = tnua arrResult (rows, 5) - itra arrResult (rows, 6) = nowdate rows = rows + 1 End If

Line Input tfileNumber, strNewLine strNewLine = TernUpperToLower (strNewLine) Loop Loop intFileNumberDB = FreeFileO

Open AppPath & "\tnuotDb.txt" For Input As tintFileNumberDB blnFileDbOpen = True rows = rows - 1 Do Until EOF (intFileNumberDB) Input tintFileNumberDB, X If EOF (intFileNumberDB) Or X = "" Then

Exit Do End If

Input tintFileNumberDB, line(0), line(l), line (2), line (3), line (4), line(5), line(6)

If (IsIN (arrResult () , lined, 7, rows) False) Then Write tintFileNumberTemp, X; line(0) line (1) ; line (2) ; line (3); line (4); line (5); l ne (6)

S6 Else bblnNeedlmpcrtOlα = False End If

Close tfileNumber flleNumoerOpen = False Close tintFileNumberDB blnFileDbOpen = False Close tintFileNumberTemp blnFileTempOpen = False

FileCopy AppPath & "\temp.txt", AppPath & "\tnuotDb.txt" K ll AppPath & "\temp.txt" UpdateTizmun "heshbonall.htm", todayDate I porttnjotHTMLErrHandler : strOrigmal = AppPath & "\hesnbonall.htm" strNow = Date strNow = Mιd(strNow, 1, 2) & Mιd(strNow, 4, 2) & Mιd(strNow, 7, strNew = AppPath S "\bank\tnuotTable" & strNow & ".htm"

If fileNumberOpen = True Then

Close tmtFileNumber End If If blnFileDbOpen = True Then

Close tintFileNumberDB End If If blnFileTempOpen = True Then

Close tintFileNumberTemp End If

'HandError strOrigmal, strNew

OnError "ImporttnuotHTML", Err, Error$, Date

End Sub b. This faction accesses a text file and returns the number of fields in that file.

Function GetNumOfFields (ByVal tableName As String) As Integer Select Case (tableName) Case "tnuotDb":

GetNumOfFields = 8 Case "pikdonotDb" :

GetNumOfFields = 9 Case "visaDb":

GetNumOfFields = 9 Case "matzavhmti":

GetNumOfFields = 9 Case "gemelDb":

GetNumOfFields = 12 Case "hisahonDb":

GetNumOfFields = 11 Case "marotDb":

GetNumOfFields = 10 Case "poalimgemelDB" :

GetNumOfFields = 10 Case "poalimHisahonDb" :

GetNumOfFields = 8 Case "poalimpikdonotDb" :

GetNumOfFields = 8 Case "poalimvisaDb" :

GetNumOfFields = 6 Case "poalimniarotDB" :

51- GetNumOfFields = 8 Case "poalimitrctDB" :

GetNumOfFielαs = 6 Case "poalimtnuotDB" :

GetNumOfFields = 7 End Select End Function c. This function accesses a text file and returns the structure of the file.

Public Function AskQueryl (ByVal tableName As String) As udRecord ( ) Dim mtFileNumber As Integer ' ile number Dim tempO As String Dim mtLoopCounter Dim mtRowsCounter Dim size As Integer Dim arrResultl () As udRecord

ReDim temp(0)

ReDim arrResultl (0) mtLoopCounter = 0 mtRowsCounter = 0 size = GetNumOfFields (tableName) - 1 mtFileNumber = FreeFileO c = AppPath

Open AppPath & tableName & ".txt" For Input As tintFileNumber

If EOF (mtFileNumber) Then

AskQueryl = Null

Exit Function End If

Do Until EOF (mtFileNumber)

For mtLoopCounter = 0 To size

Input tintFileNumber, temp (mtLoopCounter) temp (mtLoopCounter) = Trim (temp (mtLoopCounter) ) ReDim Preserve temp (UBound (temp) + 1) Next mtLoopCounter

'ReDim Preserve arrResultl (UBound (arrResultl ) + 1) arrResultl (mtRowsCounter) . row = temp ReDim Preserve arrResultl (UBound (arrResultl ) + 1) mtRowsCounter = mtRowsCounter + 1 Loop ReDim Preserve arrResultl (UBound (arrResultl ) - 1) End Select Close tintFileNumber AskQueryl = arrResultl

' arrResult = SelectWhere (arrResultl () , 7, ">", "05/12/99", 3, "=", "4032")

' a = GetMaxMin (arrResultl () , 7, "min")

'arrResult = SelectDifferent (arrResultl () , 2) 'arrResult = Miyunl (arrResultl () , 7) 'MsgBox ("" & a) End Function d. This function receives a recordset and returns the recordset after being grouped.

Function SelectDifferent (arrayl ( ) As udRecord, ByVal fieldNumber As Integer) As uαRecor ()

Dim values ( ) As udRecord

Dim mtNumOfRecords As Integer

Dim binFound As Boolean

Dim I As Integer D m n As Integer Dim k As Integer

ReDim values (0) mtNumOfRecords = UBound (arrayl ) - 1 values (0) = arrayl (0) For I = 1 To intNumOfRecords n = UBound (values () ) blnFound = False For k = 0 To n

If arrayl (I ) .row (fieldNumber) = values ( k) . row ( fieldNumber ) Then blnFounα = True End If Next k If blnFounα = False Then

ReDim Preserve values (UBound (values ) T 1) values (UBound (values) ) = arrayl (I) End If Next I

SelectDifferent = values ( ) End Function e. This function receives a recordset and returns the recordset after being sorted.

Function Miyunl (arrayl ( ) As udRecord, fieldNumber As Integer, ByVal directionSort As String) As udRecord ()

Dim arraya ( ) As udRecord

Dim arrayb ( ) As udRecord

Dim arrayc ( ) As udRecord

Dim q As Integer

Dim I As Integer

Dim f As Integer

Dim k As Integer

ReDim arraya (0) ReDim arrayb (0) sizeArray = UBound (arrayl () ) If sizeArray = 0 Then Miyunl = arrayl ( ) Exit Function Else q = ( (1 + sizeArray) / 2)

If q * 2 > sizeArray + 1 Then q = q - 1 End If For I = 0 To q - 1

ReDim Preserve arraya (I) arraya (I) = arrayl (I) Next I f = 0 For k = q To sizeArray

ReDim Preserve arrayb (f) arrayb (f) = arrayl (k) f = f + 1 Next k arraya = Miyunl (arraya () , fieldNumber, directionSort) arrayb = Miyunl (arrayb () , fieldNumber, directionSort) arrayc = Mιyun2 (arraya () , arrayb () , fielαNumber, αirectionSort) Miyunl = arrayc End If End Function f. This function receives a name of a taoie, fιe_α to sort by, sort orαer and criteria. Ana returns a recorαset.

'*DESCRIPTION: th s function quries a table

'*INPUT: tableName - name of table (string)

'* fieldSort - number of field to sort by

'* directionSort - direction of sorting:

' * "HtoL"

'* "LtoH"

'* ParamArray arrayof conditions:

'* 1, "<",30,3, "=", "01/06/00", 1, "=", "97584"

Function QuerTable (ByVal tableName As String, ByVal fieldSort As Integer, ByVal directionSort As String, ParamArray argArrayO As Variant)

Dim resl() As uαRecord

Dim res2() As udRecord

Dim res3() As udRecord

Dim argArrayl ( ) As Variant

X = UBound (argArray) ReDim argArrayl (0) For I = 0 To X

ReDim Preserve argArrayl (I) argArrayl (I) = argArray (I) Next I resl() = AskQueryl (tableName) If UBound ( argArray () ) >= 2 Then res2 () = SelectWhere (resl ( ) , argArrayl () ) If fieldSort <> 100 Then res3() = Miyunl (res2 () , fieldSort, directionSort) arrResult = res3 Else arrResult = res2 End If Else

If fieldSort <> 100 Then res3 () = Miyunl (resl () , fieldSort, directionSort) arrResult = res3 Else arrResult = resl End If End If End Function g. This function receives a recordset, field to check, Mm or Max. And returns the ID of the record containing the Max or Mm.

Function GetMaxMm (arrayl ( ) As udRecord, ByVal fieldNumber As Integer, ByVal maxOrMm As String) As String

Dim intSize As Integer

Dim strMmMax As String mtSize = UBound (arrayl () ) strMmMax = arrayl (0) .row (fieldNumber)

Select Case (maxOrMm)

Case ("mm") :

For I = 0 To mtSize

If arrayl (I) . row (fieldNumber) < strMmMax Then strMmMax = arrayl (I ). row ( fieldNumαer) End If

€O Next I Case ("max") :

For I = 0 To mtSize

If arrayl (I) . row ( fieiαNumber ) > strMmMax Then strMmMax = arrayl ( I ). row (fieldNumber ) End If Next I End Select

GetMaxMm = strMmMax End Function n. This function cnecks, using the above functions, if the users bank account s in overdraft. This example illustrates the Personal Agent cneckmg the personal financial status of its user.

Public Function ChekRedFlagsLomi ( ) y() = AskQueryl ("tnuotDb") g = SelectDifferent (y, 1) z = UBound (g)

For w = 0 To z

a = QuerTable ("tnuotDb", 7, "HtoL", 1, "=", g(w).row(l)) s = GetSize ()

1 = GetNumOfFields ("tnuotDb") - 1 X = "" For I = 0 To s X = "" position = X & " " & ReturnValue (I, 6) position = Tπm(pos tιon) strOver = Mid (position, 1, 1)

If strOver = "-" Then For k = 0 To 1

X = X & " " & ReturnValue (I, k) Next k frmChekRedFlags . Listl . Addltem (X) End If Next I

Next w frmChekRedFlags .Listl .Listlndex = 0 strMessageText = Trim ( frmChekRedFlags . Listl . Text ) MsgBox strMessageText

End Function

Patentzitate
Zitiertes PatentEingetragen Veröffentlichungsdatum Antragsteller Titel
WO1999022328A1 *26. Okt. 19986. Mai 1999Marketswitch CorporationSystem and method of targeted marketing
WO2000002389A1 *2. Juli 199913. Jan. 2000Mcallan Robert EInformation access with targeted marketing capability
EP0926614A2 *18. Dez. 199830. Juni 1999Northern Telecom LimitedMethod and system for activity-responsive telemarketing
Referenziert von
Zitiert von PatentEingetragen Veröffentlichungsdatum Antragsteller Titel
US713687526. Febr. 200314. Nov. 2006Google, Inc.Serving advertisements based on content
US756563015. Juni 200421. Juli 2009Google Inc.Customization of search results for search queries received from third party sites
US769383010. Aug. 20056. Apr. 2010Google Inc.Programmable search engine
US77161616. Dez. 200211. Mai 2010Google, Inc,Methods and apparatus for serving relevant advertisements
US771619910. Aug. 200511. Mai 2010Google Inc.Aggregating context data for programmable search engines
US77162231. Dez. 200411. Mai 2010Google Inc.Variable personalization of search results in a search engine
US774304510. Aug. 200522. Juni 2010Google Inc.Detecting spam related and biased contexts for programmable search engines
US794134531. Okt. 200710. Mai 2011Unoweb Inc.Method of presenting contents based on a common relationship
US805106329. März 20101. Nov. 2011Google Inc.Aggregating context data for programmable search engines
US806538630. Okt. 200722. Nov. 2011Unoweb IncMethod of identifying and including related content in a requested web page
US80865595. Aug. 200327. Dez. 2011Google, Inc.Serving content-relevant advertisements with client-side device support
US81807769. März 201015. Mai 2012Google Inc.Variable personalization of search results in a search engine
US832127824. Juni 200427. Nov. 2012Google Inc.Targeted advertisements based on user profiles and page profile
US87562105. Okt. 201117. Juni 2014Google Inc.Aggregating context data for programmable search engines
US883856716. Juli 201216. Sept. 2014Google Inc.Customization of search results for search queries received from third party sites
US88745674. Mai 201228. Okt. 2014Google Inc.Variable personalization of search results in a search engine
US903193714. Sept. 201212. Mai 2015Google Inc.Programmable search engine
US905836414. Sept. 201216. Juni 2015Google Inc.Variable personalization of search results in a search engine
US91527186. Aug. 20136. Okt. 2015Google Inc.Serving advertisements based on content
US91926845. Juni 200924. Nov. 2015Google Inc.Customization of search results for search queries received from third party sites
US95892736. Sept. 20117. März 2017Unoweb Virtual, LlcMethod of three-level hosting infrastructure
US965930916. Mai 201423. Mai 2017Google Inc.Suggesting and/or providing ad serving constraint information
US97990523. Aug. 201524. Okt. 2017Google Inc.Methods and apparatus for serving relevant advertisements
Klassifizierungen
Internationale KlassifikationG06Q30/00, A01H5/10
UnternehmensklassifikationA01H5/10, G06Q30/02
Europäische KlassifikationG06Q30/02, A01H5/10
Juristische Ereignisse
DatumCodeEreignisBeschreibung
30. Aug. 2001AKDesignated states
Kind code of ref document: A2
Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW
30. Aug. 2001ALDesignated countries for regional patents
Kind code of ref document: A2
Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG
24. Okt. 2001121Ep: the epo has been informed by wipo that ep was designated in this application
6. Dez. 2001DFPERequest for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
24. Sept. 2002WWEWipo information: entry into national phase
Ref document number: 2001908084
Country of ref document: EP
19. Dez. 2002AKDesignated states
Kind code of ref document: A3
Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW
19. Dez. 2002ALDesignated countries for regional patents
Kind code of ref document: A3
Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG
13. Febr. 2003REGReference to national code
Ref country code: DE
Ref legal event code: 8642
5. März 2003WWPWipo information: published in national office
Ref document number: 2001908084
Country of ref document: EP
26. Nov. 2004NENPNon-entry into the national phase in:
Ref country code: JP
1. März 2005WWWWipo information: withdrawn in national office
Ref document number: 2001908084
Country of ref document: EP