WLISTU
From Pickwiki
Jump to navigationJump to searchFFT.BP 'WLISTU' BASIC 71 lines Level: 3
* * Writen Aug 2012 by Will Johnson * This routine sorts the LISTU table by date and then by time * Builds a multi-sub-valued table, so the times get sorted right * Then swaps the SVMs for VMs so it becomes a regular table * Then it also allows you to resort it by PID * EQUATE FALSE TO 0, TRUE TO 1 TODAY = DATE() ; THIS.YEAR = OCONV(TODAY,'DY') SWITCH = "DATE" ; EXIT.PROGRAM = FALSE LOOP EXECUTE "LISTU", OUT > RESULTS SELECTV RESULTS TO L.RESULTS DONE = FALSE ; CNT = 0 ; HEADERS = ; TABLE = LOOP READNEXT LINE FROM L.RESULTS ELSE DONE = TRUE UNTIL DONE DO CNT += 1 T.PID = LINE[16,5] T.TIMEDATE = LINE[62,13] T.DATE = OCONV(T.TIMEDATE,'G0 2'):' ':THIS.YEAR T.TIME = OCONV(T.TIMEDATE,'G2 1') IF SWITCH = "DATE" THEN GOSUB BY.DATE.AND.TIME IF SWITCH = "PID" THEN GOSUB BY.PID REPEAT TABLE<1> = HEADERS:@VM:TABLE<1> TABLE = CONVERT(@SVM,@VM,TABLE) * S.TABLE = DCOUNT(TABLE<1>,@VM) FOR I.TABLE = 1 TO S.TABLE IF TABLE<1,I.TABLE> # THEN PRINT I.TABLE'R%2':' ':TABLE<1,I.TABLE> END NEXT I.TABLE DISPLAY "SORT BY (D)ATE, (P)ID, OR (Q)UIT ": ; INPUT ANYTHING BEGIN CASE CASE ANYTHING = 'Q' ; EXIT.PROGRAM = TRUE CASE ANYTHING = 'P' ; SWITCH = 'PID' CASE ANYTHING = 'D' ; SWITCH = 'DATE' END CASE UNTIL EXIT.PROGRAM DO REPEAT STOP * BY.DATE.AND.TIME: I.DATE = ICONV(T.DATE,'D') ; I.TIME = ICONV(T.TIME,'MT') IF STATUS() THEN HEADERS<1,-1> = LINE END ELSE LOCATE I.DATE IN TABLE<2,1> BY 'AR' SETTING W.DATE ELSE TABLE = INSERT(TABLE,1,W.DATE;) TABLE = INSERT(TABLE,2,W.DATE;I.DATE) TABLE = INSERT(TABLE,3,W.DATE;) END LOCATE I.TIME IN TABLE<3,W.DATE,1> BY 'AR' SETTING W.TIME ELSE NULL END TABLE = INSERT(TABLE,1,W.DATE,W.TIME;LINE) TABLE = INSERT(TABLE,3,W.DATE,W.TIME;I.TIME) END RETURN * BY.PID: IF NUM(T.PID) THEN T.PID = TRIM(T.PID) + 0 LOCATE T.PID IN TABLE<2,1> BY 'AR' SETTING W.PID ELSE NULL TABLE = INSERT(TABLE,1,W.PID;LINE) TABLE = INSERT(TABLE,2,W.PID;T.PID) END ELSE HEADERS<1,-1> = LINE RETURN * END