...
END;
    END;
    PROCEDURE FindNAC@1000005(Name@1000001 : Code[80];Address@1000002 : Code[80];City@1000003 : Code[80];"Source Type"@1000004 : Integer;VAR SourcenumberFound@1000005 : Code[20]) found@1000000 : Boolean;
    VAR
      NameResultTemp@1000006 : TEMPORARY Record 11000008;
      AddressResultTemp@1000007 : TEMPORARY Record 11000008;
      CityResultTemp@1000008 : TEMPORARY Record 11000008;
    BEGIN
      found := FALSE;
      IF (Name = '') OR (Address = '') OR (City = '') THEN
        EXIT(FALSE);
      NameResultTemp.SETCURRENTKEY("Source Type", "Source No.");
      AddressResultTemp.SETCURRENTKEY("Source Type", "Source No.");
      CityResultTemp.SETCURRENTKEY("Source Type", "Source No.");
      TempRec.SETRANGE("Source Type","Source Type");
      TempRec.SETRANGE("Data Type",TempRec."Data Type"::Name);
      TempRec.SETRANGE(Word,COPYSTR(Name,1,MAXSTRLEN(TempRec.Word)));
      IF TempRec.FIND('-') THEN
        REPEAT
          NameResultTemp := TempRec;
          NameResultTemp.INSERT;
        UNTIL TempRec.NEXT = 0;
      TempRec.RESET;
      TempRec.SETRANGE("Source Type","Source Type");
      TempRec.SETRANGE("Data Type",TempRec."Data Type"::Street);
      TempRec.SETRANGE(Word,COPYSTR(Address,1,MAXSTRLEN(TempRec.Word)));
      IF TempRec.FIND('-') THEN
        REPEAT
          NameResultTemp.SETRANGE("Source Type",TempRec."Source Type");
          NameResultTemp.SETRANGE("Source No.",TempRec."Source No.");
          IF NameResultTemp.FIND('-') THEN BEGIN
            AddressResultTemp := NameResultTemp;
            AddressResultTemp.INSERT;
          END;
        UNTIL TempRec.NEXT = 0;
      TempRec.RESET;
      TempRec.SETRANGE("Source Type","Source Type");
      TempRec.SETRANGE("Data Type",TempRec."Data Type"::City);
      TempRec.SETRANGE(Word,COPYSTR(City,1,MAXSTRLEN(TempRec.Word)));
      IF TempRec.FIND('-') THEN
        REPEAT
          AddressResultTemp.SETRANGE("Source Type",TempRec."Source Type");
          AddressResultTemp.SETRANGE("Source No.",TempRec."Source No.");
          IF AddressResultTemp.FIND('-') THEN BEGIN
            CityResultTemp := AddressResultTemp;
            CityResultTemp.INSERT;
          END;
        UNTIL TempRec.NEXT = 0;
      IF CityResultTemp.FIND('-') THEN BEGIN
        SourcenumberFound := CityResultTemp."Source No.";
        found := CityResultTemp.NEXT = 0;
      END;
    END;
...
...
END;
    END;
    PROCEDURE FindSourceNoByNAC@1000005(Name@1000001 : Code[80];Address@1000002 : Code[80];City@1000003 : Code[80];SourceType@1000004 : Option;VAR FoundSourceNo@1000005 : Code[20]) Found@1000000 : Boolean;
    VAR
      TempFoundRecBuf@1000006 : TEMPORARY Record 11000008;
    BEGIN
      IF (Name = '') AND (Address = '') AND (City = '') THEN
        EXIT(FALSE);
      IF FindSourceNoByDataType(TempRec."Data Type"::Name,Name,TempFoundRecBuf,SourceType,FoundSourceNo) THEN
        EXIT(TRUE);
      IF FindSourceNoByDataType(TempRec."Data Type"::Street,Address,TempFoundRecBuf,SourceType,FoundSourceNo) THEN
        EXIT(TRUE);
      IF FindSourceNoByDataType(TempRec."Data Type"::City,City,TempFoundRecBuf,SourceType,FoundSourceNo) THEN
        EXIT(TRUE);
      EXIT(FALSE);
    END;
    LOCAL PROCEDURE FindSourceNoByDataType@1000016(DataType@1000001 : Option;Value@1000002 : Code[80];VAR TempFoundRecBuf@1000003 : TEMPORARY Record 11000008;SourceType@1000005 : Option;VAR FoundSourceNo@1000000 : Code[20]) FoundOne : Boolean;
    BEGIN
      IF Value = '' THEN
        EXIT(FALSE);
      TempRec.RESET;
      TempFoundRecBuf.RESET;
      IF TempFoundRecBuf.ISEMPTY THEN
        FoundOne := CollectMatches(SourceType,DataType,Value,TempFoundRecBuf) = 1
      ELSE
        FoundOne := CollectDependentMatches(DataType,Value,TempFoundRecBuf) = 1;
      IF FoundOne THEN BEGIN
        TempFoundRecBuf.FINDFIRST;
        FoundSourceNo := TempFoundRecBuf."Source No.";
      END;
    END;
...