PROGRAMMING WITH POCKET NAMES & NUMBERS
The Pocket Names & Numbers Dynamic Link Library provides a powerful and simple way for programmers to integrate the power of Pocket Names & Numbers directly into their database or application running under Windows. Making use of these powerful facilities has been made as straight-forward as possible, but the API is designed for advanced users who have an understanding of programming.
Developers for the Pocket PC 2003 and Windows CE .NET devices, or those targeting other devices where the .NET Compact Framework is to be installed, may require or prefer to use the Visual Studio .NET environment. Documentation on our classes for using Pocket Postcode with VB .NET and C# .NET is provided in the 'Programming with .NET and Pocket Names & Numbers' section of this manual.
The programming involved will vary with the
language you are using, but examples are provided which make it very
easy for most popular languages and the principles illustrated will
guide developers in other environments. If you are using one of the
example languages, you can simply paste the bits of program into
your own code, for immediate use!
The Names & Numbers API is provided in two DLL files, "afdnn32.dll" and "changes.dll". These
files are installed into the Windows folder during installation.
A postcode may be unique to one organisation - in the case of Large User postcodes, but much more commonly is shared by multiple addresses (delivery points). Each delivery point has a unique Number/Letter Delivery Point Suffix (like 1A or 2C), which is at the core of the new Royal Mail Barcode technology.
It is unusual to have more than 100 addresses on a postcode - but up to 130 are possible. An address ('delivery point') is really a single letterbox, which itself may therefore have multi-occupancy - e.g. in the case of a controlled-access block of flats, many families may be covered by the delivery point.
Implementing the use of the Pocket Names & Numbers API typically requires the following steps:
The best place to find the format of Data Type and Structure, or DLL function declarations for your own programming language is within the examples supplied. This discussion uses examples from the Visual Basic language, but the principles apply to all. The file afdnn.h contains definitions and declarations for the 'C' or 'C++' languages.
The 'RevisionID' field in the Pocket Names & Numbers data type is provided to allow applications which are written with the current version of Names & Numbers to be easily supported by future versions which may contain additional data or features. By passing this ID to the DLL, the library is able to return the correct format of data expected by your program. The current setting for RevisionID is '10'.
Four Data Type records are used by Names & Numbers:
Names & Numbers
Address Record
Used to lookup postcodes, search for address or other additional
information. It contains all data on a single person or organisation.
| Type nnRecType | Field Details |
| RevisionID As String * 2 | Revision No of Names & Numbers - set to '10' |
| Postcode As String * 8 | Postcode (& used as 'Postcode To' in range searches) |
| PostcodeFrom As String * 8 | Postcode From (used where a range of postcodes is required & also returns the OLD postcode if a changed postcode is detected) |
| DPS As String * 2 | Delivery Point Suffix |
| Mailsort As String * 5 | Mailsort Code |
| STDCode As String * 8 | Predicted STD Code for Postal Sector |
| WardCode As String * 6 | Local Authority Ward Code |
| WardName As String * 30 | Local Authority Ward Name |
| NHSAreaCode As String * 3 | NHS Area - Code |
| NHSAreaName As String * 50 | NHS Area - Name |
| NHSRegionCode As String * 3 | NHS Region - Code |
| NHSRegionName As String * 40 | NHS Region - Name |
| PostcodeType As String * 6 | L=Large User, S=Small User, N=Non PAF |
| GridE As String * 6 | Grid Reference Easting |
| GridN As String * 6 | Grid Reference Northing |
| Distance As String * 6 | Linear Distance from Test Grid Ref - in 10ths of a Kilometer |
| PostalCounty As String * 30 | County Name according to Postal Authority |
| AdministrativeCounty As String * 30 | County Name for Local Authority purposes |
| TraditionalCounty As String * 30 | Traditional County Name |
| Town As String * 30 | Post Town |
| Locality As String * 70 | Locality (includes Double Dependant Locality) |
| Street As String * 120 | Street or Thoroughfare (includes Dependent Thoroughfare) |
| HouseNo As String * 10 | Building Number |
| Building As String * 60 | Building Name |
| SubBuilding As String * 60 | Sub-Building Name |
| Phone As String * 20 | Telephone No where known, incl STD Code |
| Surname As String * 30 | Surname |
| FirstName As String * 30 | First Name |
| Initial2 As String * 6 | Initial of Second Forename |
| Residency As String * 6 | Length of time resident at this address |
| Gender As String * 6 | M=Male; F=Female; X=Ambiguous; Blank=Not Known |
| Organisation As String * 120 | Organisation Name (includes Department, if any) |
| Business As String * 100 | Business Description - eg 'Solicitors' |
| Size As String * 6 | Size of company indicated by employee number bands eg A=1-9 employees |
| SIC As String * 10 | Standard Industry Classification |
| tvRegion As String * 30 | TV Region |
| Constituency As String * 50 | Parliamentary Constituency |
| Authority As String * 50 | Local Authority / Unitary Authority |
| CameoUKCategory As String * 2 | UK Category |
| CameoIncomeCategory As String * 2 | Income Category |
| CameoInvestorCategory As String * 2 | Investor Category |
| CameoFinancialCategory As String * 2 | Financial Category |
| CameoUnEmploymentCategory As String * 2 | Unemployment Category |
| CameoPropertyCategory As String * 2 | Property Category |
| OnEditedRoll As String * 6 | Indicates if a record appears on the edited electoral roll (Y/N) |
| HouseholdComposition As String * 106 | Household Composition Type |
| dob As String * 6 | Date of Birth |
| CensusCode As String * 30 | Censation Census Code |
| Affluence As String * 30 | Affluence Description |
| LifeStage As String * 100 | LifeStage Description |
| AdditionalCensusInfo As String * 200 | Additional Census Information |
| Occupancy As String * 6 | Indicates
if postcode likely contains residential, business addresses, or
both. The following possible values are returned: 1. Large User Organisation 2. Small User Organisation 3. Mostly Organisations 4. Mixed 5. Mostly Residential 6. Residential |
| AddressType As String * 6 | Indicates
the type of property data needed to be captured for addresses on
this postcode. The following possible values are returned: 1. Numbered 2. Numbered and Named 3. Numbered and Named, Likelihood of Multiple Occupancy 4. Named 5. Non-Standard Address Format 6. PO Box 7. No Property Information (Capture Organisation or Resident Name) |
| CouncilTaxBand As String * 6 | Additional Dataset: Provides the Council Tax Band that the selected residential property resides in (Bands A-H) |
| PCTCode As String * 3 | NHS Primary Care Trust Code in England (Local Heath Board Code in Wales). |
| PCTName As String * 50 | NHS Primary Care Trust Name in England (Local Heath Board Name in Wales). |
| Udprn As String * 8 | Royal Mail Unique Delivery Point Reference Number (where applies) |
| Spare As String * 12 | |
| EERCode As String * 2 | European Electoral Region Code |
| EERName As String * 40 | European Electoral Region Name |
| UrbanRuralCode As String * 2 | Indicates if an area is mostly urban or rural |
| UrbanRuralName As String * 60 | Indicates if an area is mostly urban or rural |
| LEACode As String * 3 | Local Education Authority Code |
| LEAName As String * 50 | Local Education Authority Name |
| AFDJustBuilt As String * 20 | Contains the date a building became live on PAF if it is likely to have been a new build. |
| Latitude As String * 7 | Provides the latitude value for the postcode. |
| Longitude As String * 7 | Provides the longitude value for the postcode. |
| Reserved As String * 255 | Reserved for future use |
| End Type |
Please note that the Cameo fields above will return no data if the Cameo data set has not been purchased and installed by the end user, but space for them must always be allocated in the data structure even if they are not used.
Cameo Descriptions
Record
Only used when the optional CAMEO data set is installed. It is
used to return the descriptions corresponding to the Cameo classifications
returned by the last call to the GetMatch or GetPostcode function.
| Type CameoRecType | Field Details |
| UKCategoryGroup As String * 100 | UK Category Group |
| UKCategoryType As String * 100 | UK Category Type |
| IncomeCategoryGroup As String * 100 | Income Category Group |
| IncomeCategoryType As String * 100 | Income Category Type |
| InvestorCategoryGroup As String * 100 | Investor Category Group |
| InvestorCategoryType As String * 100 | Investor Category Type |
| FinancialCategoryGroup As String * 100 | Financial Category Group |
| FinancialCategoryType As String * 100 | Financial Category Type |
| EconomicallyInactiveHouseholds As String * 20 | Economically Inactive Households |
| EconomicInactivityIndex As String * 40 | Economic Inactivity Index |
| AverageHousePrice As String * 20 | Average House Price |
| End Type |
Changes Record
This is used by the GetChanges function
- which can test a postcode to see if it has changed, and return the
replacement postcode.
| Type ChangesType | Field Details |
| Postcode As String * 8 | Postcode Data |
| End Type |
Phone Change Record
This is used by the PhoneChange2000 function
- which can test a phone number to see if it has been replaced by the National
Code & Number Change, and return the replacement phone number.
| Type PhoneChangesType | Field Details |
| PhoneNo As String * 15 | Phone Number Data |
| End Type |
General String Record
This record type contains a single string of 255 characters in length,
and is used by the ListFirst and ListNext functions
to provide lists of possible data fields for any field search.
| Type AFDStringType | Field Details |
| Value As String * 255 | General String Data |
| End Type |
Although it is not essential, you may find it useful to declare the following constants - which are used by all the AFD Names & Numbers DLL functions to return error conditions etc.
| Return Code Constants | ||
| Global Const INVALID_POSTCODE = -1 | Postcode is not valid | |
| Global Const POSTCODE_NOT_FOUND = -2 | Requested Postcode Lookup or Search unsuccessful | |
| Global Const INVALID_RECORD_NUMBER = -3 | Call off index for Address or Locality is out of expected range | |
| Global Const ERROR_OPENING_FILES = -4 | Error opening Names & Numbers files | |
| Global Const FILE_READ_ERROR = -5 | Error reading Names & Numbers files | |
| Global Const END_OF_SEARCH = -6 | Search has reached end of matching data | |
| Global Const DATA_LICENSE_ERROR = -7 | Data license is invalid or out of date | |
| Global Const CONFLICTING_SEARCH_PARAMETERS = -8 | Attempted to search for Organisation at same time as a FirstName, Surname or Initial | |
| Search Control Flag Constants | |
| Bits 0-3 specify skipping | |
| Global Const NO_SKIP = 0 | |
| Global Const SKIP_TO_NEXT_SECTOR = 1 | |
| Global Const SKIP_TO_NEXT_OUTCODE = 2 | |
| Global Const SKIP_TO_NEXT_POSTCODE_AREA = 3 | |
| Bits 4-6 specify data subsets to use (currently only USE_ALL_SUBSETS is available) | |
| Global Const USE_ALL_SUBSETS = 0 | |
| 'Bit 8 specifies whether GetPostcode should return all records or only those which match the last search | |
| Global Const RETURN_ALL_RECORDS = 0 | |
| Global Const RETURN_MATCHING_RECORDS = 256 | |
| Bit
9 specifies whether to provide Sector breaks or not - sector
breaks mean that functions will return control to the calling
program each time the postcode sector changes. This allows cancellation of searches, and progress bars etc to be updated. |
|
| Global Const NO_SECTOR_BREAKS = 0 | |
| Global Const RETURN_SECTOR_BREAKS = 512 | |
| Revision ID Constant | |
| Global Const RevIsionID$="03 | |
Seven functions are provided by the Names & Numbers Dynamic Link Libraries. There are Unicode and ASCII forms of each of these functions, the Unicode forms are generally easier to work with in the CE environment. The Unicode versions have the prefix 'w'. The String type used in nnRec and in each of these examples is assumed to be an array of TChars (2 bytes per character) if the Unicode function is used, or an array of Chars (1 byte per character) if the ASCII version is used.
Used to carry out a Postcode
Lookup and to return the associated address information (Please note
all the following Declaration should be on a single line of source
code). Also used to return the address data from a search using InitiateSearch & GetMatch.
If a changed postcode is detected, the new postcode appears in nnRec.Postcode,
and the old postcode is transferred to nnRec.PostcodeFrom.
Unicode Declaration
Declare Function wGetPostcode Lib "afdnn32.dll" _
(nnRec As nnRecType, ByVal RecNo As Long, ByVal nnFlags As Long) As Long
ASCII
Declaration
Declare Function GetPostcode Lib "afdnn32.dll" _
(nnRec As nnRecType, ByVal RecNo As Long, ByVal nnFlags As Long) As Long
Usage
| nnRec.Postcode = "B80 7NW" |
| 'Always set the Revision ID to inform the DLL how to handle your request |
| nnRec.RevisionID = "10" |
| RecNo& = 1 |
| nnFlags& = RETURN_ALL_RECORDS |
| NoOfAddresses& = wGetPostcode(nnRec, RecNo&, nnFlags&) |
| 'Test & report any error |
| If NoOfAddresses& < 0 then |
| ShowError NoOfAddresses |
| Exit Sub |
| End If |
| 'Else do Something with the data |
| 'Then call off remaining addresses |
| For Recno& = 2 to NoOfAddresses& |
| NewResult& = wGetPostcode(nnRec, RecNo&, nnFlags&) |
| 'Do Something with the data |
| Next RecNo& |
NoOfAddresses
A Long Integer return value which indicates number of addresses found
for this lookup. Returns:
nnRec
Record of type nnRecType which contains the postcode to be looked up
and on return contains the remaining address data.
RecNo
A Long Integer which specifies the record number required - so in the
case of the initial lookup is set to 1, then RecNo is incremented to
call off subsequent records from 2 to NoOfAddresses until all addresses
have been examined.
nnFlags
A Long Integer flag value set to control the behaviour of GetPostcode
using the constant values OR'd (added) together. Typically in a Postcode
Lookup, nnFlags will be zero (RETURN_ALL_RECORDS), whilst when calling
off results of a search performed with InitiateSearch/GetMatch, nnFlags
will usually be RETURN_MATCHING_RECORDS + RETURN_SECTOR_BREAKS.
Used to start an Address Search and specify the type of search. If a positive result is returned, this is examined using GetMatch and GetPostcode. There are two ways to call this method, either (1) with your specific search criteria or (2) with a free text 256 character string for fast lookup from a comma separated field. (text formats supported as with the Find Box on the Pocket Names & Numbers Front End).
(1) With specific Search Criteria
Unicode Declaration
Declare Function wInitiateSearch Lib "afdnn32.dll" _
(nnRec As nnRecType, ByVal nnFlags As Long) As Long
ASCII Declaration
Declare Function InitiateSearch Lib "afdnn32.dll" _
(nnRec As nnRecType, ByVal nnFlags As Long) As Long
Usage
| ' Always set the Revision ID to inform the DLL how to handle your request |
| nnRec.RevisionID = "10" |
| nnRec.Surname = "Smith" |
| '.........Ditto for each field used.... |
| nnRec.Street = "High Street" |
| nnRec.Town = "London" |
| nnFlags& = RETURN_MATCHING_RECORDS + RETURN_SECTOR_BREAKS +SkipFlag |
| NoOfSectors& = wInitiateSearch(nnRec, nnFlags&) |
NoOfSectors
A Long Integer return value indicates the number of sectors which contain
all the data specified by the search. These sectors may not actually
match at the individual address level - this will be determined by
GetMatch: e.g. if you look for "BOOTS" with "HIGH STREET" then
all sectors containing both BOOTS and HIGH STREET are returned, but
only those which actually have BOOTS in HIGH STREET match at the postcode
level when examined with GetMatch.
Returns:
nnRec
Record of type nnRecType which is used to specify the data for the Address
Search. All fields not used in the search should be initialised to
spaces, except .RevisionID which should be set to current revision
code (eg '"03")
To look up any field phonetically ('sounds like'), place a $ sign at
the start of the field. Avoid very short search strings - less than 2
consonants or search times will be much longer or may be rejected by
the search engine. Some words - like "The", 'Flat', 'Unit',
'Suite', 'Upper', 'Lower', "Ltd, "Plc" etc are not used
for searches.
All advanced search features of the Names & Numbers program are supported
in the routine - including Sound Like ($), Spelled Like (~), AND (+),
OR (|) & Wildcards (?, *)
nnFlags
A Long Integer flag value set to control the behaviour of GetPostcode
using the constant values OR'd (added) together. Typically in a search,
nnFlags will usually be RETURN_MATCHING_RECORDS + RETURN_SECTOR_BREAKS
SkipFlag
A Long Integer optional variable. For certain types of search it will
be beneficial to only show one result for a particular Postcode Sector,
Outward Code or Post Town. This can be set using the relevant constant
in SkipFlag: SKIP_TO_NEXT_SECTOR, SKIP_TO_NEXT_OUTCODE, SKIP_TO_NEXT_POSTTOWN
(2) With a 256 Character Free-text String
Unicode Declaration
Declare Function w InitiateSearch Lib "afdnn32.dll" _
(ByVal searchStr As String, ByVal nnFlags As Long) As Long
ASCII Declaration
Declare Function InitiateSearch Lib "afdnn32.dll" _
(ByVal searchStr As String, ByVal nnFlags As Long) As Long
Usage
| ' Always set the Revision ID to inform the DLL how to handle your request |
| nnRec.RevisionID = "10" |
| nnRec.Surname = "Smith" |
| '.........Ditto for each field used.... |
| nnRec.Street = "High Street" |
| nnRec.Town = "London" |
| nnFlags& = RETURN_MATCHING_RECORDS + RETURN_SECTOR_BREAKS +SkipFlag |
| NoOfSectors& = wInitiateSearch(nnRec, nnFlags&) |
NoOfSectors
A Long Integer return value indicates the number of sectors which contain
all the data specified by the search. These sectors may not actually
match at the individual address level - this will be determined by
GetMatch: e.g. if you look for "BOOTS" with "HIGH STREET" then
all sectors containing both BOOTS and HIGH STREET are returned, but
only those which actually have BOOTS in HIGH STREET match at the postcode
level when examined with GetMatch.
Returns:
SearchStr
Used to specify the free text string to search for. Must be at
least a 512 character string (any excess characters will be ignored).
nnFlags
Must be 2048 (bit 11 set) to specify a Free-Text Search. This can
also be Or'd with the other search options, usually RETURN_MATCHING_RECORDS
and RETURN_SECTOR_BREAKS as desired.
SkipFlag
A Long Integer optional variable. For certain types of search it will
be beneficial to only show one result for a particular Postcode Sector,
Outward Code or Post Town. This can be set using the relevant constant
in SkipFlag: SKIP_TO_NEXT_SECTOR, SKIP_TO_NEXT_OUTCODE, SKIP_TO_NEXT_POSTTOWN
Used to return the associated address information from an Address Search
- always follows a search with InitiateSearch
Unicode Declaration
Declare Function wGetMatch Lib "afdnn32.dll"_
(nnRec As nnRecType, ByVal nnFlags As Long) As Long
ASCII Declaration
Declare Function GetMatch Lib "afdnn32.dll"_
(nnRec As nnRecType, ByVal nnFlags As Long) As Long
Usage
| nnFlags& = RETURN_MATCHING_RECORDS + RETURN_SECTOR_BREAKS +SkipFlag |
| 'Always set the Revision ID to inform the DLL how to handle your request |
| nnRec.RevisionID = "10" |
| Do |
| NoOfAddresses& = wGetMatch(nnRec, nnFlags&) |
| If NoOfAddresses& = 0 then |
| 'Increment a progress counter |
| else |
| 'Get the address records with GetPostcode |
| For RecNo& = 1 To NoOfAddresses& |
| PCResult& = wGetPostcode(nnRec, RecNo&, nnFlags&) |
| 'Do something with the data |
| Next RecNo& |
| end if |
| 'Give the chance to cancel |
| DoEvents |
| Loop until NoOfAddresses& < 0 or Cancel=True |
NoOfAddresses&
A Long Integer return value which indicates the success of the address
call-off.
Returns:
PCResult&
A Long Integer return value which indicates the success of the GetPostcode
call-off.
nnRec
Record of type nnRecType which contains the postcode matching the search
criteria so that address results can be called off using GetPostcode.
This function is used to return the descriptions corresponding to the
Cameo categorisations returned by the GetMatch or GetPostcode API calls.
It is only useful if the end user has purchased and installed the Cameo
dataset.
Unicode Declaration
Declare Function wGetCameoDescriptions Lib "afdnn32.dll"_
(nnCameoRec As CameoRecType) as Long
ASCII Declaration
Declare Function GetCameoDescriptions Lib "afdnn32.dll"_
(nnCameoRec As CameoRecType) as Long
Usage
| ' Retrieve required record using GetMatch or GetPostcode (see above) |
| ' Call the GetCameoDescriptions function |
| CameoResult& = wGetCameoDescriptions(nnCameoRec) |
| If CameoResult& = 0 Then |
| 'Do something with the data |
| End If |
nnCameoRec
A record of type CameoRecType containing the Cameo Descriptions
CameoResult
A Long Integer return value where 1 indicates success
This function is used to check and return the replacement postcode for
any Postcodes which have been recoded. Although built-into the
GetPostcode routines, it may be useful to use the GetChange feature independently.
Unicode Declaration
Declare Function wGetChange Lib "afdnn32.dll"_
(OldPC as ChangesType, NewPC as ChangesType) as Long
ASCII Declaration
Declare Function GetChange Lib "afdnn32.dll"_
(OldPC as ChangesType, NewPC as ChangesType) as Long
Usage
| 'Set OldPC to the postcode Typed in |
| OldPC.Postcode = "YO1 1AA" |
| 'Call the changed postcode function |
| ChangeResult& = wGetChange(OldPC, NewPC) |
| If ChangeResult& = 1 Then |
| MsgBox "Postcode: " + OldPC.Postcode + " has changed to " + NewPC.Postcode, 64 |
| End If |
OldPc
A record of type ChangesType used to send a test postcode to the GetChange
function.
NewPc
A record of type ChangesType used to return a replacement postcode from
the GetChange function.
ChangeResult
A Long Integer return value which indicates the success of the GetChange
test:
Returns:
This function is used to check and return the replacement phone number for any numbers which have been recoded as a result of the National Code & Number Change.
Unicode Declaration
Declare Function wPhoneChange2000 Lib "Changes.dll" (OldNumber
As PhoneChangesType, NewNumber As PhoneChangesType) As Long
ASCII Declaration
Declare Function PhoneChange2000 Lib "Changes.dll" (OldNumber
As PhoneChangesType, NewNumber As PhoneChangesType) As Long
Usage
| 'Set OldNumber to the phone number typed in |
| OldNumber.PhoneNo = "01232 922073" |
| 'Call the changed phone Number function |
| ChangeResult& = wPhoneChange2000(OldNumber, NewNumber) |
| If ChangeResult& = 1 Then |
| MsgBox "Phone Number: " + OldNumber.PhoneNo + " has changed to " + NewNumber.PhoneNo, 64 |
| End If |
OldNumber
A record of type Phone ChangesType used
to send a test phone number to the PhoneChange2000 function.
NewPc
A record of type Phone ChangesType used
to return a replacement phone number from the PhoneChange2000 function.
ChangeResult
A Long Integer return value which indicates the success of the PhoneChange2000
test:
Returns:
Two functions which together provide the first & subsequent entries
for a list of available values within the Names & Numbers data for
any given field. The initial request is made with ListFirst and subsequent
list values are called off using ListNext.
Unicode Declaration
Declare Function wListFirst Lib "afdnn32.dll"_
(ListRec As AFDStringType, FieldName As AFDStringType, ByVal Flags As
Long) As Long
Declare Function wListNext Lib "afdnn32.dll"_
(ListNext As AFDStringType, FieldName As AFDStringType, ByVal Flags As
Long) As Long
ASCII Declaration
Declare Function ListFirst Lib "afdnn32.dll"_
(ListRec As AFDStringType, FieldName As AFDStringType, ByVal Flags As
Long) As Long
Declare Function ListNext Lib "afdnn32.dll"_
(ListNext As AFDStringType, FieldName As AFDStringType, ByVal Flags As
Long) As Long
Usage
| ListRec.Value = "$SMITH" |
| FieldName.Value = "surname" |
| nnFlags& = RETURN_ALL_RECORDS |
| 'Initiate the List Search |
| Result& = wListFirst(ListRec, FieldName, nnFlags&) |
| If Result& > 0 then |
| 'Place first value in a list |
| List1.Additem trim$(ListRec.Value) |
| Do |
| Result& = wListNext(ListRec, FieldName, nnFlags&) |
| If Result& > 0 then |
| 'Place next value in the list |
| List1.Additem trim$(ListRec.Value) |
| end if |
| 'Keep going until no more - or cancelled |
| Loop until Result&<0 or Cancel |
| End If |
ListRec
A record of type AFDStringType containing the field value you wish to
list.
FieldName
A record of type AFDStringType containing the name of the field you wish
to list (names correspond to the field names of the nnRecType record).
nnFlags
A Long Integer flag value available to alter the behaviour of ListFirst & ListNext
- currently it should always be set to RETURN_ALL_RECORDS.
Result
A long Integer return value. If positive, indicates success - and the
value for your list will be contained in ListRec.Value:
Returns:
| Pocket Names & Numbers | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
![]() |
| Manual Contents | ||||||||||||||||||
| ||||||||||||||||||
![]() |
| Appendix | ||||||||||||
| ||||||||||||
![]() |