/*
** $VER: Cyclone UserList v1.0 by Dave Naylor
*/

    if ~show('L','traplist.library') then do
    if ~addlib('traplist.library',0,-30,0) then do
    Write '"Could not access traplist.library!"'
    exit 20
    end
end

if( ~show( 'l', "rexxreqtools.library" ) ) then do
    if( ~addlib( "rexxreqtools.library", 0, -30, 0 ) )then do
        say "Could not open rexxreqtools.library"
        exit 10
    end
end

    Options Results

    address 'CYC.1'

    'lockgui'

    'getareaname'

    Areaname = RESULT

    Temp    = 'T:'
    Subj = 'Echo User List'
    Header  = '  Generated by Cyclone UserList 1.0 by Dave Naylor'
        
        call open(SIP,Temp||'Users.'Areaname,'W')

        'getnummsgs'

        MSGNUM = RESULT

        'firstmessage'

        'progressopen PROMPT "Scanning Messages" TITLE "UserList 1.0"'
        'progressupdate TOTAL 'MSGNUM' CURRENT 1'
        preq = result
        do i = 1 to MSGNUM

        getfrom
        FROM.i = RESULT
        getfromaddress
        FROMADDR.i = RESULT

                    Fromm = left(FROM.i,16)
                    Addy = left(FROMADDR.i,15)
                    Addy = left(Addy, 12, " ")
                    Baddy = strip(Addy)
                    zero = right(Baddy,2)
                    if zero ~= '.0' then do
                        pos = pos('.',Baddy)
                        nod = left(Baddy,pos)
                        Baddy = nod||'0'
                    end
                    Details = FindNode(Baddy,system)
                    Details = Delstr(Details,1,2)
                    Details = left(Details, 24, ".")
                    Dutails = FindNode(Baddy,Location)
                    Dutails = Delstr(Dutails,1,2)
                    Dutails = left(Dutails, 18, " ")

                    call writeln(SIP,'  |' Fromm ' |'  Addy '|' Details Dutails' |')

                    'getmsgnum'
                    WHERE = RESULT
                    if MSGNUM > WHERE then do
                    'nextmessage'
                    end
                    'progressupdate preq TOTAL 'MSGNUM' CURRENT 'WHERE''
        end

        'progressclose'

        nard    = 0
        UNUM    = 0

        call close(SIP)

        Address Command 'Sort 'Temp'Users.'Areaname' to 'Temp'Users.'Areanamei''

        call open(SIP,Temp||'Users.'Areanamei,'R')
        call open(NIP,Temp||'Users.'Areanamenew,'W')
        call writeln(NIP,'')
        call writeln(NIP,Header)
        call writeln(NIP,'  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~')
        call writeln(NIP,'')
        call writeln(NIP,'  Number of messages scanned : 'MSGNUM'             ')
        call writeln(NIP,'')
        Areaname = left(Areaname, 20, " ")
        call writeln(NIP, '  +--------------------------------------------------------------------------------+')
        call writeln(NIP, '  | User Listing for Echo: 'Areaname'                                    |')
        call writeln(NIP, '  +-------------------+--------------+---------------------------------------------+')
        call writeln(NIP, '  | Name              | Address      | BBS Details                                 |')
        call writeln(NIP, '  +-------------------+--------------+---------------------------------------------+')
        do while ~eof(SIP)

            line  = readln(SIP)
            sline = left(line,20)
            node  = strip(sline)

            if nard ~= node then do

                if node ~= '' then writeln(NIP,line)
                UNUM  = UNUM + 1

            end

            nard = node
        end
        call writeln(NIP, '  +-------------------+--------------+---------------------------------------------+')
        UNUM = UNUM - 1
        UNUM = left(UNUM, 4, " ")
        call writeln(NIP, '  | User Count : 'UNUM' |')
        call writeln(NIP, '  +-------------------+')
        call writeln(NIP,'')
        
        call writeln(NIP,'')
        call close(SIP)
        call close(NIP)

        Address Command 'Delete >Nil: 'Temp'Users.'Areaname' 'Temp'Users.'Areanamei' QUIET'

        Save = rtezrequest('Post or Save to Ram:','_Post|_Save|_Cancel','UserList ',
               ,"rt_reqpos = reqpos_centerscr")

        Address 'CYC.1'

        Select

        When Save = 0 then do
            'unlockgui'
            exit
        end

        When Save = 1 then do

            file = Temp||'Users.'Areanamenew

            'write TO "All" SUBJECT "'Subj'" FILE "'file'" ORIGIN '"ORAGIN"' NOGUI NOINT NOEDIT'

        end

        When Save = 2 then Address Command 'Copy >Nil: 'Temp'Users.'Areanamenew' TO Ram:MM_UserList.txt'

        otherwise nop

        end

        Address Command 'Delete >Nil: 'Temp'Users.'Areanamenew' QUIET'

        Address 'CYC.1'

        'unlockgui'

        exit
        





