'=========================================================================== ' Subject: STRIP LEADING TABS FROM FILE Date: 06-27-98 (00:00) ' Author: PowerBASIC, Inc. Code: PBCC ' Origin: ftp.powerbasic.com Packet: PBCC.ABC '=========================================================================== '============================================================================= ' ' Strip leading tabs from a text file. ' Copyright (c) 1998 by PowerBASIC, Inc. All Rights Reserved. ' '============================================================================= '----------------------------------------------------------------------------- ' FUNCTION Exist(BYVAL Filenam AS STRING) AS LONG FUNCTION = LEN(DIR$(Filenam)) > 0 END FUNCTION '----------------------------------------------------------------------------- ' MakeBAK - Rename a file with a .BAK extension and return the new filename ' ' Filename = Name of the file to rename. ' ' Returns: ' Name of file with .BAK extension. ' FUNCTION MakeBAK(BYVAL Filename AS STRING) AS STRING DIM Bak AS STRING DIM Dot AS LONG Bak = Filename '*** Add BAK extension *** Dot = INSTR(Bak, ".") IF Dot = 0 THEN Bak = Bak + ".BAK" ELSE Bak = LEFT$(Bak, Dot) + "BAK" END IF '*** If .BAK file already exists, kill it *** IF Exist(Bak) THEN KILL Bak END IF '*** Rename file *** NAME Filename AS Bak '*** Return the new file name *** FUNCTION = Bak END FUNCTION '---------------------------------------------------------------------------- ' ArgC - Return the number of arguments passed in string of command ' arguments (such as COMMAND$). ' ' Cmd = COMMAND$, or string of command arguments ' FUNCTION ArgC(BYVAL Cmd AS STRING) AS LONG DIM arg AS LONG DIM f AS STRING DIM q AS LONG DO WHILE LEN(cmd) INCR arg f = LEFT$(cmd, 1) IF ASC(f) = 34 THEN q = INSTR(MID$(cmd,2), CHR$(34)) IF q THEN f = LEFT$(cmd, q+1) ELSE f = cmd END IF ELSE f = f + EXTRACT$(MID$(cmd,2), ANY CHR$(34)+" /") END IF cmd = LTRIM$(MID$(cmd, len(f)+1)) LOOP FUNCTION = arg END FUNCTION '---------------------------------------------------------------------------- ' ArgV - Return the specified command line argument passed in a string of ' command arguments (such as COMMAND$). ' ' Which = Number of argument to return. ' Cmd = COMMAND$, or string of command arguments ' FUNCTION ArgV(BYVAL Which AS LONG, BYVAL Cmd AS STRING) AS STRING DIM arg AS LONG DIM f AS STRING DIM q AS LONG DO WHILE LEN(cmd) INCR arg f = LEFT$(cmd, 1) IF ASC(f) = 34 THEN q = INSTR(MID$(cmd,2), CHR$(34)) IF q THEN f = LEFT$(cmd, q+1) ELSE f = cmd END IF ELSE f = f + EXTRACT$(MID$(cmd,2), ANY CHR$(34)+" /") END IF cmd = LTRIM$(MID$(cmd, len(f)+1)) IF arg = which THEN EXIT DO ELSE f = "" END IF LOOP FUNCTION = f END FUNCTION '---------------------------------------------------------------------------- FUNCTION PbMain() AS LONG LOCAL Filename AS STRING LOCAL InFile AS STRING LOCAL Buffer AS STRING LOCAL Temp AS STRING LOCAL Spaces AS LONG LOCAL x AS LONG STDOUT "DETAB v1.0 þ Strip Leading Tabs from Text Files" STDOUT "Copyright (c) 1998 by PowerBASIC, Inc. All Rights Reserved." STDOUT "" IF ArgC(COMMAND$) = 0 THEN STDOUT "Usage: DETAB filename [spaces]" FUNCTION = 1 EXIT FUNCTION END IF Filename = ArgV(1, COMMAND$) IF ArgC(COMMAND$) = 2 THEN Spaces = VAL( ArgV(2, COMMAND$) ) ELSE Spaces = 2 'default to two spaces END IF IF NOT Exist(Filename) THEN STDOUT "Error! " + Filename + " does not exist." FUNCTION = 2 EXIT FUNCTION END IF Infile = MakeBAK(Filename) 'back up the original file OPEN Infile FOR INPUT AS #1 OPEN Filename FOR OUTPUT AS #2 WHILE NOT EOF(1) LINE INPUT #1, Buffer Temp = "" FOR x = 1 TO LEN(Buffer) IF ASC(Buffer) <> 9 THEN 'if char is not a tab EXIT FOR 'then exit the loop END IF Temp = Temp + SPACE$(Spaces) Buffer = MID$(Buffer, 2) NEXT x PRINT #2, Temp + Buffer WEND CLOSE #2 CLOSE #1 STDOUT "Done!" END FUNCTION