Today's functoid is one which I've created in the past for several clients working with BizTalk 2004 and flat files, especially position files.  Often you will encounter a situation where the disassembler will give you a value of "         ".  In BTS 2006 you have the option of setting a fill character that is ignored by the disassembler, but on '04 you've got to deal with this in the map.

The premise then in simple, to avoid the common pattern of a Trim -> Size -> Greater Than -> Value Mapping we roll up the first three of these into this single functoid.  The code is presented below, and you can follow the link to the source code download.

Download TimRayburn.CustomFunctoids v1.0

    9     class TrimmedValueExistsFunctoid : BaseFunctoid
   10     {
   11         public TrimmedValueExistsFunctoid(): base()
   12         {
   13             // Assign a "unique" id to this functiod
   14             this.ID = 24603;
   15 
   16             // Setup the resource assembly to use.
   17             SetupResourceAssembly(
   18               "TimRayburn.CustomFunctoids.CustomFunctoidsResources",
   19               Assembly.GetExecutingAssembly());
   20 
   21             SetName("IDS_TRIMMEDVALUEEXISTSFUNCTOID_NAME");
   22             SetTooltip("IDS_TRIMMEDVALUEEXISTSFUNCTOID_TOOLTIP");
   23             SetDescription("IDS_TRIMMEDVALUEEXISTSFUNCTOID_DESCRIPTION");
   24             SetBitmap("IDB_TRIMMEDVALUEEXISTSFUNCTOID_BITMAP");
   25 
   26             this.SetMinParams(1);
   27             this.SetMaxParams(1);
   28 
   29             SetExternalFunctionName(this.GetType().Assembly.FullName,
   30               "TimRayburn.CustomFunctoids.TrimmedValueExistsFunctoid",
   31               "TrimmedValueExists");
   32 
   33             this.Category = FunctoidCategory.Logical;
   34             this.OutputConnectionType = ConnectionType.AllExceptRecord;
   35 
   36             AddInputConnectionType(ConnectionType.AllExceptRecord);
   37         }
   38         public string TrimmedValueExists(string inputVal)
   39         {
   40             if (inputVal.Length.Equals(0))
   41               return "true";
   42             else
   43             {
   44               string trimmedVal = inputVal.Trim();
   45               if (trimmedVal.Length.Equals(0))
   46                     return "true";
   47               else
   48                     return "false";
   49             }
   50         }
   51     }