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).]