* Filma Top 10 * Mozhno budet eshe sdelat' 'top according to...' 'TOP' 'NOMSG /€­¤àí' IF RC>0 THEN CALL ABORT '€­¤àí not found' Y.=''; X.=''; N.='' Z=''; J=''; P=''; A='' DO I=1 'NOMSG /' IF RC>0 THEN LEAVE L=CURLINE.3() PARSE VAR L '

' N.I '

' N.I=STRIP(N.I) 'NOMSG /0 THEN CALL ABORT '' X.1.I '' X.2.I '' X.3.I '' X.4.I /**'POINT .TTT'; 'SET DEBUGG ON'; 'LOCATE .TTT'; TRACE ?R */ DO J=1 TO 4 X.J.I=STRIP(X.J.I) X=X.J.I IF ^DATATYPE(X,'N') THEN X='&NBSP' IF POS('+',X)>0 THEN DO X=LEFT(X,1) || '.25' /* for example, 4+ will count as 4.25, and 5- as 4.75 */ END IF POS('-',X)>0 THEN DO X=LEFT(X,1)-1 || '.75' END X.J.I=X IF X.J.I<>'&NBSP' THEN Y.J=Y.J X.J.I END END NU=I-1 'NOMSG ERASE AVERAGE.TMP' DO I=1 TO 4 'PUT LINE AVERAGE.TMP' Y.I END 'DOSQUIET AVERAGE' F=FILEID.1() 'X AVERAGE.TMP' DO I=1 TO SIZE.1() ':'I Y.I=CURLINE.3() IF Y.I='' THEN Y.I=3 /* sredn'aja ocenka, esli net nikakih */ END /** Average scores are now in Y.I */ 'QQUIT' 'X' F /* Now we can get to calcing filma scores */ 'NOMSG ERASE AVERAGE.TMP' /**'POINT .TTT'; 'SET DEBUGG ON'; 'LOCATE .TTT'; TRACE ?R */ DO I=1 TO NU DO J=1 TO 4 IF X.J.I='' | X.J.I='&NBSP' THEN X.J.I=Y.J /* when no score, use this person's average */ END 'PUT LINE AVERAGE.TMP' X.1.I X.2.I X.3.I X.4.I END 'DOSQUIET AVERAGE' /* This BREXX prg will replace lines in AVERAGE.TMP with their average values */ F=FILEID.1() /* Now in this file we have average scores by filma */ 'X AVERAGE.TMP' DO I=1 TO SIZE.1() ':'I L=CURLINE.3() 'R' LEFT(L,10) LINE.1() /* store line numbers, so that we still know what filma */ /* we are talking about after sorting */ END 'SORT ALL DESC' /* descending order */ DROP X. Y. Z P J A /**'POINT .TTT'; 'SET DEBUGG ON'; 'LOCATE .TTT'; TRACE ?R */ 'NOMSG ERASE TOP.HTM' PAY='PUT LINE TOP.HTM' PAY '
' PAY '
# Name Score' DO I=1 TO 10 ':'I IF RC>0 THEN LEAVE L=CURLINE.3() PARSE VAR L S.I U /* scores and numbers */ S.I=STRIP(S.I) U=STRIP(U) T.I=N.U PAY '
' I '' T.I '' STRIP(SUBSTR(S.I,1,3)) END PAY '
' 'X TOP.HTM' EXIT *GET ABORT ABORT: PROCEDURE *Version 2.01 - show current module name PARSE ARG A PARSE SOURCE . . ME . PARSE VAR ME ME '.' IF A<>'' THEN 'ALERT' DELIMIT(A) 'TITLE' DELIMIT(UPPER(ME)) EXIT RETURN