Load from one file and write to another

A simple demo to show how to read from one file and write to another in BBC BASIC for Windows.  In this case, the program also demonstrates the use of a single user-defined function.

In pseudocode the program works as follows:

  open file for reading (input)
  open file for writing (ouput)
  while not at the end of the file:
      read next word in the input file
      reverse the word
      write the reversed word into the output file
  close both files

I tested this program using a dictionary file of over 100000 English words and the output can be seen below:


Full source code follows:

     REM T Street
     REM 2014-12-12
     REM reads each word from a file, reverses it and
     REM then dumps it back into a new file

     
ON ERROR ERROR 0, "Oh dear, something went wrong "+REPORT$

     REM filenames
     
Filename_input$ = "<put filename here>.txt" : REM change this
     
Filename_output$ = "reversed.txt"

     REM carriage return line feed
     
CRLF$ = CHR$(13)+CHR$(10)

     REM open up the file for reading
     
FileIn% = OPENUP( Filename_input$ )
     FileOut% = OPENOUT( Filename_output$ )

     REM some helpful comments
     
PRINT "Reading from " Filename_input$
     PRINT "Reversing words..."

     REM the M A I N  L O O P
     REM ---------------------
     
WHILE NOT(EOF#FileIn%)
       REM read in each word
       
INPUT#FileIn%, word$

       REM reverse it
       
reversedWord$ = FN_reverseMe( word$ )

       REM write to new file
       
PRINT#FileOut%, reversedWord$+CRLF$
     ENDWHILE

     
REM now finished with every word
     REM so close both the files


     
CLOSE#FileIn%
     CLOSE#FileOut%

     REM finish up
     
PRINT "Done - saved to " Filename_output$

     STOP




     
DEFFN_reverseMe( aString$ )
     REM reverses the string passed as parameter
     REM and returns it
     
LOCAL i%
     LOCAL myNewString$
     REM step backwards through the string
     REM look at each character in sequence
     
FOR i% = LEN(aString$) TO 1 STEP -1
       REM add on the current character
       
myNewString$ += MID$( aString$, i%, 1)
     NEXT
     
= myNewString$