False positive report example code

The following code is an example of how to implement DPV and LACSLink false positive reporting using the C language:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define GEOSTAN_PROPERTIES
#include "geostan.h"
int
main(int argc, pstr * argv)
{
 
  GsId gs;
  GsFunStat retcode;
  char buffer[GS_MAX_STR_LEN];
  char buffer2[GS_MAX_STR_LEN];
  FILE * DPVfalsPosOut;   /* DPV false positive file pointer */
  FILE * LACSfalsPosOut;  /* LACSLink false positive file pointer */
  GsFalsePosHeaderData FPheaderData; /* DPV/LACSLink false positive
                                     header record */
  GsFalsePosDetailData FPdetailData; /* DPV/LACSLink false positive
                                     detail record */
  char * mailerName = "Precisely";
  char * mailerAddress = "4750 WALNUT ST STE 200";
  char * mailerCity = "BOULDER";
  char * mailerState = "CO";
  char * mailerZip = "803012532";
 
   PropList initProps;
  PropList statusProps;
  PropList findProps;
  qbool bVal;
 
   GsPropListCreate( &initProps, GS_INIT_PROP_LIST_TYPE );
 
   // Replace paths and keys with your installation
   GsPropSetStr( &initProps, GS_INIT_DPV_SECURITYKEY,
      "1237-5678-9abc-def0" );
   GsPropSetStr( &initProps, GS_INIT_DPV_DIRECTORY,
"C:\\Program Files\\Precisely\\Datasets\\Current" );
   GsPropSetLong( &initProps, GS_INIT_DPV_DATA_ACCESS,
     DPV_DATA_FULL_FILEIO );
  GsPropSetBool( &initProps, GS_INIT_DPV, TRUE );
   GsPropSetStr( &initProps, GS_INIT_LACSLINK_SECURITY_KEY,
     "1237-5678-9abc-def0" );
   GsPropSetStr( &initProps, GS_INIT_LACSLINK_DIRECTORY,
"C:\\Program Files\\Precisely\\Datasets\\Current" );
  GsPropSetBool( &initProps, GS_INIT_LACSLINK, TRUE );
   GsPropSetStr( &initProps, GS_INIT_SUITELINK_DIRECTORY,
"C:\\Program Files\\Precisely\\Datasets\\Current" );
  GsPropSetBool( &initProps, GS_INIT_SUITELINK, TRUE );
   GsPropSetLong( &initProps, GS_INIT_GSVERSION,
     GS_GEOSTAN_VERSION );
   GsPropSetBool( &initProps, GS_INIT_OPTIONS_ADDR_CODE, TRUE );
   GsPropSetBool( &initProps, GS_INIT_OPTIONS_Z9_CODE, TRUE );
   GsPropSetStr( &initProps, GS_INIT_DATAPATH,
"C:\\Program Files\\Precisely\\Datasets\\Current" );
   GsPropSetStr( &initProps, GS_INIT_Z4FILE,
"C:\\Program Files\\Precisely\\Datasets\\Current\\us.z9" );
  GsPropSetLong( &initProps, GS_INIT_PASSWORD, 12345678 );
  GsPropSetLong( &initProps, GS_INIT_CACHESIZE, 2 );
   GsPropSetStr( &initProps, GS_INIT_LICFILENAME,
"C:\\Program Files\\Precisely\\Geolib\\Geostan.lic" );
 
  GsPropListWrite( &initProps, "stdout", NULL, 0 );
  GsPropListCreate( &statusProps, GS_STATUS_PROP_LIST_TYPE );
 
   /* initialize GeoStan */
  gs = GsInitWithProps( &initProps, &statusProps );
  GsPropListWrite( &statusProps, "stdout", 0, 0 );
  while ( GsErrorHas(gs) )
  {
 
     GsErrorGetEx (gs, buffer, buffer2);
printf ("%s\n%s\n", buffer, buffer2);
  }
 
  if ( gs == 0 )
  {
 
printf( "GeoStan failed to initialize.\n" );
     exit(1);
  }
 
   // Verify DPV loaded correctly
   retcode = GsPropGetBool( &statusProps,
     GS_STATUS_DPV_FILE_SECURITY, &bVal );
  if ( GS_SUCCESS == retcode )
  {
 
     if ( !bVal )
     {
printf( "DPV security key failed to verify.\n" );
     }
      else if ( GS_SUCCESS == GsPropGetBool(&statusProps,
        GS_STATUS_DPV_FILE_ALL, &bVal) )
     {
        if ( !bVal )
printf( "DPV data failed to initialize.\n" );
     }
 
  }
 
 
   retcode = GsPropGetBool( &statusProps,
     GS_STATUS_LACSLINK_FILE_SECUR, &bVal );
  if ( GS_SUCCESS == retcode )
  {
     if ( !bVal )
     {
printf( "LACSLink security key failed to verify.\n" );
     }
      else if ( GS_SUCCESS == GsPropGetBool(&statusProps,
        GS_STATUS_LACSLINK_FILE_ALL, &bVal) )
     {
        if ( !bVal )
printf( "LACSLink data failed to initialize.\n" );
     }
 
  }
 
 
    retcode = GsPropGetBool( &statusProps,
     GS_STATUS_SUITELINK_FILE_ALL, &bVal );
  if ( GS_SUCCESS == retcode )
  {
     if ( !bVal )
 
printf( "SuiteLink data failed to initialize.\n" );
  }
 
 
  GsPropListCreate( &findProps, GS_FIND_PROP_LIST_TYPE );
  GsPropSetBool( &findProps, GS_FIND_ADDRCODE, TRUE );
  GsPropSetBool( &findProps, GS_FIND_Z9_CODE, TRUE );
  GsPropSetBool( &findProps, GS_FIND_FINANCE_SEARCH, TRUE );
  GsPropSetLong( &findProps, GS_FIND_MATCH_MODE, GS_MODE_CASS );
 
  GsClear( gs );
  GsDataSet( gs, GS_FIRM_NAME, "DIXIES DAISYS FLOWER SERVICE");
  GsDataSet( gs, GS_ADDRLINE, "74203 PERRANIA");
  GsDataSet( gs, GS_LASTLINE, "GRANT CO 80448");
  retcode = GsFindWithProps( gs, &findProps );
 
  GsPropListWrite( &findProps, "stdout", 0, 0 );
  while ( GsErrorHas(gs) )
  {
 
     GsErrorGetEx (gs, buffer, buffer2);
printf ("%s\n%s\n", buffer, buffer2);
  }
 
    GsDataGet(gs, GS_OUTPUT, GS_DPV_FALSE_POS, buffer,
     sizeof(buffer));
   if ( *buffer == 'Y' )
  {
 
      /*
         A DPV false positive occurred.
        Write a false positive report
     */
     DPVfalsPosOut = fopen("DPVfalsePos.rpt", "w");
     if ( DPVfalsPosOut )
     {
 
        /* Get the false positive header data */
        memset(&FPheaderData, 0, sizeof(FPheaderData));
        strcpy(FPheaderData.MailersCompanyName, mailerName);
        strcpy(FPheaderData.MailersAddressLine, mailerAddress);
        strcpy(FPheaderData.MailersCityName, mailerCity);
        strcpy(FPheaderData.MailersStateName, mailerState);
        strcpy(FPheaderData.Mailers9DigitZip, mailerZip);
         GsDpvGetFalsePosHeaderStats(gs, &FPheaderData,
           sizeof(FPheaderData));
        /* Format the false positive header data */
         retcode = GsFormatDpvFalsePosHeader( gs,&FPheaderData,
           sizeof(FPheaderData), buffer, sizeof(buffer) );
        /* Write the header to the false positive file */
        if (retcode == GS_SUCCESS)
        {
 
fprintf( DPVfalsPosOut,"%s\n", buffer );
        }
        else
        {
 
           GsErrorGetEx(gs, buffer, buffer2);
           printf( "Error calling GsFormatDpvFalsePosHeader:"
"\n%s\n%s\n", buffer, buffer2 );
        }
 
        /* Get the false positive detail data */
         retcode = GsDpvGetFalsePosDetail(gs, &FPdetailData,
           sizeof(FPdetailData));
        if (retcode != GS_SUCCESS)
        {
 
           GsErrorGetEx(gs, buffer, buffer2);
           printf( "Error calling GsDpvGetFalsePosDetail:"
"\n%s\n%s\n",
              buffer, buffer2);
        }
 
        /* Format the false positive detail data */
         retcode = GsFormatDpvFalsePosDetail(gs, &FPdetailData,
           sizeof(FPdetailData), buffer, sizeof(buffer));
        /* Write the detail to the false positive file */
        if (retcode == GS_SUCCESS)
        {
 
fprintf( DPVfalsPosOut,"%s\n", buffer );
        }
        else
        {
           GsErrorGetEx(gs, buffer, buffer2);
           printf( "Error calling GsFormatDpvFalsePosDetail:"
"\n%s\n%s\n",
              buffer, buffer2);
        }
 
        fclose(DPVfalsPosOut);
     }
     else
     {
 
        printf("Failed to open DPV false positive file "
"(errno =%d).\n", errno);
     }
 
  }
 
 
  GsClear( gs );
  GsDataSet( gs, GS_ADDRLINE, "RR 1 BOX 6300");
  GsDataSet( gs, GS_LASTLINE, "MOUNT SIDNEY VA 24467");
  retcode = GsFindWithProps( gs, &findProps );
 
   GsDataGet(gs, GS_OUTPUT, GS_LACSLINK_IND, buffer,
     sizeof(buffer));
   if (*buffer == 'F')
  {
 
      /*
         A LACSLink false positive occurred.
        Write a false positive report */
     LACSfalsPosOut = fopen("LACSfalsePos.rpt", "w");
     if ( LACSfalsPosOut )
     {
 
        /* Get the false positive header data */
        memset(&FPheaderData, 0, sizeof(FPheaderData));
        strcpy(FPheaderData.MailersCompanyName, mailerName);
        strcpy(FPheaderData.MailersAddressLine, mailerAddress);
        strcpy(FPheaderData.MailersCityName, mailerCity);
        strcpy(FPheaderData.MailersStateName, mailerState);
        strcpy(FPheaderData.Mailers9DigitZip, mailerZip);
         GsLACSGetFalsePosHeaderStats(gs, &FPheaderData,
           sizeof(FPheaderData));
        /* Format the false positive header data */
        retcode = GsFormatLACSFalsePosHeader(gs, &FPheaderData,
                                  sizeof(FPheaderData), buffer,
                                 sizeof(buffer));
        /* Write the header to the false positive file */
        if (retcode == GS_SUCCESS)
        {
 
fprintf( LACSfalsPosOut,"%s\n", buffer );
        }
        else
        {
 
           GsErrorGetEx(gs, buffer, buffer2);
           printf("Error calling GsFormatLACSFalsePosHeader:"
"\n%s\n%s\n", buffer,
              buffer2);
        }
 
        /* Get the false positive detail data */
        retcode = GsLACSGetFalsePosDetail(gs, &FPdetailData,
           sizeof(FPdetailData));
        if (retcode != GS_SUCCESS)
        {
 
           GsErrorGetEx(gs, buffer, buffer2);
           printf("Error calling GsLACSGetFalsePosDetail:"
"\n%s\n%s\n", buffer,
              buffer2);
        }
 
        /* Format the false positive detail data */
        retcode = GsFormatLACSFalsePosDetail(gs, &FPdetailData,
           sizeof(FPdetailData), buffer, sizeof(buffer));
        /* Write the detail to the false positive file */
        if (retcode == GS_SUCCESS)
        {
 
fprintf( LACSfalsPosOut,"%s\n", buffer );
        }
        else
        {
 
           GsErrorGetEx(gs, buffer, buffer2);
           printf("Error calling GsFormatDpvFalsePosDetail:"
"\n%s\n%s\n", buffer,
              buffer2);
        }
 
        fclose(LACSfalsPosOut);
     }
     else
     {
 
        printf("Failed to open LACSLink false positive file"
" (errno =%d).\n", errno);
     }
 
  }
 
 
  GsTerm( gs );
  GsPropListDestroy( &findProps );
  GsPropListDestroy( &initProps );
  GsPropListDestroy( &statusProps );
 
  return 0;
}

Reporting a false positive address

You report false positive address matches and obtain a new security key in the same manner for both DPV and LACSLink. You must provide the false positive report file to Precisely to obtain a replacement security key.

To report a false positive address match and obtain a new security key:

  1. Go to Precisely Support atsupport.precisely.com.

  2. Log into the site, by entering your user ID and password.

    Note: If you do not know your user ID and password for the support Website, select the Need Your User ID or Password link. Enter your email address as instructed. Precisely will email the user ID and password if your email address exactly matches the email in the Precisely customer database.
  3. Click My Products from the column on the left of the Precisely Support site. A screen appears with a listing of all of your Precisely software products.

  4. Click on the appropriate product name. A screen appears with the platforms available for the product.

  5. Select View Details from the right-most column. A screen appears with detailed information for the platform.

  6. Select Download DPV or Download LACSLink in the Database section. A window appears asking you for specific information.

  7. Enter your old license key and attach your false-positive file by clicking the Browse button.

  8. When prompted, save the file that contains the new security key to your machine.

You can now use the new security key located in the file you downloaded from the Precisely Support site when prompted by your application.

If you need assistance, open a Support case athttps://support.precisely.com/casemanagement/.Have your false-positive file ready to provide to the Precisely representative.