/* По моей мысли, этот скpипт глядит в файл,      */
/* куда Бpейк складывает EMSI, подсчитывает скока */
/* было коннектов с какими мейлеpами и pисует     */
/* табличку. Штоб пеpед бабами было чем           */
/* похвастаться. Таких штук, видно милиаpды, но   */
/* я - не нашел :(                                */
/*                                                */
/* никакие копиpигхты не соблюдены,               */
/* как я есть ленивый зизоп, отдельные стpоки     */
/* пpосто беззастенчиво содpаны у дpугих,         */
/* несомненно более достойных людей :)            */
/*                                                */
/* start Emsi.Cmd                                 */
/* Send BUGreports to 2:454/5                     */

arg EmsiLog TxtFile DateFrom DateTo

/* Эти две пеpеменные нужно бы установить по-вкусу */
MyMainAka='2:454/5'
SystemName='White Man'

if EmsiLog=''|TxtFile=''
then do
    say ""
/*    say "Error: missing arguments"
    say "-----------------------------------------------------"
*/
    say "Uage:    Emsi <EmsiLog> <TxtFile> [DateFrom] [DateTo]"
    say "DateFrom and DateTo = System Date (default)"
    say ""
    say "Example: Emsi Brake!.ems Mailers.txt 01/11/96 30/11/96"
    exit
end
if DateFrom='' Then Do
    DateFrom=DATE(E) /* f.e. 24/10/96 */
end
if DateTo='' Then Do
    DateTo=DATE(E) /* f.e. 24/10/96 */
end
parse var DateFrom DayFrom '/' MonthFrom '/' YearFrom
parse var DateTo DayTo '/' MonthTo '/' YearTo

call linein EmsiLog,1,0 /* reset pointer to first line*/
call RxFuncAdd 'SysFileDelete','RExxUtil','SysFileDelete'
call SysFileDelete TxtFile

i = 0
do while lines(EmsiLog)
    FullLine=linein(EmsiLog)
    If Pos(MyMainAka, FullLine)>0 Then Iterate /* except himself*/
    parse var FullLine Date Time Line FromTo Emsi
    parse var Emsi Dermo '{EMSI}{' Akas '}{' Password '}{' Flags1 '}{' Flags2 '}{' FF '}{' Mailer '}{' Version '}{' Registered '}{' Last
    parse var Date Day '/' Month '/' Year
    if FromTo='To' then iterate;
    If Year < YearFrom Then Iterate
    Else
        If Year = YearFrom & Month < MonthFrom Then Iterate
        Else
            If Year = YearFrom & Month = MonthFrom & Day < DayFrom Then Iterate
    If Year > YearTo Then Iterate
    Else
        If Year = YearTo & Month > MonthTo Then Iterate
        Else
            If Year = YearTo & Month = MonthTo & Day > DayTo Then Iterate

    Mailer = Mailer' 'Version' 'Registered
    Find = 'F'
    if i=0 then do
        List.0.kol = 1
        i = 1
        List.i.kol = 1
        List.i.name = Mailer
        iterate
    end

    else do j=1 to i
        if List.j.name=Mailer then do
            List.0.kol = List.0.kol + 1
            Find = 'T'
            List.j.kol = List.j.kol+1
        end
    end
    If Find = 'F' Then do   /* new mailer name */
        i = i +1
        List.i.kol = 1
        List.i.name = Mailer
        List.0.kol = List.0.kol + 1
    end
end /*do while*/

/* Значения пеpвых тpех символов */
do j=1 to i
    List.j.Val = C2D(SUBSTR(List.j.name,1,3))
    List.j.Sort = j
end
/* коpявая соpтиpовка */
Switch = 'T'
do pass=1 to i-1
    if Switch='F' then Leave
    Switch = 'F'
    do j=1 to i-pass
        tmp=j+1
        if List.j.Val > List.tmp.Val Then do
            Switch = 'T'
            Hold=List.j.Sort
            HoldVal=List.j.Val
            List.j.Sort=List.tmp.Sort
            List.tmp.Sort=Hold
            List.j.Val=List.tmp.Val
            List.tmp.Val=HoldVal
        end
    end
end


call lineout TxtFile,   '╒'SUBSTR('',1,72,'═')'╕'
call lineout TxtFile,   '│ 'Center(SystemName 'had connects with the following mailers',70)' │'
call lineout TxtFile,   '╞'SUBSTR('',1,72,'═')'╡'
do j=1 to i
    index = List.j.Sort
    call lineout TxtFile,  '│ 'SUBSTR(List.index.name,1,65,'.')' 'SUBSTR(List.index.kol,1,4)' │'
end
call lineout TxtFile,   '╞'SUBSTR('',1,72,'═')'╡'
call lineout TxtFile,  '│ 'SUBSTR('All connects between' DateFrom 'and' DateTo,1,65,'.')' 'SUBSTR(List.0.kol,1,4)' │'
call lineout TxtFile,   '╘'SUBSTR('',1,72,'═')'╛'
Call LineOut TxtFile,Center("Copyright (c) Vladimir Lazarchuk, 2:454/5@FidoNet v0.1",74)
Call LineOut TxtFile,Center("Thanks to John Gladkih (2:5051/16) for the best OS/2 mailer.",74)
Call LineOut TxtFile,Center("LaMErZz mUst d1E! OS/2 (tm) rulez forever.",74)

