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