I figured it out. Here it is in case anyone wants to see it.
Code:
CREATE PROCEDURE usp_RRGetUsersOnLine  --- 2003/09/17
    @loginame     sysname = NULL
as

set nocount on
declare
    @retcode         int

declare
    @sidlow         varbinary(85)
   ,@sidhigh        varbinary(85)
   ,@sid1           varbinary(85)
   ,@spidlow         int
   ,@spidhigh        int

declare
    @charMaxLenLoginName      varchar(6)
   ,@charMaxLenDBName         varchar(6)
   ,@charMaxLenCPUTime        varchar(10)
   ,@charMaxLenDiskIO         varchar(10)
   ,@charMaxLenHostName       varchar(10)
   ,@charMaxLenProgramName    varchar(10)
   ,@charMaxLenLoginTime      varchar(10)
   ,@charMaxLenCommand        varchar(10)

declare
    @charsidlow              varchar(85)
   ,@charsidhigh             varchar(85)
   ,@charspidlow              varchar(11)
   ,@charspidhigh             varchar(11)
--------

select
    @retcode         = 0      -- 0=good ,1=bad.

--------defaults
select @sidlow = convert(varbinary(85), (replicate(char(0), 85)))
select @sidhigh = convert(varbinary(85), (replicate(char(1), 85)))

select
    @spidlow         = 0
   ,@spidhigh        = 32767

--------------------  Capture consistent sysprocesses.  -------------------

SELECT
  spid
 ,status
 ,sid
 ,hostname
 ,program_name
 ,cmd
 ,cpu
 ,physical_io
 ,blocked
 ,dbid
 ,convert(sysname, rtrim(loginame))
        as loginname
 ,spid as 'spid_sort'
 , substring( convert(varchar,login_time,111) ,6  ,5 ) +
  ' '  + substring( convert(varchar,login_time,113) ,13 ,8 ) as 'login_time_char'
      INTO    #tb1_sysprocesses
      from master.dbo.sysprocesses   (nolock)
      where program_name = 'MyProgram'

--------Screen out any rows?
IF (@loginame IN ('active'))
   DELETE #tb1_sysprocesses
         where   lower(status)  = 'sleeping'

--------Prepare to dynamically optimize column widths.
Select
    @charsidlow     = convert(varchar(85),@sidlow)
   ,@charsidhigh    = convert(varchar(85),@sidhigh)
   ,@charspidlow     = convert(varchar,@spidlow)
   ,@charspidhigh    = convert(varchar,@spidhigh)

SELECT
             @charMaxLenLoginName =
                  convert( varchar
                          ,isnull( max( datalength(loginname)) ,5)
                         )
            ,@charMaxLenDBName    =
                  convert( varchar
                          ,isnull( max( datalength( rtrim(convert(varchar(128),db_name(dbid))))) ,6)
                         )
            ,@charMaxLenCPUTime   =
                  convert( varchar
                          ,isnull( max( datalength( rtrim(convert(varchar(128),cpu)))) ,7)
                         )
            ,@charMaxLenDiskIO    =
                  convert( varchar
                          ,isnull( max( datalength( rtrim(convert(varchar(128),physical_io)))) ,6)
                         )
            ,@charMaxLenCommand  =
                  convert( varchar
                          ,isnull( max( datalength( rtrim(convert(varchar(128),cmd)))) ,7)
                         )
            ,@charMaxLenHostName  =
                  convert( varchar
                          ,isnull( max( datalength( rtrim(convert(varchar(128),hostname)))) ,8)
                         )
            ,@charMaxLenProgramName =
                  convert( varchar
                          ,isnull( max( datalength( rtrim(convert(varchar(128),program_name)))) ,11)
                         )
            ,@charMaxLenLoginTime =
                  convert( varchar
                          ,isnull( max( datalength( rtrim(convert(varchar(128),login_time_char)))) ,9)
                         )
      from
             #tb1_sysprocesses
      where
             spid >= @spidlow
             and    spid <= @spidhigh

--------Output the report.
 
EXECUTE(
'
SET nocount off

SELECT
             SPID          = convert(char(5),spid)

            ,Login         = substring(loginname,1,' + @charMaxLenLoginName + ')
            ,HostName      =
                  CASE hostname
                     When Null  Then ''  .''
                     When '' '' Then ''  .''
                     Else    substring(hostname,1,' + @charMaxLenHostName + ')
                  END
            ,DBName        = substring(case when dbid = 0 then null when dbid <> 0 then db_name(dbid) end,1,' + @charMaxLenDBName + ')
            ,CPUTime       = substring(convert(varchar,cpu),1,' + @charMaxLenCPUTime + ')
            ,DiskIO        = substring(convert(varchar,physical_io),1,' + @charMaxLenDiskIO + ')
           ,LoginTime     = substring(login_time_char,1,' + @charMaxLenLoginTime + ')
            ,ProgramName   = substring(program_name,1,' + @charMaxLenProgramName + ')
      from
             #tb1_sysprocesses  --Usually DB qualification is needed in exec().
      where
             (spid >= ' + @charspidlow  + '
      and    spid <= ' + @charspidhigh + ')
      -- (Seems always auto sorted.)   order by spid_sort

SET nocount on
'
)

LABEL_86RETURN:
if (object_id('tempdb..#tb1_sysprocesses') is not null)
            drop table #tb1_sysprocesses

return @retcode -- usp_RRGetUsersOnLine  
GO