Most native string implementations use null pointer semantics, which means that they differentiate between empty strings (pointers to "") and null strings (null pointers).
To write wrapper functions for external functions in BDL that have optional string parameters, null pointer semantics are also implemented for BDL strings.
dll "some.dll"
  "ApiFunc"
    function ApiFunc(in dstring optional);
dclfunc
  function ApiFuncWrapper(theString : string optional)
  begin
    ApiFunc(theString);
  end T1;
dcltrans
  transaction TMain
  begin
    ApiFuncWrapper();
  end TMain;In cases where the optional parameter is omitted, external functions expect a NULL as the optional dstring parameter. Also if a string variable is set to NULLusing the StrSetNull() function, external functions expect NULL rather than DSTRING objects.