mirror of
https://github.com/PDP-10/its.git
synced 2026-04-25 20:01:40 +00:00
156 lines
3.9 KiB
Plaintext
156 lines
3.9 KiB
Plaintext
<PACKAGE "CRIME">
|
||
|
||
<ENTRY COMBAT-STATS GATHER SORTEM PRINTEM>
|
||
|
||
<SETG MYOBS ,CRIME!-PACKAGE>
|
||
|
||
<SETG CDT 1>
|
||
|
||
<SETG CUSR 2>
|
||
|
||
<SETG CTYP 3>
|
||
|
||
<SETG CRES 4>
|
||
|
||
<SETG CTIM 5>
|
||
|
||
<MANIFEST CDT CUSR CTYP CRES CTIM>
|
||
|
||
<GDECL (PLANNERS) <LIST [REST ATOM]> (TOTAL) <VECTOR ATOM [4 FIX]>>
|
||
|
||
"Read and grovel a file full of data about COMBATs. Each item of
|
||
data looks like:
|
||
|
||
[(date time) uname RIOT/PLAN WON/LOST cputime]
|
||
"
|
||
|
||
<DEFINE COMBAT-STATS ("OPTIONAL" (IN "DSK:COMPIL;COMPIL MAIL")
|
||
(OUT "DSK:COMPIL STATS")
|
||
"AUX" OUTCHAN TMP)
|
||
#DECL ((IN OUT) STRING (OUTCHAN) <SPECIAL <OR CHANNEL FALSE>>)
|
||
<COND (<SET TMP <GATHER .IN>>
|
||
<SORTEM .TMP 5>
|
||
<COND (<SET OUTCHAN <OPEN "PRINT" .OUT>>
|
||
<PRINTEM .TMP>
|
||
<PRINC <ASCII 12>>
|
||
<CLOSE .OUTCHAN>)>
|
||
"DONE")>>
|
||
|
||
<DEFINE GATHER (FIL "AUX" (IN <OPEN "READ" .FIL>) U)
|
||
#DECL ((FIL) STRING (IN) <OR CHANNEL FALSE> (U) <OR VECTOR FALSE>)
|
||
<COND (.IN
|
||
<SETG PLANNERS ()>
|
||
<SETG TOTAL [TOTAL 0 0 0 0]>
|
||
<REPEAT ()
|
||
<BLOCK ,MYOBS>
|
||
<SET U <READ .IN '<>>>
|
||
<COND (.U <UPDATE .U>)
|
||
(ELSE <CLOSE .IN> <ENDBLOCK> <RETURN>)>>
|
||
<MAPF ,UVECTOR
|
||
<FUNCTION (X "AUX" (Y <GETPROP .X DATA>))
|
||
#DECL ((X) ATOM (Y) VECTOR)
|
||
<PUT .Y 3 </ <* <3 .Y> 100> <2 .Y>>>
|
||
<PUT .Y 4 </ <* <4 .Y> 100> <2 .Y>>>>
|
||
,PLANNERS>)>>
|
||
|
||
<DEFINE UPDATE (DATA "AUX" (OLD <GETPROP <CUSR .DATA> DATA>))
|
||
#DECL ((DATA) <VECTOR LIST [3 ATOM] FLOAT>
|
||
(OLD) <VECTOR ATOM [4 FIX]>)
|
||
<COND (<NOT <MEMQ <CUSR .DATA> ,PLANNERS>>
|
||
<SETG PLANNERS (<CUSR .DATA> !,PLANNERS)>
|
||
<PUTPROP <CUSR .DATA>
|
||
DATA
|
||
<SET OLD [<CUSR .DATA> 0 0 0 0]>>)>
|
||
<PUT .OLD 2 <+ <2 .OLD> 1>>
|
||
<COND (<==? <CTYP .DATA> RIOT> <PUT .OLD 3 <+ <3 .OLD> 1>>)>
|
||
<COND (<==? <CRES .DATA> LOST> <PUT .OLD 4 <+ <4 .OLD> 1>>)>
|
||
<PUT .OLD 5 <+ <5 .OLD> <FIX <CTIM .DATA>>>>>
|
||
|
||
<DEFINE SORTEM (DATA N)
|
||
#DECL ((DATA) <UVECTOR [REST VECTOR]> (N) <SPECIAL FIX>)
|
||
<SORT <FUNCTION (X Y) <L? <NTH .X .N> <NTH .Y .N>>> .DATA>>
|
||
|
||
<DEFINE PRINTEM (DATA "AUX" (TOT ,TOTAL))
|
||
#DECL ((DATA) <UVECTOR [REST VECTOR]> (TOT) <VECTOR ATOM [4 FIX]>)
|
||
<TERPRI>
|
||
<MAPR <>
|
||
<FUNCTION (X)
|
||
#DECL ((X) <VECTOR [REST FIX]>)
|
||
<PUT .X 1 0>>
|
||
<REST .TOT>>
|
||
<PRINC
|
||
"NAME____ COMBATS_______ %RIOT_____ %LOSE_____ AV TIM______ TOT TIM_______
|
||
">
|
||
<BLOCK ,MYOBS>
|
||
<MAPF <>
|
||
<FUNCTION (X)
|
||
#DECL ((X) <VECTOR ATOM [4 FIX]>)
|
||
<LINPR .X>
|
||
<MAPR <>
|
||
<FUNCTION (D T)
|
||
#DECL ((D T) <VECTOR [REST FIX]>)
|
||
<PUT .T 1 <+ <1 .T> <1 .D>>>>
|
||
<REST .X>
|
||
<REST .TOT>>>
|
||
.DATA>
|
||
<TERPRI>
|
||
<PUT .TOT 3 </ <3 .TOT> <LENGTH .DATA>>>
|
||
<PUT .TOT 4 </ <4 .TOT> <LENGTH .DATA>>>
|
||
<LINPR .TOT>
|
||
<TERPRI>
|
||
<ENDBLOCK>
|
||
,NULL>
|
||
|
||
<DEFINE LINPR (X)
|
||
#DECL ((X) <VECTOR ATOM [4 FIX]>)
|
||
<PRINT <1 .X>>
|
||
<INDENT-TO 8>
|
||
<NUMPR <2 .X>>
|
||
<INDENT-TO 16>
|
||
<NUMPR <3 .X>>
|
||
<INDENT-TO 24>
|
||
<NUMPR <4 .X>>
|
||
<INDENT-TO 32>
|
||
<TIMPR </ <5 .X> <2 .X>>>
|
||
<INDENT-TO 42>
|
||
<TIMPR <5 .X>>>
|
||
|
||
<DEFINE NUMPR (N)
|
||
#DECL ((N) FIX)
|
||
<COND (<L? .N 10> <PRINC " ">)
|
||
(<L? .N 100> <PRINC " ">)
|
||
(<L? .N 1000> <PRINC " ">)
|
||
(<L? .N 10000> <PRINC " ">)
|
||
(<L? .N 100000> <PRINC " ">)
|
||
(<L? .N 1000000> <PRINC " ">)
|
||
(<L? .N 10000000> <PRINC " ">)>
|
||
<PRINC .N>>
|
||
|
||
<DEFINE TIMPR (N
|
||
"AUX" (HH </ .N 3600>) (MM </ <MOD .N 3600> 60>)
|
||
(SS <MOD .N 60>))
|
||
#DECL ((N HH MM SS) FIX)
|
||
<PRINC " ">
|
||
<FOOPR .HH>
|
||
<COND (<NOT <0? .HH>> <PRINC ":">) (ELSE <PRINC " ">)>
|
||
<COND (<0? .HH> <FOOPR .MM>) (ELSE <BARPR .MM>)>
|
||
<COND (<AND <0? .HH> <0? .MM>> <PRINC " ">)
|
||
(ELSE <PRINC ":">)>
|
||
<COND (<AND <0? .HH> <0? .MM>> <FOOPR .SS>)
|
||
(ELSE <BARPR .SS>)>
|
||
,NULL>
|
||
|
||
<DEFINE FOOPR (HH)
|
||
#DECL ((HH) FIX)
|
||
<COND (<0? .HH> <PRINC " ">)
|
||
(<L? .HH 10> <PRINC " "> <PRINC .HH>)
|
||
(ELSE <PRINC .HH>)>>
|
||
|
||
<DEFINE BARPR (HH)
|
||
#DECL ((HH) FIX)
|
||
<COND (<0? .HH> <PRINC "00">)
|
||
(<L? .HH 10> <PRINC "0"> <PRINC .HH>)
|
||
(ELSE <PRINC .HH>)>>
|
||
|
||
<ENDPACKAGE>
|
||
|