METHOD AND SYSTEM FOR OUTPUTTING AN ANALYZED DATA REPORT

Abstract: A method for outputting an analyzed data report including receiving a request (100), accessing a database (105), collecting data (110), analyzing data (115), creating a report (120) and outputting the report (125) to an end user.

Description: METHOD AND SYSTEM FOR OUTPUTTING AN ANALYZED DATA REPORT FIELD OF THE INVENTION The present invention relates to searching systems that output reports, and, more particularly, to a searching method and system for outputting an analyzed data report based on a search and analysis of a database of records. BACKGROUND OF THE INVENTION In today's world, information is key. As a result, the ability to obtain and process information has very often made the difference between a successful entity and an unsuccessful one. Given the incentive, business entities as well as individuals have sought not only to obtain and process information but also to obtain and process information more quickly and more accurately than one's competitor; this also has the added benefit of saving valuable time and energy. Within the general desire to obtain and process information are specific interests of various entities as well as individuals to obtain additional information regarding very specific areas information. For example, there are specific interests to search for titles of motor vehicles and items of personal property that have titles, professional licenses such as medical licenses and bar certifications, and other similar arenas. One of the more important arenas in which members of the general public, as well as industry professionals, at one time or another require a search for information concerns documents recorded against parcels of real property, and, more specifically, whether those parcels contain liens, encumbrances or unrelated mortgages. At the present time, there are many users requiring access to real property-related data. Counties (or other governmental entities) throughout the United States maintain this data either in paper for or semi-automated form. Users require not only access to this data, but the analysis of it as well, in order to make critical business decisions on a daily basis. As a result, there currently exists a large demand to obtain information regarding real estate. The collection and analysis of real property data may be used for multiple purposes, the most important of which is to provide a legal means to protect the interests of land owners and lien holders by notifying all creditors, subsequent purchasers and others with an economic interest in a parcel of real property about the ownership and encumbrances against that parcel. Currently, there are multiple indexing systems in place in Recording Offices across the Country. Each State has enacted statutes that provide the methods for the indexing, sorting, searching, and presentation of real-estate related information to an end user 230. Despite the demand and legal authorization to do, the quality of these systems will largely depend upon the size (i.e., population) of a county and the funds they have available to automate these systems. These differences, along with other localized issues, make the concept of centralizing all of this indexed real estate data into one uniform, universal tracking system both unrealistic and unnecessary. While a universal tracking system concept might be applicable to personal property, such as, motor vehicles, boats, antiques and the likes, personal property is movable and can be transferred across State lines, as well as overseas. Real estate, by contrast, is immovable. The need for tracking real estate via a dependable universal system is virtually non-existent. The inhabitants move in and out of the real estate, while the real estate itself stays fixed. A demand therefore exists for a system by which real-estate data obtained from various databases such as those compiled by local jurisdictions having the legal obligation to compile and maintain real estate-related records may be accessed and a report prepared that provides the information in a format selected by the end user 230. The present invention satisfies the demand. SUMMARY OF THE INVENTION The system of the present invention takes into account the various differences between the above-noted differing methods of recordation and translates those differences into a common output. More specifically, once the system of the present invention is programmed for the terminology specific to a particular locale, as well as the procedures by which an end user 230 navigates through its computerized indexing system, it follows a predetermined set of rules to collect, analyze and display the data in a format selected by an end user 230. It is therefore an object of the present invention to provide a method for outputting an analyzed data report. A request signal is received. The request signal includes a request for an analyzed data report of a parcel of real property. A database of records is accessed. The database of records relates to the parcel of real property. Data is collected from the database of records. The collected data is then analyzed. An analyzed data report is created from the analysis of the collected data. Finally, the analyzed data report is outputted to an end user. It is a further object of the present invention to provide a system for outputting an analyzed data report. A request signal is received. The request signal includes a request for an analyzed data report of a parcel of real property. A database of records is accessed. The database of records relates to the parcel of real property. Data is collected from the database of records. The collected data is then analyzed. An analyzed data report is created from the analysis of the collected data. Finally, the analyzed data report is outputted to an end user. BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 illustrates a top level flowchart of a preferred embodiment of the present invention of a method and system for outputting an analyzed data report, made in accordance with the present invention; and FIG. 2 illustrates a block diagram of the elements in the preferred embodiment of FIG. 1. DETAILED DESCRIPTION OF THE PRESENTLY-PREFERRED EMBODIMENTS FIG. 1 illustrates a flow chart of a preferred embodiment of the present invention which is directed to a method and system for outputting an analyzed data report. Although the example illustrated in FIG. 1 relates to an analyzed data report concerning parcels of real property, the example is merely that; an example. It will be understood that the embodiment disclosed and illustrated herein may be modified appropriately for use with other information such as County clerk data, Circuit clerk data, State's attorney data to provide an analyzed data report having the information and format selected by the end user 230. FIG. 2 illustrates a block diagram showing the elements that may be utilized to effect and realize the preferred embodiment of the method and system illustrated in FIG. 1. The elements illustrated in FIG. 2 are merely exemplary and are not in any requirements of the present invention. As illustrated in Step 100 of FIG. 1 , the process of outputting an analyzed data report begins with a request by a party (termed also "end user" herein) for information regarding a particular parcel of real property. Preferably, the request is transmitted as an electronic signal from an electronic communication device 210 and received at an electronic communication node 205. Moreover, the request signal is transmitted across an electronic communication network 215. The electronic communication device 210, as used in the system 200 of the present invention , may be utilized by an end user 230 (which may enter into the system as a subscriber) to access and/or connect with the electronic communication node 205. The electronic communication device 210 can include, without limitation, wireline telephones, paging units, radio units, wireless data devices, portable, mobile or wireless telephones, personal information managers (PIMs), personal digital assistants (PDAs), personal computers (PCs), network televisions (TVs), Internet TVs, Internet telephones, portable wireless devices (i.e., two-way pagers), workstations or any other suitable communication devices. Regardless of its specific form, the electronic communication device 210 may have a user-input interface and/or a user-output interface. Alternatively, the user-input interface and/or the user-output interface may work in conjunction with the electronic communication device 210 without actually residing on the electronic communication device 210. The user-input interface may receive input from the end user 230 and the user-output interfaces may provide output to the end user 230. The user-input interface can include, without limitation, an electroacoustic transducer, such as, for example, a microphone to receive voice and other audible input from the end user 230, a keypad or a keyboard to receive key strokes from the end user 230, a touchpad or touchscreen to receive touch input from the end user 230, a handwriting recognition interface to receive handwritten input from the end user 230 or a pointing device such as, for example, a mouse or a trackball to receive point and click inputs from the end user 230. Similarly, the user-output interface of the electronic communication device 210 can include, without limitation, an electroacoustic transducer such as, for example, a speaker to provide voice and other audible output to the end user 230, and a visual display device such as a liquid crystal display or a cathode ray tube to provide graphical and/or textual information to the end user 230. The electronic communication device 210 may include more than one user-input interface and/or more than one user-output interface. Moreover, the end user 230 may utilize one or more user-input interface and/or user-output interface simultaneously. For example, a wireless telephone may have a microphone, a telephone keypad, a speaker, and a visual display device. An input interface may also reside on the electronic communication node 205. An output interface may also reside on the electronic communication node 205. Alternatively, the input interface may reside on the electronic communication node 205 while the output interface may reside on the electronic communication device 210. Alternatively, the input interface may reside on the electronic communication device 210 while the output interface may reside on the electronic communication node 205. The electronic communication device 210 may also communicate with an electronic communication node 205 via the electronic communication network 215. The electronic communication network 215 can interface with the electronic communication device 210 through wireline or wireless networks or systems (i.e., telephone or televisions systems, Integrated Services Digital Network (ISDN) systems, coaxial lines, computer networks, digital end user lines, private networks, wireless local loop systems, etc.). The electronic communication networks 215, 235, 240 of the system 200 can include, without limitation, intranets, extranets, the Internet, a Local Area Network (LAN), a telephone network, (e.g., a Public Switched Telephone Network (PSTN), private telephone networks, etc.), a cellular network, satellite networks, a personal communication system, a TV network (e.g., a cable TV system), local, regional, national or global paging networks, an email system, a wireless data network (e.g., satellite data or local wireless data networks), a wireless LAN, a wireless local loop/distribution system (e.g., LMDS, MMDS QΓ Code Division Multiple Access (CDMA) based system), a Voice Over Internet Protocol (VOIP) network or any other suitable network. The electronic communication networks 215, 235, 240 may also include a wide area network (WAN), such as, for example, the Internet, the World Wide Web (WWW) or any other similar on-line service. It will be recognized that the electronic communication networks 215, 235, 240 may have portions in common, may comprise a separate network, or may be the same network as a second electronic communication network. Additionally, the end user 230 may be required to input a security-type code or signal to enter the system 200. For example, the security-type code or signal may comprise, without limitation, a password, a personal identification number (PIN), a keycode, a subscription code or any other type of security code or signal. The electronic communication node 205 is preferably a location from which an embodiment of the method and system of the present invention may be run. The electronic communication node 205 may preferably be, without limitation, a PC, a TV, a telephone, a personal communication system, local, regional, national or global paging networks or any other suitable network. Additionally, the electronic communication node 205 should interface properly with the electronic communication device 210 and the electronic communication network. For example, if the electronic communication network is the Internet, and the electronic communication device 210 is a PC, then the electronic communication node 205 should be compatible with the PC (i.e., run off Hyper Text Markup Language (HTML)). After the request signal has been received, as illustrated in Step 105, the electronic communication node 205 then accesses a database of records 220. Preferably, the database of records 220 corresponds to a listing of parcels of real property, and may include, without limitation, a county-wide (or other jurisdiction- wide) listing of parcels located within the county, as well as any private entities which maintain a collection or database of the information recorded within the Governmental entity. For instance, the preferred embodiment may be utilized to access and analyze both State-based (i.e., County, State or other Governmental entity) or other private entities that also maintain a listing of real property-related records. Moreover, the listing of parcels may be organized in one of a number of formats. Preferably, these formats may include, for example and without limitation, a Permanent Index Number-based method (in which the end user 230 must provide that Index Number to access the data, a legal description-based method (in which the listing is according to the legal description (i.e., Lot, Block, Subdivision or Metes and Bounds description) of the parcels of real property), or a Grantor/Grantee-based method (in which the listing is organized in two ways - one according to the grantor of any transfer of the parcel, and one according to the grantee of any transfer of the parcel). The database of records contains a listing of real estate-related information. In FIG. 2, it is illustrated as reference numeral 220, and although it is shown as being remote from electronic communication node 205 (Via electronic communication network 235), it should be understood that the database 220 may alternatively be located integral with the electronic communication node 220. Preferably, the listing of real estate-related information includes a reference, or legal description, of each parcel of real property. The legal description is a means for describing the location of the parcel. It may be by Metes and Bounds, a Permanent Index Number, a reference to Lots, Blocks or Subdivisions or any other suitable sorting method. As different jurisdictions organize their files differently, it is imperative for time-conserving reasons, that the electronic communication node 205 be capable of determining the method of indexing prior to collecting data from the database of records 220. Such information may be manually transmitted to the electronic communication node 205, such as, for example, inputted into a program or database accessed by the electronic communication node 205. Alternatively, such information may be determined by the electronic communication node 205 itself, such as, for example, by scanning the database of records 220 for a particular jurisdiction. After accessing the database of records 220, the electronic communication node 205 acts to collect from the available data information relating to the parcel of real property according to the request that was inputted via the request signal. This is illustrated in FIG. 1 as Step 110. Preferably, during the collection process, the electronic communication node 205 may perform many specific types of collections. For example, the electronic communication node 205 may merely collect and display the collected information to the end user 230. Most likely, this would occur when the request signal includes a request for a legal description of the parcel, the payment status of real estate (or other) taxes, etc., or similar more simply requests. Additionally, in this step, the electronic communication node may receive real estate tax information regarding the parcel of real property. Another example of a collection type would be a more extensive collection, requiring an analysis and display of the requested data. Examples of such searches would be directed to obtaining recorder or registrar data, for use in a judgment lien search or litigation search, or for retrieving a document chain relating to the ownership of the parcel. Preferably, as is the case when determining the method of indexing, the electronic communication node 205 must then determine the local method available for data collection. For instance, the method available for data collection may be by flat files or by data/screen scraping. Having access to the flat files would mean that direct access to the tables of the County database would be available. The data/screen scraping method would be an alternative method of collecting the data when direct access to the tables within the database is unavailable. This unavailability could be for reasons of logistics or security reasons. Through this method, the needed data is collected from predetermined field locations being displayed on a monitor screen which a "snapshot" of that screen is being made. Additionally the electronic communication node 205 may then open any files within the database necessary for the collection of any data. Such files may include, without limitation, files relating to the executed date of any transfer of the parcel of real property, the recording date of any transfer of the parcel of real property, the parties involved in any transfer of the parcel of real property, the type of document involved, the amount involved and any other details that may be relevant to the transfer of the parcel of real property. If such a search is requested, then the electronic communication node 205, in Step 115, will then analyze the collected data. Ideally, this analytical process may include at least two steps. In the first step, the documents retrieved (i.e., the collected data) are searched to find deeds of conveyance. In the second step, the documents retrieved are searched for other documents to determine the status of any liens upon the parcel of real property. These "other documents" may include, without limitation, mortgages, trust deeds, assignments of mortgages, assignments of rents, releases, judgments, subordination agreements plats, easements mechanic's lien claims, etc. All of the data ported to a particular parcel of real property is collected from the earliest data of the database to ensure that no items are inadvertently misused. Once all of the items are collected, the analysis is made to the entire list of data. In Step 120, the electronic communication node 205 then begins the process of creating the analyzed data report. In this Step, the electronic communication node 205 preferably performs a number of steps. For example, the electronic communication node 205 places the analyzed documents in a predetermined order, such as, for example, an order based on the recorded date. The electronic communication node 205 then matches related documents and groups them together. An example of this matching may be documents relating to the grant of a mortgage coupled with documents related to the assignment or subsequent release of a mortgage. In such a case, the electronic communication node 205, upon finding the grant of a mortgage (or other lien), will scan the remaining documents for a release. If a release is found, the documents will be so indicated as to not include them in any final report sent to the end user 230. This is because the mortgage has been satisfied and is of no legal consequence at this point. If, however, a release has not been found, the electronic communication will indicate which liens are still unreleased to the end user 230. At this point, the data collected and analyzed may be presented to an operator. The operator has the ability to review and manually edit the information collected and analyzed. Additionally, at this point, the operator may be able to add additional information prior to the delivery to the end user 230. This may occur if a more structured format is requested by the end user 230. For example, the end user 230, being a title company, may request other information, such as, building setback lines, easements, covenants and restrictions, endorsements, etc. After completing the analysis on the parcel of property requested in the request signal, the electronic communication node 205 prepares for the delivery and output of the analysis results to the end user 230. This is illustrated in Step 125 of FIG. 1. When this occurs, the electronic communication node 205 may prompt the user for additional information (other than the security code or signal referenced above). For example, it is preferable that the electronic communication node 205 may have set up subscription-based accounts in the name of the end user 230. An account database 225 may store this information. This account would preferably have been set up earlier. The purpose for such accounts would be to charge the accounts with the results to be received. It is contemplated that the end user 230 would pay per result received, although, alternatively, other pay methods may be used (e.g., per page, per time online, etc.). Additionally, it is contemplated that the end user's account would contain other information (i.e., a profile) which would be created in a parameter-based form. Such parameters may include, without limitation, name, address, phone numbers, email addresses or other contact information, type of preferred report, method of delivery, frequency of billing, etc. Preferably, these profiles would be able to be modified. Additionally, the electronic communication node 205 may also provide for an "out of the normal" temporary change to the profile (e.g., a different shipping method). Delivery of the results, after the analysis report has been formulated, would be instant, and transmitted to the end user 230 in a variety of electronic or non-electronic formats. For example, the analysis report may be part of a properly formatted data stream, ready for use in an end user's database or application. Alternatively, the analysis report may be merged into a text document and transmitted via facsimile, email or other electronic method. Although meant as only an example of the present invention, the computer source code referenced herein as Appendix A illustrates a preferred embodiment of the present invention of a method and system for outputting an analyzed data report, made in accordance with the present invention. It should be appreciated that the embodiments described above are to be considered in all respects only illustrative and not restrictive. The scope of the invention is indicated by the following claims rather than by the foregoing description. All changes that come within the meaning and range of equivalents are to be embraced within their scope. ' * * ORDERDOCUMENTS ********************************************** '* Purpose This sub routine contains the "intelligence" that '* converts basic Property information into a common, logical, '* storage format. Analysis, matching, and ordering is applied 1 * to the property data to organize and store the "property chain" '* in the easiest sequence to understand. Private Sub OrderDocuments (oPm As WjFtPin, rErrr&, rErrMsg$) Dim sTemp As String Dim sPin As String Dim sDocNumber As String Dim sPπorDoc As String Dim tRecordedDate As String Dim tDocu entNum As String Dim iDocIndex As Integer Dim iStart As Integer Dim iMortCount As Integer Dim lPriorCount As Integer Dim iMort As Integer Dim iTemp As Integer Dim dDocSortO As String Dim sDocSortO As String Dim iDocSortO As Integer Dim dPπorSortO As String Dim sPriorSortt) As String Dim lPriorSortO As Integer Dim l As Integer Dim j As Integer Dim As Integer Dim t As Integer Dim lPipe As Integer Dim lOrder As Integer Dim b oop As Boolean Dim bFound ard As Boolean Dim bFoundMort As Boolean Dim bDocMoved As Boolean Dim bPπorDocMatch As Boolean Dim iNoMatch As Integer Dim iMisc As Integer Dim oDocument As W] FtDocument Dim InclDocuments As W 3 FtDocuments Dim ExclDocuments As W] FtDocuments Dim TempDocuments As W 3 FtDocuments Dim NoMatchDocuments As W] FtDocuments Dim MiscDocuments As W 3 FtDocuments On Error GoTo OrderDocuments_Error 'Arrange the Document List according to document chain '"matching" rules. 'Check to see if Document records exist If oPm. Documents Count > 0 Then Set InclDocuments = New W 3 FtDocuments Set ExclDocuments = New W 3 FtDocuments Set TempDocuments = New WjFtDocuments > ** * * * * * ***** * * * * * ****** * * ** ***** * * * * ** * * * * ** * * * * * * * * * * * 'Step #1: If the type "WARD" WARRANTY DEED exists, 'put it into the 1st slot of the temp Documents tRecordedDate = "1 2 :00:00 AM" For l = 1 To oPin.Documents. Count If Trim (oPin.Documents (l) .TypeV) = "DEED" Or _ TrimloPm. Documents (l) .TypeV) = "WARD" Or _ Tπm(oPιn. Documents (l) .TypeV) = "DEIT" Or _ Trιm(oPιn. Documents d) .TypeV) = "TEED" Or _ Trim (oPin.Documents d) .TypeV) = "QCD" Or _ Trim (oPin.Documents (i) .TypeV) = "SPWD" Then If CDate (oPin.Documents d) .RecordedDate) > CDate (tRecordedDate) Then tRecordedDate = oPin.Documents d) .RecordedDate tDocumentNum = oPin.Documents (i) .DocumentNum iDocIndex = l End If End If Next l If tRecordedDate <> "1 :00:00 AM" Then ' Put the Warranty Deed into the 1st slot 'of the temporary Document collection InclDocuments .AddDoc oPin.Documents (iDocIndex) , tDocumentNum & "_" 'Mark the Document as used oPin.Documents (iDocIndex) .Order = "Y" End If ******************************************************* Step # 2 : A - Find for any "MORT" or "MAMT" or "TRUD" or "MORTG" - Dupage that do NOT have a RELS RELEASE document or "RLSE" - Dupage B - Find any "ASSG" ASSIGNMENT documents that match or "A M" - DuPage the found "MORT" C - Find any "SBOR" SUBORDINATION documents that or "SUBRD OF" - Dupage match the found "MORT" document. ******************************************************* For l = 1 To oPin.Documents .Count 'If the document is a Mortgage look for any 'associated documents using the PπorDocs field If Trιm(oPιn. Documents d) .TypeV) = "MORT" Or _ Trim (oPin.Documents (l) .TypeV) = "MAMT" Or _ Tnm(oPιn. Documents d) .TypeV) = "TRUD" Or _ TnmfoPin Documents d) .TypeV) = "MORTG" Then 'Clear temp Document collection and set counter 'to 1 for all matching documents for current MORT Set TempDocuments = New WjFtDocuments 'Store the MORT document temporarily TempDocuments .AddDoc oPin.Documents d) , oPin.Documents d) .DocumentNum & 'Mark the master oPm . Document as being used oPin.Documents (l) .Order = "Y" ' Look for documents matching the MORT For 3 = 1 To oPin.Documents. Count 'If the MORT, MAMT, or TRUD document number matches the ' current prior doc number in the loop and the 'document hasn't been used yet, then try to match it iStart = 1 lPipe = InStr (iStart, oPin.Documents ( 3 ). PriorDocsFormat, "|") While lPipe 0 'Get the Doc number from the Prior Doc formatted property sPriorDoc = Mιd(oPιn. Documents ( 3 ) PriorDocsFormat, iStart, lPipe iStart) If oPin.Documents d) .DocumentNum = sPriorDoc And _ oPin.Documents (3 ) Order < > "Y" Then 'If the matching PπorDoc is another 'MORT, MAMT, or TRUD which is a rare occurance, 1 then skip it and do not match If Trim (oPin. Documents (3) .TypeV) = "MORT" Or _ Tnm(oPm. Documents (3 ) TypeV) = "MAMT" Or _ Trιm(oPιn. Documents (]) .TypeV) = "TRUD" Or _ Tπm(oPιn. Documents (]) .TypeV) = "MORTG" Then 'Else, match up the current document to the 'current MORT, MAMT, or TRUD Else ' If the matching document is a release then 'all matching documents for the MORT 'go into the ExclDocument collection If Tnm(oPm. Documents (3 ) TypeV) = "RELS" Or _ Trιm(oPιn Documents (]) TypeV) = "DISC" Or _ Trιm(oPιn. Documents (3 ) .TypeV) = "RLSE" Then 'Mark the MORTGAGE and the RELEASE to be excluded oPin Documents d) .Order = "E" oPin.Documents (]) .Order = "E" Else 'Mark the RELEASE to be included 'The MORT is defaulted to "I" oPin.Documents ( ) Order = "I" End If End If End If 'Get next priorDoc number iStart = lPipe + 1 If iStart < Len(oPιn. Documents (3) .PπorDocsFormat) Then lPipe = InStr (iStart, oPin.Documents ( 3 ) .PriorDocsFormat, "|") Else lPipe = 0 End If Wend Next 3 'Move the MORTGAGE into the Excluded or Included collection If oPin Documents (l) .Order = "E" Then ExclDocuments. AddDoc oPin.Documents (l) , oPin.Documents (l) .DocumentNum Else InclDocuments .AddDoc oPin.Documents (l) , oPin.Documents d) .DocumentNum End If 'Mark the MORTGAGE as being used oPin.Documents (l) .Order = "Y" End If Next l 'Move the matching documents into either the ' Incl or Excl document collection For 3 = 1 To oPin.Documents .Count If oPin.Documents (3) Order = "E" Then ExclDocuments .AddDoc oPin.Documents (3 ) , oPin.Documents (3 ) DocumentNum & 'Mark the matched document as being used oPin Documents ( ) .Order = "Y" Elself oPin.Documents (3 ) .Order = "I" Then InclDocuments. AddDoc oPin Documents (3 ) , oPm Documents (3) DocumentNum & 'Mark the matched document as being used oPin Documents (3 ) .Order = "Y" End If Next 3 ******************************************************* Step # 3 : A - Find any unmatched "RELS", "SBOR", or "ASSG" or "RLSE" - Dupage documents and put them in the nomatch documents collection. B - Find any miscellaneous documents and put them in the misc documents collection ******************************************************* Clear temp Document collection and set counter to 1 for all matching documents for current MORT Set NoMatchDocuments = New W3FtDocuments Set MiscDocuments = New W3FtDocuments 'Initialize counters for Incl and Excl collections iNoMatch = 1 lMisc = 1 For 1 = 1 To oPin.Documents Count ' If the document has NOT already been used If Trιm(oPm. Documents (1) .Order) <> "Y" Then 'If the following document types do not have ' a match then put them in the no match group If (Trim (oPin.Documents (1) .TypeV) = "RELS") Or (Trιm(oPm. Documents (1) .TypeV) = "DISC") Or (Trim (oPin.Documents (1) .TypeV) = "ASSG") Or _ (Trιm(oPιn. Documents (1) .TypeV) = "ARENT") Or (Trim (oPin.Documents (1) .TypeV) = "MODF") Or _ (Trim (oPin.Documents (1) .TypeV) = "SBOR") Or _ (Trim (oPin.Documents (1) .TypeV) = "RLSE") Or _ (Trim (oPin.Documents (1) .TypeV) = "PTR") Or _ (Trim (oPin.Documents (1) .TypeV) = "PT R") Or _ (Trim (oPin.Documents (1) .TypeV) = "PT REL") Or (Trim (oPin.Documents (1) .TypeV) = "A M") Or (Trim (oPin.Documents (1) TypeV) = "MODIF AG Or _ (Trim (oPin.Documents (1) TypeV) = "SUBRD OF ') Then 'Store the document temporarily NoMatchDocuments.AddDoc oPin Documents (1) , oPin.Documents (1) .DocumentNum & "_" iNoMatch = iNoMatch + 1 Else 'Store the document temporarily MiscDocuments.AddDoc oPin.Documents (1) , oPin.Documents (1) .DocumentNum lMisc lMisc + 1 End If End If Next 1 'Step #4. ' A - Clear the TempDocuments collection and fill it ' in the following order- - Incl documents - NoMatch documents - Excl documents - Misc documents B - Fill the Document list grid with the final ordered document list ******************************************************* Clear the temp Document collection and then fill it with the other temporary collections Set TempDocuments = New W3FtDocuments lOrder = 1 'Incl If InclDocuments Count > 0 Then If UCase (Trim (InclDocuments (1) TypeV)) = "DEED" Or _ UCase (Trim (InclDocuments (1) TypeV)) = "WARD" Or _ UCase (Trim (InclDocuments (1) TypeV)) = "DEIT" Or _ UCase (Trim (InclDocuments (1) TypeV)) = "TEED" Or _ UCase (Trim (InclDocuments (1) TypeV)) = "QCD" Or _ UCase (Trim (InclDocuments (1) TypeV)) = "SPWD" Then ' Include the last deed of record InclDocuments (1) Includelt vbChecked InclDocuments (1) Order = Trιm(Str (lOrder) ) lOrder = lOrder + 1 TempDocuments AddDoc InclDocuments (1) , InclDocuments (1) DocumentNum & End If 'Get all MORT documents and sort into temp array iMortCount = 0 For l = 1 To InclDocuments Count If UCase (Trim (InclDocuments (i) TypeV)) = "MORT" Or _ UCase (Trim (InclDocuments (l) TypeV)) = "MAMT" Or _ UCase (Tri (InclDocuments (l) TypeV)) = "TRUD" Or _ UCase (Trιm(InclDocuments (l) TypeV)) = "MORTG" Then iMortCount = iMortCount + 1 ReDim Preserve dDocSor (iMortCount) ReDim Preserve sDocSor (iMortCount) ReDim Preserve iDocSort (iMortCount) dDocSort (iMortCount) = InclDocuments d) RecordedDate sDocSort (iMortCount) = InclDocuments (l) DocumentNum iDocSort (iMortCount) = l End If Next l ' Sort the MORT documents by date in ascending order For l = 1 To iMortCount For = l + 1 To iMortCount If CDate (dDocSor (3 ) ) < CDate (dDocSort (1) ) Then ' Swap the dates sTemp = dDocSort (1) dDocSort (1) = dDocSort (3) dDocSort (3) = sTemp ' Swap the doc numbers sTemp = sDocSortd) sDocSort(ι) = sDocSort (3) sDocSort (3) = sTemp ' Swap the index iTemp = ιDocSort(ι) ιDocSort(ι) = ιDocSort<3) ιDocSort(3) = iTemp 'If the Recorded Date is the same then 1 sort the documents by Document Number ' in ascending order Elself CDate (dDocSort (3 ) ) = CDate (dDocSort (1) ) Then 'If CLng(sDocSort (3 ) ) < CLng (sDocSort (1) ) Then If sDocSort(3) < sDocSort(ι) Then ' Swap the dates sTemp = dDocSort (1) dDocSort (1) = dDocSort (3) dDocSort (3) = sTemp ' Swap the doc numbers sTemp = sDocSort(ι) SDocSort ( 1 ) = sDocSort ( 3 ) sDocSort (3) = sTemp ' Swap the index iTemp = ιDocSort(ι) iDocSort ( 1 ) = iDocSort ( 3 ) ιDocSort(3) = iTemp End If End If Next 3 Next 1 'Loop through the sorted MORT documents 'and sort their related PRIORDOCS by ascending 'order also, then put the MORT and any related 'documents into the "final" TempDocuments collection For iMort = 1 To iMortCount lPriorCount = 0 ReDim dPriorSort (lPriorCount) ReDim sP iorSort (lPriorCount) ReDim lPriorSort (lPriorCount) For 3 = 1 To InclDocuments Count 'Look for matching priordocs except for 'matches that are a MORT, MAMT, or TRUD If sDocSort (iMort) = Trim (InclDocuments (3 ) PπorDocsFormat) And Trim (InclDocuments (3 ) TypeV) 0 "MORT" And _ Trim (InclDocuments (3 ) TypeV) <> "MAMT" And _ Trim (InclDocuments (3) TypeV) 0 "TRUD" And _ Trim (InclDocuments (3) TypeV) <> "MORTG" Then lPriorCount = lPriorCount + 1 ReDim Preserve dPriorSort (lPriorCount) ReDim Preserve sPriorSort (lPriorCount) ReDim Preserve lPriorSort (lPriorCount) dPriorSor (lPriorCount) = InclDocuments (3 ) RecordedDate sPriorSor (lPriorCount) = InclDocuments (3 ) DocumentNum lPriorSort (lPriorCount) = 3 End If Next 3 'Sort the MORT documents by date in ascending order For 1 = 1 To lPriorCount For 3 = 1 + 1 To lPriorCount If CDate (dPriorSort (3 ) ) < CDate (dPriorSort (1) ) Then 1 Swap the dates sTemp = dPriorSort (1) dPriorSort ( 1 ) = dPriorSort (3 ) dPriorSort (3 ) = sTemp 'Swap the doc numbers sTemp = sPriorSort (1) sPriorSort (1) = sPriorSort (3 ) sPriorSort (3) = sTemp ' Swap the index iTemp = lPriorSort (1) lPriorSort ( 1 ) = lPriorSort ( ) lPriorSort (3 ) = iTemp 'If the Recorded Date is the same then ' sort the documents by Document Number ' in ascending order Elself CDate (dPriorSort (3 ) ) = CDate (dPriorSort (1) ) Then 'If CLng (sPriorSort (3 ) ) < CLng (sPriorSort (1) ) Then 'TAS. CHECK HERE If sPriorSort (3) < sPriorSort (1) Then ' Swap the dates sTemp = dPriorSort (1) dPriorSort (1) = dPriorSort (3 ) dPriorSort ( ) = sTemp 1 Swap the doc numbers sTemp = sPriorSort (1) sPriorSort (1) = sPriorSort (3 ) sPriorSort (3 ) = sTemp ' Swap the index iTemp = lPriorSort (1) lPriorSor (1) = lPriorSort (3 ) lPriorSort (3 ) = iTemp End If End If Next 3 Next 1 'Add MORT document to "final" temp array InclDocuments (iDocSort (iMort) ) Includelt vbChecked InclDocuments (iDocSort (iMort) ) .Order = Trιm(Str (lOrder) ) lOrder = lOrder + 1 TempDocuments. AddDoc InclDocuments (iDocSor (iMort) ) , sDocSort (iMort) & 'Add RELATED documents for MORT to "final" temp array For k = 1 To lPriorCount InclDocuments dPriorSort (k) ) Includelt vbChecked InclDocuments (lPriorSor (k) ) .Order = Trιm(Str (lOrder) ) lOrder = lOrder + 1 TempDocuments .AddDoc InclDocuments dPriorSort (k) ) , sPriorSor (k) & Next k Next iMort End If ' NoMatch If NoMatchDocuments. Count > 0 Then For 1 = 1 To NoMatchDocuments. Count NoMatchDocuments (1) .Order = Trιm(Str (lOrder) ) TempDocuments .AddDoc NoMatchDocuments (1) , NoMatchDocuments (1) .DocumentNum lOrder = lOrder + 1 Next 1 End If 'Excl If ExclDocuments. Count > 0 Then For 1 = 1 To ExclDocuments. Count ExclDocuments (1) .Order = Trιm(Str (lOrder) ) TempDocuments AddDoc ExclDocuments (1) , ExclDocuments (1) .DocumentNum & "_" lOrder = lOrder + 1 Next 1 End If If MiscDocuments. Count > 0 Then For 1 = 1 To MiscDocuments. Count MiscDocuments (1) .Order = Tπm(Str (lOrder) ) TempDocuments.AddDoc MiscDocuments (1) , MiscDocuments (1) DocumentNum & "_" lOrder = lOrder + 1 Next 1 End If 'Clear all Document ob3ects from the 'current PIN / Document collection to make 'room for the new sorted collection. oPin . Documents . Clear 'Overwrite the current PIN / Document set 'with the new temporary document list order If TempDocuments .Count > 0 Then For i = 1 To TempDocuments. Count oPin.Documents .AddDoc TempDocuments d) , TempDocuments d) .DocumentNum & Next l End If End If OrderDocuments_Exιt : OrderDocuments_Error : rErrr = Err.Number rErrMsg = "OrderDocuments : " & Err .Description Resume OrderDocuments_Exιt End Sub Option Explicit Deflnt A-Z Public ghExtraS Public ghExtral& Public gbHost_Avaιlable% Public gbJobMsg% Public gbCaptureScreen% Public gTιmeout% Public gTax_Installment$ Public gTax_Year$ Public giCookBackTaxes As Integer Public giDupageBackTaxes As Integer Public gOrderNum$ Public gE fectιve_Date$ Public gAPIN_UserId$ Public gAPIN_Password$ Public gIPAM_UserId$ Public gIPAM_Password$ Public gCook_BackTaxes_UserId$ Public gCook_BackTaxes_Password$ Const PROPERTY_SEARCH = 1 Const DOC_SEARCH = 2 Const TAX_SEARCH = 3 Const APIN_MENU = 4 Const IPAM_MENU = 5 Const LEGAL_DETAIL_SCREEN = 1 Const PROPERTY_SEARCH_SCREEN = 2 Const RECORDER_DEED_MENU_SCREEN = 3 Const DOC_DETAIL_SCREEN = 4 Const DOC_SEARCH_SCREEN = 5 Const TAX_DETAIL_SCREEN = 6 Const TAX_SEARCH_SCREEN = 7 Const UNKNOWN_SCREEN = 8 Const PROCESSED$ = "Y" Const FAILED$ = "F" Dim mbOnly_l_Document As Boolean Dim mbFound_Townshιp_Range As Boolean Dim msTownship As String Dim msRange As String 1 ** JOBAPPMAIN ************************************************** '* Purpose: This is the main loop for the Property data retrieval '* program that analyzes, matches, and orders property record '* data (from different system) into a common storage format. Sub JobAppMam(rErrr&, rErrMsg$) Dim ι%, Loop_Ctr%, Search_Ctr%, iCounty Dim Search%(l To 3 ) Dim HostSessιonl$ Dim sCounty As String Dim oOrder As New W3FtOrder Dim oOrders As New W3FtOrders Dim oSysVariable As W3CoSysVaπable On Error GoTo JobAppMaιn_Error i** SET JOB VARIABLES *************************************** '* Set variables that will be used to process the 30b * If rErrr = 0 Then Call JobMsgC'Set 30b variables", False, True) If WJGetPπvateProfιleStrιng$ ( "WJA" , "HostAvailable " , "Y" , gsINI_Fιle$ ) = "Y" Then gbHost_Avaιlable% = True End If gTιmeout% = CInt (WJGetPrivateProfιleStrιng$ ( "WJA" , "HostTimeout" , " 4 5", gsINI_Fιle$) ) If WJGetPrιvateProfιleStrιng$("WJA", "HostJobMsg" , "N" , gsINI_Fιle$) = "Y" Then gbJobMsg% = True End If If WJGetPrivateProfιleStrιng$( "WJA", "CaptureScreen" , "Y", gsINI_Fιle$) = "Y" Then gbCaptureScreen% = True End If 'gTax_Installment$ = WJGetPrivateProf leStrmg$ (gsAppName$, "Taxlnstallment " "E", gsINI_Fιle$) 'gTax_Year$ = Format$ (DateAddt "y" , -1, Date$) , "yyyy") 'Get Tax Year from System Variable because it needs 'to be changed manually in the FALL (September) of each year 'gTax_Year$ = WJGetPrivateProfιleStnng$ (gsAppName$, "TaxYear", " 2 000", gsINI_Fιle$) ' Set Current Tax Year for Cook County Set oSysVaπable = New W3CoSysVarιable oSysVaπable.Load "COOKTAXYR" gTax_Year$ = oSysVariable Value 'Set Tax Status (E/F) for Cook County Set oSysVariable = New W3CoSysVarιable oSysVariable.Load "COOKTAXEF" gTax_Installment$ = oSysVariable Value ' Set number of years for Cook back taxes Set oSysVariable = New W CoSysVarιable oSysVariable.Load "COOKTAX" giCookBackTaxes = Val (oSysVariable Value) ' Set number of years for DuPage back taxes Set oSysVariable = New W3CoSysVarιable oSysVariable.Load "DUPAGETAX" giDupageBackTaxes = Val (oSysVariable. Value) End If i** CONNECT TO HOST ***************************************** '* Establish a connection to the mainframe * If gbHost_Avaιlable% And rErrr = 0 Then Call JobMsg( "Connect to host", False, True) ghExtral = frmJobStatus . hWnd HostSessιonl$ = WJGetPrivateProfιleStrιng$ ("WJA" , "HostSessionl" , "A", gsINI_Fιle$) If ATMConnectSession (ghExtral, HostSessιonl$) <> ATM_SUCCESS Then rErrr = 100 32 rErrMsg$ = "Unable to get host connection." End If End If i** RETRIEVE ORDERS ***************************************** '* Retrieve the orders to process by "County" * If rErrr = 0 Then For lCounty = 1 To 2 If lCounty = 1 Then sCounty = "COOK" Elself lCounty = 2 Then sCounty = "DUPAGE" End If Call JobMsg ( "Retrieving " & sCounty & " county orders from database", False, True) 'Select Submitting Orders from the Order table by County oOrders LoadFromJP "S", sCounty If oOrders Count <> 0 Then If sCounty = "COOK" Then '** LOOK FOR THE APIN SYSTEM *********************************** ' * Log into the APIN system to perform the tax search * If rErrr = 0 Then Call Logιn_APIN(rErrr, rErrMsg) End If i ** RETRIEVE TAX INFO *************************************** ' * Retrieve the tax info from the host * If rErrr = 0 Then Loop_Ctr% = 1 Do While Loop_Ctr% <= oOrders Count And rErrr = 0 ' Store OrderNum in global variable for debug gOrderNum = oOrders (Loop_Ctr%) CaseNumber Call JobMsg ( "Retrieving tax information for order " & oOrders (Loop_Ctr%) CaseNumber, True, False) Call Retπeve_Cook_Tax_Info (oOrders (Loop_Ctr%) , rErrr, rErrMsg$) Loop_Ctr% = Loop_Ctr% + 1 Loop End If '** SWITCH TO APIN BACK TAXES SYSTEM ******************************** ' * Log into the APIN Back Taxes System 'Check to see if we should get 'Back Taxes first If giCookBackTaxes > 0 Then If rErrr = 0 Then Call Logιn_Cook_BackTaxes (rErrr, rErrMsg) End If '** RETRIEVE BACK TAX INFO *************************************** ' * Retrieve the tax info from the host * If rErrr = 0 Then Loop_Ctr% = 1 Do While Loop_Ctr% <= oOrders Count And rErrr = 0 ' Store OrderNum in global variable or debug gOrderNum = oOrders (Loop_Ctr%) CaseNumber Call JobMsg ("Retrieving Cook BackTax information for order " & oOrders (Loop_Ctr%) CaseNumber, True, False) Call Retπeve_Cook_BackTax_Info (oOrders (Loop_Ctr%) , rErrr, rErrMsg$) Loop_Ctr% = Loop_Ctr% + 1 Loop End If End If '** LOG INTO THE IPAM SYSTEM ******************************** '* Log into the IPAM system to doc and legal search * If rErrr = 0 Then Call Goto_IPA (rErrr, rErrMsg) End If '** RETRIEVE LEGAL DESCRIPTION AND DOCS ********************* '* Retrieve all legal descriptions and documents from the host If rErrr = 0 Then 'Get all Legal descriptions first Loop_Ctr% = 1 Do While Loop_Ctr% <= oOrders Count And rErrr = 0 ' Store OrderNum in global variable for debug gOrderNum = oOrders (Loop_Ctr%) CaseNumber Call JobMsg! "Retrieving legal and document chain for order " & oOrders (Loop_Ctr%) CaseNumber, True, False) Call Retrιeve_Property_Info (oOrders (Loop_Ctr%) , rErrr, rErrMsg$, 1) Loop_Ctr% = Loop_Ctr% + 1 Loop 'Get all Documents information in 2nd loop Loop_Ctr% = 1 Do While Loop_Ctr% <= oOrders Count And rErrr = 0 ' Store OrderNum in global variable for debug gOrderNum = oOrders (Loop_Ctr%) CaseNumber Call JobMsg ("Retrieving legal and document chain for order " & oOrders (Loop_Ctr%) CaseNumber, True, False) Call Retπeve_Property_Info (oOrders (Loop_Ctr%) , rErrr, rErrMsg$, 2 ) Loop_Ctr% = Loop_Ctr% + 1 Loop End If i ** UPDATE STAGE ******************************************** ' * Update the status of the order is in * If rErrr = 0 Then Call JobMsg ("Updating order status", True, True) Call oOrders Update_Status (gEffectιve_Date, rErrr, rErrMsg) End If i** GOTO PIN SEARCH MENU ******************************************** ' * Go back to the PIN search menu so we can enter the next PIN * 'TAS 06/16/99 - Re-position to Tax for next 30b If rErrr = 0 Then Call Logoff_IPAM (rErrr, rErrMsg) End If Elself sCounty = "DUPAGE" Then '** LOG INTO THE DUPAGE SYSTEM ****************************** ' * Log into the APIN system to perform the tax search * If rErrr = 0 Then Call Logιn_DUPAGE (rErrr, rErrMsg) End If '** RETRIEVE TAX INFO *************************************** ' * Retrieve the tax info from the host * If rErrr = 0 Then Loop_Ctr% = 1 Do While Loop_Ctr% <= oOrders . Count And rErrr = 0 1 Store OrderNum m global variable for debug gOrderNum = oOrders (Loop_Ctr%) .CaseNumber Call JobMsg ( "Retrieving tax information for order " & oOrders (Loop_Ctr%) CaseNumber, True, False) Call Retπeve_DuPage_Tax_Info (oOrders (Loop_Ctr%) , rErrr, rErrMsg$) Loop_Ctr% = Loop_Ctr% + 1 Loop End If '** LOGOFF of Tax and move to Legal ************************* ' * Logoff of Tax (DSPC) and login to Legal (DSPA) If rErrr = 0 Then Call Logoff_DSPC(rErrr, rErrMsg) End If If rErrr = 0 Then Call Logm_DSPA(rErrr, rErrMsg) End If '** RETRIEVE LEGAL DESCRIPTION AND DOCS ********************* ' * Retrieve all legal and document info from the host If rErrr = 0 Then 'Get all Legal descriptions first Loop_Ctr% = 1 Do While Loop_Ctr% <= oOrders . Count And rErrr = 0 ' Store OrderNum in global variable for debug gOrderNum = oOrders (Loop_Ctr%) .CaseNumber Call JobMsg ("Retrieving legal and document chain for order & oOrders (Loop_Ctr%) .CaseNumber, True, False) Call Retrιeve_Property_Info (oOrders (Loop_Ctr%) , rErrr, rErrMsg$, 1) Loop_Ctr% = Loop_Ctr% + 1 Loop '** LOGOFF of Legal and move to Documents *************** '* Logoff of Legal (DSPC) and login to Documents (RODI) If rErrr = 0 Then Call Logoff_DSPA (rErrr, rErrMsg) End If If rErrr = 0 Then Call Logιn_RODI (rErrr, rErrMsg) End If 'Get all Documents information in 2nd loop Loop_Ctr% = 1 Do While Loop_Ctr% <= oOrders. Count And rErrr = 0 ' Store OrderNum in global variable for debug gOrderNum = oOrders (Loop_Ctr%) .CaseNumber Call JobMsg ( "Retrieving legal and document chain for order & oOrders (Loop_Ctr%) .CaseNumber, True, False) Call Retrιeve_Property_Info (oOrders (Loop_Ctr%) , rErrr, rErrMsg$, 2) Loop_Ctr% = Loop_Ctr% + 1 Loop End If i ** UPDATE STAGE ******************************************** 1 * Update the status of the order is in If rErrr = 0 Then Call JobMsg ("Updating order status", True, True) Call oOrders Update_Status (gEffect ve_Date, rErrr, rErrMsg) End If '** GOTO PIN SEARCH MENU ******************************************** ' * Go back to the PIN search menu so we can enter the next PIN ********************************************************************* 'TAS 06/16/99 - Re-position to Main menu for next 30b If rErrr = 0 Then Call Logoff_DUPAGE (rErrr, rErrMsg) End If End If End If Next iCounty End If 1** DISCONNECT HOST ********************************************* ' * Disconnect from the mainframe * If gbHost_Avaιlable% Then Call JobMsg ( "Disconnecting host session", False, True) If ATMDisconnectSession (ghExtral) <> ATM_SUCCESS Then rErrrSe = 100 33 rErrMsg$ = "Unable to disconnect host session." End If End If JobAppMaιn_Exιt : JobAppMam_Error : rErrr = Err.Number rErrMsg = "JobAppMain: " & Err. Description Resume JobAppMaιn_Exιt End Sub 1** RETRIEVE PROPERTY INFO ************************************** '* Purpose: This sub routine is called from the main loop to '* get property information for each Property Identification Number (PIN) '* that was specified in the property retrieval record. '* The "Retrιeve_Documents (oOrder, oPin, rErrr&, rErrMsg$) " routine '* is called for each PIN#. Sub Retπeve_Property_Info(oOrder As W 3 FtOrder, rErrrt, rErrMsg$, rType%) Dim Loop_Ctr% Dim oPin As W3FtPιn On Error G0T0 Retπeve_Property_Info_Error Loop_Ctr% = 1 'LMg added rType so that the first time this routine is called it will get the ALL legal, and the second time ALL the Documents If rType = 1 Then '** RETRIEVE LEGAL DESC ******************************** ' * Retrieve legal description for each pin * Do While Loop_Ctr% <= oOrder. Pins .Count And rErrr = 0 Set oPm = oOrder. Pins (Loop_Ctr) 'Initialize bInvalιd_Pιn to False for each Pin oPm.bInvalιd_Pιn = False If oPιn.bInvalιd_Pιn = False And rErrr = 0 Then Call Retrιeve_Legal_Desc (oOrder, oPin, rErrrk, rErrMsg$) End If Loop_Ctr = Loop_Ctr + 1 Loop Else '** RETRIEVE DOCUMENT CHAIN ***************************** ' * Retrieve the document chain or each pin * Do While Loop_Ctr% <= oOrder. Pins Count And rErrr = 0 Set oPin = oOrder Pins (Loop_Ctr) 'Initialize bInvalιd_Pιn to False for each Pin oPm bInvalιd_Pm = False If oPm.bInvalid_Pm = False And rErrr = 0 Then Call Retrιeve_Documents (oOrder, oPin, rErrr&, rErrMsg$) End If Loop_Ctr = Loop_Ctr + 1 Loop End If Retrιeve_Property_Info_Exιt : Exit Sub Retπeve_Property_Info_Error : rErrr = Err.Number rErrMsg = "Retrιeve_Property_Info- " & Err .Description Resume Retrιeve_Property_Info_Exιt End Sub '** GET DOCUMENT INFO COOK*************************************** '* Purpose: This sub routine retrieves property for a specific '* county (Cook), from a specific set of host screens. ' * Each data item that is retrieved from the host is stored '* temporarily into a common "oDocu ent" ob ect prior to the ' * analysis phase of the program Sub Get_Document_Info_COOK(roPιn As W3FtPιn, rErrr&, rErrMsg$) Dim Nbr_Pages%, ι%, 3% Dim Temp_Nbr_Pages$, Page_No$ Dim RetStr$ Dim oDocument As W3 FtDocument On Error G0T0 Get_Document_Info_COOK_Error 1** VERIFY HOST LOCATION **************************************** ' * Verify that the document was found * If rErrr& = 0 Then If ExtraWaιt&(ghExtral&, 4 , 2 , gTιmeout%, "P I N S E A R C H R E S U L T S ") 0 ATM_SUCCESS Then rErrr& = 10005 rErrMsg$ = "Unable to access the property information screen." End If End If 1 ** RETRIEVE NBR DOCUMENTS ****************************************** ' * Retrieve the number of document pages * If rErrr. = 0 Then If ExtraGet&(ghExtral&, 5, 77, 3 , Temp_Nbr_Pages$) <> ATM_SUCCESS Then rErrr& = 10006 rErrMsg$ = "Unable to retrieve the number of document pages " Else Nbr_Pages% = CInt (Temp_Nbr_Pages$) End If End If ι% = 1 Do While ι% <= Nbr_Pages% And rErrr& = 0 i** GET PROPERTY INFO ******************************************* ' * Scrape the property info from the host * If rErrr& = 0 Then If ExtraGetScr& (ghExtral, RetStr$) <> ATM_SUCCESS Then rErrr& = 10007 rErrMsg$ = "Unable to retrieve the property information from the host." End If 'Print the screen to file for debug & comparison testing Call CaptureScreenToFile ("" , "*** Property *** ", True, gOrderNum$) For 3% = 1 To 24 Call CaptureScreenToFile ("" , ExtraGetScrData$ (RetStr$, 3%, 1, 80), True, gOrderNum$) Next End If 1 ** GET DATA **************************************************** ' * Scrape the property info f om the host * If rErrr& = 0 Then Page_No$ = ExtraGetScrData$ (RetStr$, 5, 70, 4) Set oDocument = roPin. Documents.AddOb3 ect (roPin. CaseNumber, roPm. PinNumber, Page_No$) oDocument .Amount = ExtraGetScrData$ (RetStr$, 12, 10, 16) 'CODECHANGE TAS 0 3 /19/01 'Document numbers changed length from 8 to 10 'on the host screen ' oDocument . DocumentNum = ExtraGetScrData$ (RetStr$ , 8, 10, 8) oDocument DocumentNum = ExtraGetScrData$ (RetStr$, 8, 10, 10) ' ENDCODECHANGE TAS 0 3 /19/01 oDocument .Grantorl = ExtraGetScrData$ (RetStr$, 14, 9, 40) oDocument .Grantor2 = ExtraGetScrData$ (RetStr$, 15, 9, 40) oDocument . Grantor 3 = ExtraGetScrData$ (RetStr$, 16, 9, 40) oDocument . Grantor4 = ExtraGetScrData$ (RetStr$, 17, 9, 40) 'TAS 06/2 3 /99 - Assumption made that there are only 4 Grantors 'based upon limit of 4 Grantees ' oDocument . Grantors = ExtraGetScrData$ (RetStr$, 18, 9, 0) oDocument . Grantors = " " oDocument .Granteel = ExtraGetScrData$ (RetStr$, 19, 9 , 40 ) oDocument .Grantee2 = ExtraGetScrData$ (RetStr$, 20, 9 , 4 0 ) oDocument .Grantee 3 = ExtraGetScrData$ (RetStr$, 21, 9 , •J O ) oDocument .Grantee4 = ExtraGetScrData$ (RetStr$, 22, 9 , 4 0 ) 'TAS 06/2 3 /99 - This row has a host help message, not Grantee 5 ODocument .Grantees = ExtraGetScrData$ (RetStr$, 2 3 , 9, 40) oDocument .Granteeδ = "" oDocument . PageNum = Page_No$ oDocument . PriorDocs = ExtraGetScrData$ (RetStr$, 12, 4 4, 3 6) oDocument . RecordedDate = CDate (ExtraGetScrData$ (RetStr$, 8, 71, 10)) oDocument . ypeV = ExtraGetScrData$ (RetStr$, 8, 22, 4) oDocument .TypeDescription = ExtraGetScrData$ (RetStr$, 8, 27, 3 0) oDocument . Order = Str$(i%) End If i ** GOTO NEXT PAGE ********************************************** ' * Get the next page of documents * If i% <> Nbr_Pages% And rErrr& = 0 Then If ExtraPut&(ghExtrait, 0, 0, "@a") <> ATM_SUCCESS Then rErrr& = 1009 rErrMsg$ = "Unable to goto next page." End If End If i% = i% + 1 Loop i** GOTO PIN SEARCH MENU ******************************************** ' * Go back to the PIN search menu so we can enter the next PIN * If rErrr& = 0 Then If ExtraPut ghExtralS., 0, 0, "@ 3 ") <> ATM_SUCCESS Then rErrr& = 10010 rErrMsg$ = "Unable to enter the PIN number." End If End If '** VERIFY HOST LOCATION **************************************** ' * Verify that the document was found * If rErrr& = 0 Then If ExtraWait&(ghExtral&, 4 , 24, gTimeout%, "P I N C R O S S R E F E R E N C E") <:> ATM_SUCCESS Then rErrr& = 9999 rErrMsg$ = "Unable to exit the document screen." End If End If '** GOTO PIN SEARCH MENU ******************************************** ' * Go back to the PIN search menu so we can enter the next PIN * If rErrr& = 0 Then If ExtraPut&(ghExtral&, 0, 0, "@ 3 ") <> ATM_SUCCESS Then rErrr& = 10010 rErrMsg$ = "Unable to enter the PIN number." End If End If i** VERIFY HOST LOCATION **************************************** '* Verify that the document was found * If rErrr& = 0 Then If ExtraWait&lghExtralfc, 4 , 1 4 , gTimeout%, "P I N / L E G A L C R O S S R E F E R E N C E") <> ATM_SUCCESS Then rErrrS = 9999 rErrMsg$ = "Unable to exit the legal description screen." End If End If Get_Document_Info_COOK_Exιt : Get_Document_Info_COOK_Error : rErrr = Err. umber rErrMsg = "Get_Document_Info_COOK: " & Err .Description Resume Get_Document_Info_COOK_Exιt End Sub i ** GOTO DOCUMENT INFO COOK ************************************* '* Purpose: This sub routine navigates to the proper host screen '* to retrieve data for Cook county, by supplying a PIN number. Sub Goto_Document_Info_COOK(roPm As W3FtPιn, rErrr&, rErrMsg$) Dim Screen_Found% Dim Condo$, Retδc On Error GoTo Goto_Document_Info_COOK_Error Const PIN_SEARCH = 1 Const PIN_NOT_FOUND = 2 ' ** DETERMINE CURRENT SCREEN ************************************ ' * Determine if we are on the PIN search or legal desc screen * If rErrr& = 0 Then If WJHostWaιt2&(4, 14, 4, 24, gTιmeout%, "P I N / L E G A L C R O S S R E F E R E N C E", "P I N C R O S S R E F E R E N C E", Screen_Found% ) <> ATM_SUCCESS Then rErrrfc = 1001 3 rErrMsg$ = "Unable to access the Legal Description screen." End If End If If Screen_Found = PIN_SEARCH Then i** ENTER PIN NUMBER ******************************************** ' * ENTER Pin Number to search for * If rErrr& = 0 Then Retfc = ExtraPut&lghExtralS, 9, 8, Mιd$ (roPin. PinNumber, 1, 2)) Rett = ExtraPut&(ghExtral&, 9, 1 3 , Mιd$ (roPin. PinNumber, 4, 2)) Ret& = ExtraPut&tghExtralSe, 9, 18, Mιd$ (roPin. PinNumber, 7, 3 ) ) Ret& = ExtraPut ghExtralfc, 9, 2 4 , Mιd$ (roPin. PinNumber, 11, 3)) Ret& = ExtraPut&(ghExtral&, 9, 30, Mιd$ (roPin. inNumber, 15, 4 )) ' LMg added for condo logic Condo$ = Mιd$ (roPin. PinNumber, 15, ) 'If Len(Trιm$ (Condo$) ) > 0 Then 'TAS changed to check for a condo number that is greater than 0 If Val(Trιm$(Condo$) ) > 0 Then Ret& = ExtraPut&(ghExtral&, 9, 3 0, Condo$) Else Ret& = ExtraPut&(ghExtral&, 9, 30, "0000") End If If ExtraPut&(ghExtral&, 0, 0, "®E") <> ATM_SUCCESS Then rErrrS = 10001 rErrMsg$ = "Unable to enter the PIN number." End If End If i** VERIFY HOST LOCATION **************************************** ' * Verify that the legal desc was found * If rErr & = 0 Then If WJHostWait2&(4, 24, 23, 5, gTimeout%, "P I N C R O S S R E F E R E N C E", "SR20E PIN NOT ON RECORD", Screen_Found%) <> ATM_SUCCESS Then rErrrSc = 10013 rErrMsg$ = "Unable to access the Legal Description screen." End If End If '** CHECK PIN FOUND ********************************************* '* Determine if the PIN number was found * If rErrr& = 0 Then If Screen_Found% = PIN_NOT_FOUND Then roPin.bInvalid_Pin = True Else roPin.bInvalid_Pin = False End If End If End If i** GOTO DOCUMENT SCREEN ******************************************** ' * Goto the document screen * If roPin.bInvalid_Pin = False And rErrrSc = 0 Then If ExtraPut&(ghExtral£, 0, 0, "@4") <> ATM_SUCCESS Then rErrr. = 10015 rErrMsg$ = "Unable to goto the Pin Search Results screen." End If End If i** VERIFY HOST LOCATION **************************************** ' * Verify that we are on the pin search screen * 'If roPin.bInvalid_Pin = False And rErrrik = 0 Then ' If ExtraWaitSc(ghExtralSc, 4 , 24, gTimeout%, "P I N S E A R C H R E S U L T S") <> ATM_SUCCESS Then ' rErrrSc = 10025 ' rErrMsg$ = "Unable to access the Pin Search Results screen." End If 'End If If roPin.bInvalid_Pin = False And rErrri = 0 Then If WJHostWait2&(4, 24, 23, 5, gTimeout%, "P I N S E A R C H R E S U L T S", "C112E NO DOCUMENT IN SEARCH CRITERIA", Screen_Found%) <> ATM_SUCCESS Then rErrrSc = 10025 rErrMsg$ = "Unable to access the Pin Search screen." End If i** CHECK PIN FOUND ********************************************* ' * Determine if the PIN number was found * If rErrrSc = 0 Then If Screen_Found% = PIN_NOT_FOUND Then roPin.blnvalid Pin = True 'Return to PIN / LEGAL entry screen 'to try next PIN # if previous one 'had NO DOCUMENT IN SEARCH CRITERIA If ExtraPutS.(ghExtral&, 0, 0, "@3") <> ATM_SUCCESS Then rErrrSc = 10010 rErrMsg$ = "Unable to enter the PIN number." End If Else roPιn.bInvalιd_Pιn = False End If End If End If Goto_Document_Info_COOK_Exιt • Goto_Document_Info_COOK_Error : rErrr = Err Number rErrMsg = "Goto_Document_Info_COOK: " Sc Err .Description Resume Goto_Document_Info_COOK_Exιt End Sub '** RETRIEVE DOCUMENTS ****************************************** '* Purpose- This sub routine determines which county to retrieve ' * property information from It also controls whether or not '* the data should be saved after retrieval and sorting. An error '* may cause the data to be flagged as an "Exception". Sub Retrιeve_Documents (oOrder As W 3 FtOrder, oPin As W3FtPm, rErrrSc, rErrMsg$) Dim bProcessed% On Error GoTo Retrieve Documents Error ' ** CHECK RESTART VALUE ************************************************* ' * Check if the document were already retrieved from the host * If rErrr = 0 Then bProcessed% = oPm.RetrieveStatusFlag (eftPropertylnfo) End If '** GOTO PROPERTY SCREEN ************************************************ ' * Goto the property info host screen * If bProcessed% = False And gbHost_Avaιlable% = True And rErrr = 0 Then If UCase (Trim (oOrder. PropertyCounty) ) = "COOK" Then Call Goto_Document_Info_COOK(oPm, rErrrϋ, rErrMsg$) End If End If '** GET DOCUMENT INFO *************************************************** ' * Get the document info from the host * If bProcessed% = False And rErrr = 0 And oPιn.bInvalιd_Pιn = False Then Select Case UCase (Trim (oOrder . PropertyCounty) ) Case "COOK" Call Get_Document_Info_COOK(oPιn, rErrr, rErrMsg$) Case "DUPAGE" Call Get_Document_Info_DUPAGE(oPιn, rErrr, rErrMsg$) 'Get Details on the 2nd pass Call Get_Document_Detaιls_DUPAGE(oPιn, rErrr, rErrMsg$) End Select End If '** SAVE DOC INFO ******************************************************* ' * Save the document info to the database * If bProcessed% = False And rErrr = 0 And oPιn.bInvalιd_Pm = False Then 'Reverse Document order prior to sorting for DUPAGE ODocument . Order = str$(ι%) 'Order Documents according to Title matching criteria Call OrderDocuments (oPin, rErrr, rErrMsg) If rErrr = 0 Then ' Save Ordered document for Pin to Documents table Call oPin. Documents. InsertData (rErrr, rErrMsg) End If End If '** UPDATE PIN STATUS *************************************************** ' * Update the Pin status to successful * If bProcessed% = False And rErrr = 0 Then If oPm.bInvalιd_Pιn = False And rErrr = 0 Then 'If ONLY 1 document record existed for the PIN 'and ONLY 1 Pin exists for the Order 'set the "exception" flag If mbOnly_l_Document = True And oOrder . Pins . Count = 1 Then oPin.DocumentFlag = FAILED Else oPin.DocumentFlag = PROCESSED End If Else OPin . DocumentFlag = FAILED End If Call oPm . UpdateFlag (eftPropertyInfo, rErrr, rErrMsg) End If Retrιeve_Documents_Exι ■ Retrιeve_Documents_Error ■ rErrr = Err.Number rErrMsg = "Retπeve_Documents : " & Err .Description Resume Retrιeve_Documents_Exιt End Sub ' ** GET DOCUMENT INFO DUPAGE************************************* ' * Purpose This sub routine navigates through host screens specific '* to DuPage county and captures the property information by PIN. Sub Get_Document_Info_DUPAGE(roPιn As W3FtPιn, rErrrSc, rErrMsg$) Dim Screen_Found% Dim Condo$, Ret& Dim Nbr_Pages%, ι%, 3% Dim Temp_Nbr_Pages$, DocTotal$ Dim RetΞtr$ Dim bNoMoreRecords As Boolean Dim bLastDocumentPage As Boolean Dim sCurrentDocNum As String Dim sNextDocNum As String Dim sDocCount As String Dim sBuyerSeller As String Dim sTownRange As String Dim iDocCount As Integer Dim lGrantorCount As Integer Dim lGranteeCount As Integer Dim iRow As Integer Dim lPos As Integer Dim lFirstDocumentPage As Integer Dim oDocument As W3 FtDocument Dim TempDocuments As W FtDocuments Const PIN_SEARCH = 1 Const PIN_NOT_FOUND = 2 On Error G0T0 Get_Document_Info_DUPAGE_Error '** VERIFY HOST LOCATION ******************************************** ' * Verify that we are on the Document screen If rErrrSc = 0 Then If ExtraWaitSctghExtralSc, 2, 31, gTιmeout%, "SEARCH MENU") 0 ATM_SUCCESS Then rErrrSc = 9999 rErrMsg$ = "Unable to find Document screen - SEARCH MENU" End If End If 1** GET DOCUMENT SCREEN ********************************************* ' * Get the main Document screen for the Effective date If rErrrSc = 0 Then If ExtraGetScrSc (ghExtral, RetStr$) 0 ATM_SUCCESS Then rErrrSc = 10007 rErrMsg$ = "Unable to retrieve Document screen from host " End If End If 'Store Effective Date in module variable If rErrr. = 0 Then gEffectιve_Date = CDate (ExtraGetScrData$ (RetStr$, 2, 66, 8)) End If '** ENTER PIN NO ************************************************ ' * Enter the Pin information needed to retrieve the Document ' * information If rErrr& = 0 Then Ret& = ExtraPut&(ghExtral&, 7, 19, Mιd$ (roPin PinNumber, 1, 2)) RetSc = ExtraPutSc(ghExtral&, 7, 2 4, Mιd$(roPιn PinNumber, 4, 2 ) ) Ret& = ExtraPut&fghExtralSi, 7, 2 9, Mιd$(roPιn PinNumber, 7, 3)) RetSi = ExtraPut&(ghExtral&, 7, 35, Mιd$(roPm PinNumber, 11, 3 ) Sc " @E") End If 1** VERIFY HOST LOCATION **************************************** ' * Verify that the Legal pin number was found If rErrrSc = 0 Then If WJHostWait2&(2, 20, 3 , 2, gTιmeout%, "DOCUMENT CROSS REFERENCE", "NO DOCUMENTS FOUND FOR PARCEL", Screen_Found%) 0 ATM_SUCCESS Then rErrrSc = 10013 rErrMsg$ = "Document List screen not found OR Document records not found for key" End If End If 'Initialize Only 1 document flag mbOnly_l_Document = False '** CHECK TO SEE IF ONLY 1 DOCUMENT EXISTS for PIN ************** '* If ONLY 1 document entry exists for the PIN# '* then the "Document List" screen will not appear ' * the host system goes directly to the document details screen '* If that happens, set the Order to "Exception" status 'Check to see if neither Waιt2 condition was successful 'then perform a third wait for the document details screen If rErrrSc = 10013 Then If ExtraWait&tghExtralSc, 3, 2, gTιmeout%, "DOCUMENT NUMBER") <> ATM_SUCCESS Then rErrrSc = 10013 rErrMsg$ = "Document Details screen was not found for key" Else rErrrSc = 0 rErrMsg$ = " " 'Re- initialize screen found so the Document 'will be processed and set a flag to know ' that only 1 document was found for the PIN Screen_Found% = 1 mbOnly_l_Document = True sCurrentDocNum = " " iDocCount = 1 lGrantorCount = 1 lGranteeCount = 1 mbFound_Townshιp_Range = False '** GET PROPERTY INFO ******************************************* ' * Scrape the property info from the host * If rErrrSc = 0 Then If ExtraGetScrSc (ghExtral, RetStr$) <> ATM_SUCCESS Then rErrr. = 10007 rErrMsg$ = "Unable to retrieve the property information from the host " End If 'Print the screen to file for debug Sc comparison testing Call CaptureScreenToFile (" " , "*** Property *** ", True, gOrderNum$) For 3% = 1 To 24 Call CaptureScreenToFile ("" , ExtraGetScrData$ (RetStr$, 3%, 1, 80), True , gOrderNum$ ) Next End If sDocCount = Tnm(Str (iDocCount) ) Set oDocument = roPin Documents AddOb ect (roPin CaseNumber, roPin PinNumber, sDocCount) ' ** CREATE DOCUMENT NUMBER ************************************** 1 * Create the Document number '* "R" + 2-dιgιt year + "-" + 6-dιgιt DOC NO ***************************************************************** sCurrentDocNum = "R" Sc ExtraGetScrData$ (RetStr$, 3, 19, 2) Sc "-" Sc ExtraGetScrData$(RetStr$, 3, 22, 6) oDocument DocumentNum = sCurrentDocNum ' 1 PageNum for each unique Document number oDocument PageNum = sDocCount oDocument RecordedDate = CDate (ExtraGetScrData$ (RetStr$, 3, 65, 2) Si "-" Sc ExtraGetScrData$(RetStr$, 3, 67, 2) & "-" 6 ExtraGetScrData$ (RetStr$, 3, 69, 2)) 'Look for pattern "Rxx-Oxxxxx" and add a zeros after the 'dash if necessary to make a "valid" PπorDoc Number oDocument PπorDocs = ExtraGetScrData$ (RetStr$ , 9, 15, 65) oDocument PriorDocsFormat = DuPagePriorDocs (ExtraGetScrData$ (RetStr$, 9, 15, 65)) 'Doc type "MORTG" is assumed if ONLY 1 document record exists oDocument . TypeV = "MORTG" 'Type Description is used for COOK, but not for DUPAGE oDocument .TypeDescription = "" oDocument .Amount = " " 'Initialize Grantors and Grantees oDocumen .Grantorl = oDocumen . Grantor2 = oDocument . Grantor 3 = oDocument Grantor4 = oDocument . Grantorδ = oDocument .Granteel = oDocument .Grantee2 = oDocument .Grantee 3 = oDocument .Grantee4 = oDocument .GranteeΞ = End If End If '** CHECK PIN FOUND ********************************************* '* Determine if the PIN number was found If rErrrSc = 0 Then If Screen_Found% = PIN_NOT_FOUND Then roPm.bInvalιd_Pιn = True Else roPιn.bInvalιd_Pιn = False End If End If i ** GET DATA **************************************************** ' * Scrape the Document screens from the host If roPin bInvalιd_Pm = False And rErrrSc = 0 And mbOnly_l_Document = False Then sCurrentDocNum = " " sNextDocNum = " " iDocCount = 1 lGrantorCount = 1 lGranteeCount = 1 mbFound_Townshιp_Range = False bNoMoreRecords = False bLastDocumentPage = False lFirstDocumentPage = 0 Do While bNoMoreRecords = False And rErrrSc = 0 'CODECHANGE TAS - 12/29/99 'Host screen change requires 1 more pass to get 'the data from the last screen in the doc chain If bLastDocumentPage = True Then bNoMoreRecords = True End If i** GET PROPERTY INFO ******************************************* ' * Scrape the property info from the host * If rErrrSc = 0 Then If ExtraGetScrSi (ghExtral, RetStr$) <> ATM_SUCCESS Then rErrrSc = 10007 rErrMsg$ = "Unable to retrieve the property information from the host " End If 'Print the screen to file for debug comparison testing Call CaptureScreenToFile ("" , "*** Property *** ", True, gOrderNum$) For 3 % = 1 To 24 Call CaptureScreenToFile ("", ExtraGetScrData$ (Retstr$, 3%, 1, 80), True, gOrderNum$) Next End If 1 ** GET DATA **************************************************** ' * Scrape the property info from the host * If rErrrSc = 0 Then 'If iFirstDocumentPage = 0 (1st page of documents) 1 Get 1st document on page because it is 1st page 'Else iFirstDocumentPage = 1 (past 1st page of documents) ' Skip 1st document on page because it is duplicate For 1 = 1 + iFirstDocumentPage To 7 ' Set the current row 'If line number exists on the current screen row then ' retrieve the document data If Len(Trιm(ExtraGetScrData$ (RetStr$, iRow, 4, 6))) > 0 Then ' ** CREATE DOCUMENT NUMBER ************************************** '* Create the Document number: '* "R" + 2-dιgιt year + "-" + 6-dιgιt DOC NO sNextDocNum = "R" & ExtraGetScrData$ (RetStr$, iRow, 19, 2) & "-" Sc ExtraGetScrData$ (RetStr$, iRow, 4 , 6) 'If we have encountered a new DOC NO in the list 'then create a new Document ob 3 ect and set the 'properties for a new Document If sCurrentDocNum 0 SNextDocNum Then sDocCount = Trim (Str( iDocCount) ) Set oDocument = roPin. Documents AddOb3ect (roPin. CaseNumber, roPin. PinNumber, sDocCount) sCurrentDocNum = "R" ^ ExtraGetScrData$ (RetStr$, iRow, 19, 2) Sc "-" & ExtraGetScrData$ (RetStr$, iRow, 4, 6) ' Increment # of Documents in Doc Collection iDocCount = iDocCount + 1 oDocument DocumentNum = sCurrentDocNum ' 1 PageNum for each unique Document number oDocument PageNum = sDocCount oDocument . ecordedDate = CDate (ExtraGetScrData$ (RetStr$, iRow, 11, 10)) 'Look for pattern "Rxx-Oxxxxx" and add a zeros after the 'dash if necessary to make a "valid" PπorDoc Number oDocument . PriorDocs = ExtraGetScrData$ (RetStr$, iRow + 1, 25, 45) oDocument . PriorDocsFormat = DuPagePriorDocs (ExtraGetScrData$ (RetStr$, iRow + 1, 25, 45)) ' Get document type oDocumen . TypeV = ExtraGetScrData$ (RetStr$, iRow, 72, 9) 'Type Description is used for COOK, but not for DUPAGE oDocument . TypeDescription = "" oDocument .Amount = " " ' Initialize Grantors and Grantees oDocument . Grantorl = oDocument . Grantor2 = oDocument . Grantor 3 = oDocument . Grantor4 = oDocument . Grantors = oDocument .Granteel = oDocument .Grantee2 = "" oDocument .Grantee3 = "" oDocument .Grantee4 = "" oDocument .Grantees = "" 'Re- initialize Grantor and Grantee count for every new document lGrantorCount iGranteeCount End If 'Get Buyer/Seller for each repeating document entry sBuyerSeller = ExtraGetScrData$ (RetStr$, iRow, 63, 9) 'Add Grantors and Grantees to the the 'Document object based upon type. Select Case UCase (RTrim (oDocument .TypeV) ) ' Store Grantors or Grantees only for these ' document types . 'Note: Grantors and Grantees for the '"SUBRD OF" type must be retrieved 'from the Detail screens. Case "MORTG", "DEED", "A M", "SPWD" '? 'Add a Grantor or Grantee to the Document object 'depending upon the "BUY/SELL" host column Select Case UCase (RTrim (sBuyerSeller) ) Case "MRTGOR", "GRNTOR", "ASINOR" 'Set Grantor properties Select Case iGrantorCount Case 1 oDocument . Grantorl = ExtraGetScrData$ (RetStr$, iRow, 22, 41) Case 2 oDocument . Grantor2 = ExtraGetΞcrData$ (RetStr$, iRow, 22, 41) Case 3 oDocument .Grantor3 = ExtraGetScrData$ (RetStr$, iRow, 22 , 41) Case 4 oDocument . Grantor4 = ExtraGetScrData$ (RetStr$, iRow, 22 , 41) End Select ' Increment count of Grantors iGrantorCount = iGrantorCount Case Else 'Set Grantee properties Select Case iGranteeCount Case 1 oDocument .Granteel = ExtraGetScrData$(RetStr$, iRow, 22, 41) Case 2 oDocument .Grantee2 = ExtraGetScrData$(RetStr$, iRow, 22 , 4 1) Case 3 oDocument .Grantee3 = ExtraGetScrData$(RetStr$, iRow, 22 , 1) Case 4 oDocument .Grantee4 = ExtraGetScrData$ (RetStr$, iRow, 22 , 1) End Select ' Increment count of Grantees iGranteeCount = iGranteeCount + 1 End Select End Select End If Next l End If '** SKIP 1ST DOCUMENT IN PAGE IF 2ND OR MORE PAGE **************************************************** 'If it is the 1st page of documents then retrieve the 1st document of the page 'Else start with the 2nd document on the page because the last document from the previous page is always carried over. If IFirstDocumentPage = 0 Then iFirstDocumentPage = 1 End If i ** GOTO NEXT PAGE ********************************************** ' * Get the next page of documents * If rErrrSi = 0 Then If ExtraPutSc(ghExtralSc, 0, 0, "@8") <> ATM_SUCCESS Then rErrrSc = 1009 rErrMsg$ = "Unable to goto next page." End If End If ' * * GOTO NEXT PAGE ********************************************** ' * Get the next Document page If rErrrSc = 0 Then If ExtraGetScrS. (ghExtral, RetStr$) <> ATM_SUCCESS Then rErrrS = 10007 rErrMsg$ = "Unable to retrieve next Document screen from host " End If End If i ** GOTO NEXT PAGE ********************************************** '* Check to see if "NO MORE RECORDS" exist, If rErrrSi = 0 Then If ExtraGetScrData$(RetStr$, 3 , 2, 12) = "F8 - NO MORE" Then bLastDocumentPage = True End If End If Loop 'If at least 1 document was found then 'reverse the order of the documents If roPin.Documents. Count > 0 Then 'Create a temp Document collection to reverse the ' order of the Dupage Documents Set TempDocuments = New W3FtDocuments 'Store the current Document collection temporarily For l = 1 To roPin.Documents. Count TempDocuments. AddDoc roPin.Documents d) , roPin.Documents (I) .DocumentNum & Next l 'Clear all Document objects from the 'current PIN / Document collection to make 'room for the reverse ordered Temp collection roPin . Documents . Clear 'Overwrite the current PIN / Document set ' in reverse order using the temporary document collection For l = TempDocuments. Count To 1 Step -1 roPin.Documents.AddDoc TempDocuments d) , TempDocuments d) .DocumentNum S Next l End If End If '** Clear Screen **************************************************** ' * enter Pause-Break to clear screen If rErrrSc = 0 Then If ExtraPutSc(ghExtralSc, 1, 1, "®C") <> ATM_SUCCESS Then rErrrSc = 9999 rErrMsg$ = "Unable to clear screen - (Pause / Break) " End If End If Get_Document_Info_DUPAGE_Exιt : Get_Document_In o_DUPAGE_Error . rErrr = Err. Number rErrMsg = "Get_Document_Info_DUPAGE: " Sc Err .Description Resume Get_Document_Info_DUPAGE_Exιt End Sub '** GET DOCUMENT DETAILS DUPAGE************************************* '* Purpose This sub routine is called only for specific TYPES '* within a document chain. Some document types require navigation ' * to the document details screen to capture additional information '* such as GRANTOR / GRANTEE names. This routine handles a host ' * navigation issue when only 1 document exists for the PIN or '* a "SUBRD OF" document is being retrieved. Sub Get_Document_Detaιls_DUPAGE(roPιn As W3FtPιn, rErrrSc, rErrMsg$) Dim Screen_Found% , 3%, iDocCount Dim Condo$, RetSi, rErrl& Dim RetStr$, rErrlMsg$ Dim bNoMoreRecords As Boolean Dim sCurrentDocNum As String Dim sBuyerSeller As String Dim sTownRange As String Dim 1 As Integer Dim lPos As Integer Dim iMore As Integer Dim oDocument As W3 FtDocument Const PIN_SEARCH = 1 Const PI _NOT_FOUND = 2 On Error G0T0 Get_Document_Detaιls_DUPAGE_Error 'Initialize flag for whether Township and Range were found. mbFound_Townshιp_Range = False '** VERIFY HOST LOCATION ******************************************** '* Verify that we are on the Document screen If rErrrSc = 0 Then If ExtraWait ghExtralS:, 2, 31, gTιmeout%, "SEARCH MENU") 0 ATM_SUCCESS Then rErrrSi = 9999 rErrMsg$ = "Unable to find Document screen - SEARCH MENU" End If End If For l = 1 To roPin.Documents. Count 'Get the next Document ob 3 ect from the collection Set oDocument = roPin.Documents d) Select Case UCase (RTrim (oDocumen .TypeV) ) Case "MORTG", "DEED", "SUBRD OF", "ΞPWD" '** ENTER PIN NO ************************************************ ' * Enter the Recording Date to End Search Date '* and the Pin information needed to retrieve the '* details of the Document information. ' **************************************************************** If rErrrSc = 0 Then ' Put in the document year RetSi = Ex raPutScfghExtralSc, 6, 33, Format (oDocument .RecordedDate, "yyyy", 0, 0) ) ' Put in the 6 digit document number RetSi = ExtraPutSi (ghExtralSc, 6, 19, Right (oDocument .DocumentNum, "@E") End If '** VERIFY HOST LOCATION **************************************** '* Verify that the Legal pin number was found * If rErrrSc = 0 Then If WJHostWaιt2S=(2, 30, 3, 2, gTιmeout%, "MASTER RECORD", "DOCUMENT DOES NOT EXIST", Screen_Found%) <> ATM_SUCCESS Then rErrr& = 10013 rErrMsg$ = "Pin not found on Legal search screen" End If End If '** CHECK PIN FOUND ********************************************* '* Determine if the PIN number was found * If rErrrS = 0 Then If Screen_Found% = PIN_NOT_FOUND Then roPιn.bInvalιd_Pιn = True Else roPm.bInvalιd_Pιn = False End If End If ' * * GET DATA **************************************************** 1 * Scrape the Document screens from the host If roPιn.bInvalid_Pιn = False And rErrrSi = 0 Then '** GET PROPERTY INFO ******************************************* ' * Scrape the property info from the host * If rErrrSi = 0 Then If ExtraGetScrSc (ghExtral, Retstr$) <> ATM_SUCCESS Then rErrrSc = 10007 rErrMsg$ = "Unable to retrieve the property information from the host. " End If 'Print the screen to file for debug & comparison testing Call CaptureScreenToFile (" " , "*** Property Details *** ", True, gOrderNum$) For 3% = 1 To 24 Call CaptureScreenToFile ("", ExtraGetScrData$ (RetStr$, 3%, 1, 80) , True, gOrderNum$) Next End If ' ** GET DATA **************************************************** '* Scrape the property detail info from the host If rErrr& = 0 Then 'Get data for MORTG and DEED oDocument .Amount = Str (Val (ExtraGetScrDataS (RetStr$, 8, 17, 12))) 'CODECHANGE TAS - 06/13/01 (FIT208) 'Get the full length of PriorDocs from the detail screen oDocument . PriorDocs = ExtraGetScrData$ (RetStr$, 11, 15, 65) oDocument . PπorDocsFormat = DuPagePriorDocs (ExtraGetScrData$ (RetStr$, 11, 15, 65)) ' ENDCODECHANGE TAS - 06/l 3 /01 (FIT208) 'Get Township and Range if available in description 'which is stored in PriorDocs If mbFound_Townshιp_Range = False Then sTownRange = Right (Trim (oDocument PriorDocs), 5) lPos = InStr(l, sTownRange, "-") msTownship = Trιm(Left (sTownRange, lPos - 1)) msRange = Trim (Right (sTownRange, Len (sTownRange) - lPos) ) mbFound_Townshιp_Range = True 'Update Township and Range for Legal If roPm.Legals. Count > 0 Then roPin.Legals (1) .Township = msTownship roPm.Legals (1) .Range = msRange Call roPin.Legals. UpdateData (rErrlSc, rErrlMsg$) End If End If End If End If 'Get data for SUBRD OF or 'if ONLY 1 document was found for the PIN# If UCase (RTrim (oDocument. TypeV) ) = "SUBRD OF" Or _ mbOnly_l_Document = True Then '** ENTER PIN NO ************************************************ 1 * Enter the Recording Date to End Search Date 1 * and the Pin information needed to retrieve the '* details of the Document information. If rErrrSc = 0 Then 'Put PF11 to get the "people" record Rets. = ExtraPutSctghExtralSi, 1, 1, "@b") End If '** VERIFY HOST LOCATION ******************************************** ' * Verify that we are on the Document screen If rErrrSc = 0 Then If ExtraWaιtSc(ghExtral&, 2, 2 3 , gTιmeout%, "PEOPLE RECORD") <> ATM_SUCCESS Then rErrrSc = 9999 rErrMsg$ = "Unable to find Document people screen - (TRANSACTOR RECORD) " End If End If i ** GET DATA **************************************************** ' * Scrape the Document screens from the host If rErrrSc = 0 Then If ExtraGetScrSc (ghExtral, RetStr$) <> ATM_SUCCESS Then rErrrSi = 10007 rErrMsg$ = "Unable to retrieve the property information from the host . ' End If 'Print the screen to file for debug Si comparison testing Call CaptureScreenToFile ("" , "*** Property Details *** ", True , gOrderNum$ ) For 3% = 1 To 24 Call CaptureScreenToFile ("" , ExtraGetScrData$ (RetStr$, 3%, 1, 80), True, gOrderNum$) Next ' Store the Grantors and Grantees oDocument Grantorl = : ExtraGetScrData$ (RetStr$, 8, 2, 30) oDocument . Grantor2 = : ExtraGetScrData$(RetStr$, 9, 2, 30) oDocument . Grantor3 = ■ ■ ExtraGetScrData$(RetStr$, 10, 2, 30) oDocument Grantor4 = ■ ■ ExtraGetScrData$(RetStr$, 11, 2, 30) oDocument .Granteel = : ExtraGetScrData$(RetStr$, 16, 2 , 30) oDocument Grantee2 = ExtraGetScrData$(RetStr$, 17, 2 , 30) oDocument Grantee3 = ExtraGetScrData$(RetStr$, 18, 2, 30) oDocument Grantee 4 = ExtraGetScrData$(RetStr$, 19, 2, 30) End If End If End If '** Clear Screen **************************************************** '* enter Pause-Break to clear screen If rErrr& = 0 Then If ExtraPutSc(ghExtralSc, 1, 1, "@C") <> ATM_SUCCESS Then rErrrSc = 9999 rErrMsg$ = "Unable to clear screen - (Pause / Break) " End If End If i** VERIFY HOST LOCATION ******************************************** ' * Verify that we are on the Document screen If ExtraWaιtSc(ghExtral&, 2, 31, gTιmeout%, "SEARCH MENU") <> ATM_ΞUCCESS Then rErrr& = 9999 rErrMsg$ = "Unable to find Document screen - SEARCH MENU" End If End Select 'CODECHANGE TAS - 06/13/01 (FIT208) '** GET PRIORDOC DETAILS ************************************************ '* Go to the Document detail screen because the '* PriorDocs did not fit on the mam Document listing screen. 'CODECHANGE TAS - 06/13/01 (FIT208) If Trim (oDocument TypeV) = "RELS" Or _ Trim (oDocument .TypeV) = "DISC" Or _ Trim (oDocument TypeV) = "RLSE" Then iMore = InStr (oDocument . PriorDocsFormat, "MORE|") If iMore > 0 Then '** ENTER PIN NO ************************************************ ' * Enter the Recording Date to End Search Date '* and the Pin information needed to retrieve the '* details of the Document information. If rErrrSc = 0 Then ' Put in the document year RetSc = ExtraPutSc(ghExtral&, 6, 33, Format (oDocument RecordedDate, "yyyy", 0, 0) ) 'Put in the 6 digit document number RetSc = ExtraPut£c(ghExtralSc, 6, 19, Right (oDocument DocumentNum, 6) Sc !") End If i** VERIFY HOST LOCATION **************************************** '* Verify that the Legal pin number was found * If rErrrSc = 0 Then If WJHostWaιt2£c(2, 30, 3, 2, gTιmeout%, "MASTER RECORD", "DOCUMENT DOES NOT EXIST", Screen_Found% ) <> ATM_SUCCESS Then rErrrSi = 10013 rErrMsg$ = "Pin not found on Legal search screen" End If End If '** CHECK PIN FOUND ********************************************* ' * Determine if the PIN number was found * ***************************************************************** If rErrrSc = 0 Then If Screen_Found% = PIN_NOT_FOUND Then roPin bInvalιd_Pιn = True Else roPin bInvalιd_Pm = False End If End If i ** GET DATA **************************************************** ' * Scrape the Document screens from the host ***************************************************************** If roPin bInvalιd_Pιn = False And rErrrϋ = 0 Then '** GET PROPERTY INFO ******************************************* ' * Scrape the property info from the host * If rErrrSc = 0 Then If ExtraGetScrSc (ghExtral, RetStr$) <> ATM_SUCCESS Then rErrrSc = 10007 rErrMsg$ = "Unable to retrieve the property information from the host " End If 'Print the screen to file for debug S comparison testing Call CaptureScreenToFile ("" , "*** Property Details *** ", True, gOrderNum$ ) For 3% = 1 To 2 4 Call CaptureScreenToFile ("", ExtraGetScrData$ (RetStr$, 3%, 1, 80) , True, gOrderNum$) Next End If 1 ** GET DATA **************************************************** ' * Scrape the property detail info from the host * If rErrrSc = 0 Then 'Get the full length of PriorDocs from the detail screen oDocument PriorDocs = ExtraGetScrData$ (RetStr$, 11, 15, 65) oDocument PπorDocsFormat = DuPagePriorDocs (ExtraGetScrData$ (RetStr$, 11, 15, 65)) End If End If '** Clear Screen **************************************************** '* enter Pause-Break to clear screen ι ******************************************************************** If rErrrSc = 0 Then If ExtraPutSc(ghExtralSe, 1, 1, "@C") <> ATM_SUCCESS Then rErrrSc = 9999 rErrMsg$ = "Unable to clear screen - (Pause / Break) " End If End If '** VERIFY HOST LOCATION ******************************************** ' * Verify that we are on the Document screen If ExtraWaιtSc(ghExtralSc, 2, 31, gTιmeout%, "SEARCH MENU") <> ATM_SUCCESS Then rErrrSc = 9999 rErrMsg$ = "Unable to find Document screen - SEARCH MENU" End If End If End If ' ENDCODECHANGE TAS - 06/13/01 (FIT208) Next l Get_Document_Detaιls_DUPAGE_Exιt Get_Document_Detaιls_DUPAGE_Error rErrr = Err Number rErrMsg = "Get_Document_Detaιls_DUPAGE " Sc Err Description Resume Get_Document_Detaιls_DUPAGE_Exιt End Sub i ** DUPAGEPRIORDOCS ********************************************* '* Purpose This sub routine is used to analyze and identify "real" ' * document numbers from a host screen for DuPage county The code ' * looks for a specific pattern "Rxx-xxxxx" or similar to that to '* determine if a "PRIOR" doc exits in the line of text '* If the prior doc pattern is found it is stored for matching Function DuPagePriorDocs (ByVal vsPriorDocs As String) As String Dim l As Integer D m lPos As Integer Dim iStart As Integer Dim iDash As Integer Dim sChar As String Dim sLeftNum As String Dim sRightNum As String Dim bGetDocDetails As Boolean 'Initialize function value DuPagePriorDocs = " " bGetDocDetails = False iStart = 1 'Look for a dash which signifies a Doc Number iDash = InStr (iStart, vsPriorDocs, "-") While iDash > 0 lPos = iDash - 1 sChar = "" sChar = Mid (vsPriorDocs, lPos, 1) sLeftNum = "" 'Find Numeric values to the left of the Dash While sChar >= Chr( 4 8) And sChar <= Chr(57) sLeftNum = sChar Sc sLeftNum sChar = Mid (vsPriorDocs, lPos, 1) Else sChar = "" End If Wend lPos = iDash + 1 sChar = "" sChar = Mid (vsPriorDocs, lPos, 1) SRightNum = " " ' Find Numeric values to the right of the Dash While sChar >= Chr( 4 8) And sChar <= Chr(57) sRightNum = sRightNum Si sChar If lPos <= Len (vsPriorDocs) Then sChar = Mid (vsPriorDocs, lPos, 1) Else sChar = "" End If Wend 'If a valid Doc Number pattern was found then build a Doc Number If (Len (sLeftNum) > 1 And Len(sLeftNum) < 5) And (Len (sRightNum) > 0) Then 'Pad the right part of the Doc Number with zeros If Len (sRightNum) < 6 Then sRightNum = Strιng(6 - Len (sRightNum) , 4 8) & sRightNum End If DuPagePriorDocs = DuPagePriorDocs S= "R" Si sLeftNum & "-" & sRightNum Sc "| End If 'Look for the next dash which signifies a Doc Number If iDash + 1 <= Len (vsPriorDocs) Then iDash = InStrdDash + 1, vsPriorDocs, "-") End If Wend 'If any characters exist in the last 2 positions then 'assume we need to go to the Doc Detail screen ' to get more Doc Numbers If InStr (Right (RTrim (vsPriorDocs) , 6), "R") > 0 Then DuPagePriorDocs = "M0RE|" End If End Func ion

Claims: WE CLAIM: 1. A method for outputting an analyzed data report, comprising: receiving a request signal, the request signal being a request for an analyzed data report of a parcel of real property; accessing a database of records, the database of records relating to the parcel of real property; collecting data from the database of records; analyzing the collected data; creating the analyzed data report from the analysis of the collected data; and outputting the analyzed data report to an end user. 2. The method of Claim 1 , wherein the request signal is received at a communication node. 3. The method of Claim 2, wherein the request signal is sent by a communication device. 4. The method of Claim 1 , wherein the collecting step further comprises: receiving real estate tax information for the parcel of real property; retrieving a legal description of the parcel of real property; retrieving a document chain relating to the parcel of real property; and organizing the data into a predetermined order. 5. The method of Claim 1 , wherein the analyzing step further comprises: scanning the collected data; searching the collected data for a set of preset conditions; and noting the occurrence of any of the set of preset conditions. 6. The method of Claim 1 , wherein the creating step further comprises developing the analyzed data report so that the analyzed data report contains a listing of the parcel of real property and any of the set of preset conditions. 7. The method of Claim 1 , wherein the analyzed data report is outputted according to predetermined preferences. 8. A system for outputting an analyzed data report, comprising: means for receiving a request signal, the request signal being a request for an analyzed data report of a parcel of real property; means for accessing a database of records, the database of records relating to the parcel of real property; means for collecting data from the database of records; means for analyzing the collected data; means for creating the analyzed data report from the analysis of the collected data; and means for outputting the analyzed data report to an end user. 9. The system of Claim 8, wherein the request signal is received at a communication node. 10. The system of Claim 9, wherein the request signal is sent by a communication device. 11. The system of Claim 8, wherein the collecting step further comprises: means for receiving real estate tax information for the parcel of real property; means for retrieving a legal description of the parcel of real property; means for retrieving a document chain relating to the parcel of real property; and means for organizing the data into a predetermined order. 12. The system of Claim 8, wherein the analyzing step further comprises: means for scanning the collected data; means for searching the collected data for a set of preset conditions; and means for noting the occurrence of any of the set of preset conditions. 13. The system of Claim 8, wherein the creating step further comprises means for developing the analyzed data report so that the analyzed data report contains a listing of the parcel of real property and any of the set of preset conditions. 14. The system of Claim 8, wherein the analyzed data report is outputted according to predetermined preferences.

Inventors: GLASSER JANETTE M, O'HALLORAN CHARLES R, GLASSER, JANETTE, M., O'HALLORAN, CHARLES, R.
Applicants: GLASSER JANETTE M, O'HALLORAN CHARLES R, GLASSER, JANETTE, M., O'HALLORAN, CHARLES, R.
Application year: 2001
Main classification: G06F17
IPC codes: G06Q10