• Thanks Bevan and John for the explanation. 

    I had a chance to use it in a real scenario today but I hit a snag with Null values.      At some point the code evaluates something like:
    ...CAST( ISNULL( [COLUMN], '' ) AS  char(37) )  ...

    The trouble arises if COLUMN value is Null.    If COLUMN is a uniqueidentifer (but Null)  then the ISNULL substitution fails because the string '' cannot be converted to uniqueidentifer.   Adding another cast can fix this, albeit not very elegantly:
       CAST( ISNULL(  CAST([COLUMN] AS varchar(max)) , '' ) AS char(37) )  

    At least, that's what I did.   A more difficult problem is if a date type is Null.   The empty string can be converted to a date, but it becomes zero which in the old date types is Jan 1 1900.  So Null date columns appear as Jan 1 1900 or parts thereof depending on the column width.    I didn't have any Null date values in my sample so I didn't tackle this.

    After that first small change the output was just what I wanted.

    And more grist to the ASCII supporters' mill!    In recent months I've seen code for representing output as (a)  a CEEFAX (Teletext) screen, and (b) a Solari airport-style mechanical display.