BBS: Inland Empire Archive Date: 04-26-92 (10:43) Number: 122 From: TOM GRIFFIN Refer#: 34 To: SCOTT GREEN Recvd: NO Subj: A Question Conf: (2) Quik_Bas
SG> I wanted to back up a random access file before I used it. I couldn't
SG> figure out how to copy the file to another file with a
SG> new name. At first I
SG> tried to come up with a copy like command from basic,
SG> but couldn't find any.
SG> Then I tried to load it as a sequential file, but realized, it would still
SG> only write over the file already on the hard drive.
SG> Then I thought with the
SG> system command I might be able to write a "mini batch"
SG> command to hide withi
SG> my program.
SG> I do not want to have to write an exterior batch command. It's not
SG> important enough for me to write a whole routine dedicated to copying the
SG> file. But I am wondering if there was just stuff I
SG> didn't know. Are there
SG> such commands in basic? Can you have batch like
SG> commands after calling the
SG> system in basic? How do you do it?
Two approaches come into mind. The first is simple and crude. The second
has no error detection or correction.
First Example:
SHELL "COPY infile.dat outfile.dat"
Second Example:
DECLARE SUB CopyFile (InFile$, OutFile$, FileType, RecLen)
Main:
PRINT "File Copy"
PRINT
PRINT "Enter Source File: ";
LINE INPUT InFile$
PRINT
PRINT "Enter Destination File: ";
LINE INPUT OutFile$
PRINT
PRINT "Select File Type:"
PRINT " 1). Sequential"
PRINT " 2). Random/Binary"
PRINT " Q). Quit this abomination of programming"
PRINT " "
PRINT " Selection (1/2/Q): ";
LINE INPUT Temp$
SELECT CASE Temp$
CASE "1"
FileType = 1
RecLen = 0
CALL CopyFile(InFile$, OutFile$, FileType, RecLen)
CASE "2"
PRINT
PRINT "Enter Record Length (<32767): ";
LINE INPUT Temp$
RecLen = VAL(Temp$)
FileType = 2
CALL CopyFile(InFile$, OutFile$, FileType, RecLen)
CASE "Q", "q"
END
END SELECT
END
'End of main module
SUB CopyFile (InFile$, OutFile$, FileType, RecLen)
SELECT CASE FileType
CASE 1 'Sequential Stuff
InFileHandle = FREEFILE
OPEN InFile$ FOR INPUT AS InFileHandle
OutFileHandle = FREEFILE
OPEN OutFile$ FOR OUTPUT AS OutFileHandle
WHILE NOT EOF(1)
INPUT #InFileHandle, Temp$
PRINT #OutFileHandle, Temp$
WEND
CLOSE
CASE 2
InFileHandle = FREEFILE
OPEN InFile$ FOR RANDOM AS InFileHandle LEN = RecLen
OutFileHandle = FREEFILE
OPEN OutFile$ FOR RANDOM AS OutFileHandle LEN = RecLen
FIELD #OutFileHandle, RecLen AS Temporary$
FOR Temp = 1 TO LOF(1) / RecLen
GET InFileHandle, Temp, Temporary$
PUT OutFileHandle, Temp, Temporary$
NEXT Temp
CLOSE
CASE ELSE
PRINT "Error in parameter passing. Check FileType variable."
CLOSE
END SELECT
END SUB
--- GEcho/beta
* Origin: Trinity ]I[ BBS þ RemoteAccess v1.11+ Node #@ þ (1:147/2777)

Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET