Code:
' ' NumeraPB ' ' Add line numbers to a PB/CC source to help ' locate errors ' ' Quick adaptation from a tool of mine that works on ' QuickBASIC sources. Tested a bit only with PB/CC. ' May works with PB/Win, maybe with minor modifications ' ------------------------------------------------------ $DIM ALL %TRUE = -1 %FALSE = 0 $ProgramVer = "1.00" ' --- Titoli SUB Header DIM sTitle AS STRING sTitle = "NumeraPB v" & $ProgramVer & " - Add line numbers to a PB/CC source" STDOUT STDOUT sTitle STDOUT STRING$(LEN(sTitle), "-") END SUB ' --- Main program FUNCTION PBMAIN CALL Header DIM sBasName AS STRING ' Source file name DIM sBasNameNum AS STRING DIM fIn AS LONG ' Sources files handles DIM fOut AS LONG DIM sText AS STRING ' Current line text DIM lNum AS LONG ' Line number counter DIM fNumera AS LONG ' Flag - number the line DIM fOutBlock AS LONG ' Flag - Out of a non-numerable block DIM sPrefix AS STRING ' Prefix to be added to the output line DIM sToken AS STRING ' First and second tokens of the line DIM sToken2 AS STRING DIM lTotLines AS LONG ' Counters DIM lModLines AS LONG DIM lTotLab AS LONG sBasName = COMMAND$ IF DIR$(sBasName) = "" THEN STDOUT "File not found: <" & sBasName & ">" EXIT FUNCTION END IF fIn = FREEFILE OPEN sBasName FOR INPUT AS #fIn LEN=16384 sBasNameNum = sBasName & ".num" STDOUT "Output file: " & sBasNameNum fOut = FREEFILE OPEN sBasNameNum FOR OUTPUT AS #fOut LEN=16384 fOutBlock = %TRUE DO WHILE NOT EOF(fIn) LINE INPUT #fIn, sText$ INCR lNum sToken$ = UCASE$(LTRIM$(RTRIM$(sText$), ANY " " & CHR$(9))) sToken2$ = "" IF sToken$ = "" THEN fNumera = %FALSE ELSEIF INSTR("'#$%", LEFT$(sToken$, 1)) THEN fNumera = %FALSE ELSE sToken2$ = PARSE$(sToken$, ANY " (,", 2) sToken$ = PARSE$(sToken$, ANY " (,", 1) IF RIGHT$(sToken$, 1) = ":" THEN fNumera = %FALSE INCR lTotLab ELSEIF VERIFY(sToken$, "0123456789") = 0 THEN fNumera = %FALSE INCR lTotLab ELSE SELECT CASE sToken$ CASE "DECLARE", "REM", "CONST" fNumera = %FALSE CASE "SELECT", "CASE" fNumera = %FALSE CASE "DEF", "DEFINT", "DEFLNG", "DEFCUR", "DEFSNG", "DEFDBL" fNumera = %FALSE CASE "TYPE", "MACRO" fOutBlock = %FALSE fNumera = %FALSE CASE "END" IF (sToken2$ = "TYPE") OR (sToken2$ = "MACRO") THEN fOutBlock = %TRUE END IF CASE ELSE IF fOutBlock = %TRUE THEN fNumera = %TRUE ELSE fNumera = %FALSE END IF END SELECT END IF END IF INCR lTotLines IF fNumera = %TRUE THEN sPrefix$ = RIGHT$(STR$(10000 + lNum), 5) INCR lModLines ELSE sPrefix$ = SPACE$(5) END IF sText$ = sPrefix$ & " " & sText$ PRINT #fOut, sText$ LOCATE ,1 STDOUT LEFT$(sText$, 78); IF RIGHT$(RTRIM$(sText$, ANY CHR$(0, 9, 32)), 1) = "_" THEN PRINT:WAITKEY$ fOutBlock = %FALSE END IF LOOP CLOSE fOut CLOSE fIn STDOUT SPACE$(78); LOCATE ,1 STDOUT "Labels found:" & STR$(lTotLab) STDOUT "Total/Modified Lines:" & STR$(lTotLines) & "/" & LTRIM$(STR$(lModLines)) STDOUT "Finished!" ' WAITKEY$ END FUNCTION
Try Online TrID file identifier! Recognize over 2.100 filetypes and counting...

Give a powerfull scriptable Lua interface to your application with PowerBLua
Leakout - Firewall outbound control tester - BitmapRip Extract/recover bitmaps from any file!
[This message has been edited by Marco Pontello (edited October 27, 2006).]