a228arig@cdfb.utoronto (Tak Ariga) (04/19/87)
Can anyone inform me how I can find out if a given file exists on the
disk or not through a BASIC (or a ML routine) program? I have this
simple data base program that I wrote, and I don't want to overwrite
files.
Right now, I am using VERIFY to see if the file name exists. If it doesn't
exists (the desired case), it causes an error. I use ONERR GOTO and use
an error handling routine to deal with it. The problem is, it seems to
clear some GOSUB stacks, and when it encounters a RETURN, it comes back
with 'RETURN WITHOUT GOSUB ERROR', even though it was within a subroutine.
I know this is a VERY bad way of doing things, but I wrote it when I was
still in high school and knew very little of programming, and the only
way I could figure out how to do it.
I imagine I have to read the VTOC nicely, but I don't know how to do that.
Help please. Thanks.
--Tak
-----------------------------------------------------------------------------
UUCP: {utzoo, decvax, ihnp4, cbosgd, utcsri, mnetor}!utgpu!utcdfa!a228arig
ARPAnet: a228arig%cdfa.toronto.edu@relay.cs.net
CSnet: a228arig%cdfa.toronto.edu
BITNET: a228arig@utcdfa.UTORONTO
== University of Toronto -- Toronto, Canada ==
-----------------------------------------------------------------------------god3@sphinx.uchicago.edu (Peter Godwin) (04/21/87)
In article <8704190657.AA12796@cdfb.toronto.edu>, a228arig@cdfb.utoronto (Tak Ariga) writes: > > Can anyone inform me how I can find out if a given file exists on the > disk or not through a BASIC (or a ML routine) program? > > Right now, I am using VERIFY to see if the file name exists. If it doesn't > exists (the desired case), it causes an error. I use ONERR GOTO and use > an error handling routine to deal with it. The problem is, it seems to > clear some GOSUB stacks, and when it encounters a RETURN, it comes back > with 'RETURN WITHOUT GOSUB ERROR', even though it was within a subroutine. There are two ways I can think of doing this. One is obtaining an ampersand routine &gosub &return which will maintain the stack when an error occurs. Many utilities which make use of the ampersand vector have such a routine. This method, however, is probably not what you want. Another way to find a file on disk is to read the entire directory off of the disk with a subroutine and toss the list of files into an array. I use such a routine in a Teacher Grading program I wrote and it works well. If you (or anyone else for that matter) would like to know how this is done, I would be glad to put the routine on a disk if you send me one w/ return postage. Peter Godwin | ...ihnp4!gargoyle!sphinx!god3 Univ. of Chicago Comp Ctr | x9.xpg@uchicago 5824 S. Kimbark Ave, #2419 | god3%sphinx@uchicago Chicago, IL 60637 | Phone #: 312-288-1816 -- Peter Godwin | ...ihnp4!gargoyle!sphinx!god3 Univ. of Chicago Comp Ctr | x9.xpg@uchicago 5824 S. Kimbark Ave, #2419 | god3%sphinx@uchicago Chicago, IL 60637 | Phone #: 312-288-1816
nakada@husc4.HARVARD.EDU (paul nakada) (04/21/87)
>> Can anyone inform me how I can find out if a given file exists on the >> disk or not through a BASIC (or a ML routine) program? >> >> Right now, I am using VERIFY to see if the file name exists. If it doesn't >> exists (the desired case), it causes an error. I use ONERR GOTO and use >> an error handling routine to deal with it. The problem is, it seems to >> clear some GOSUB stacks, and when it encounters a RETURN, it comes back >> with 'RETURN WITHOUT GOSUB ERROR', even though it was within a subroutine. This problem is easily overcome using basic. The key to it is understanding the error handling in the apple. The ONERR GOTO statement is not a conditional gosub statement. It does, although save the current program location. After the proper error correcting statements are executed in the error routine (in this case, the creation of a file) a RESUME command should be executed and not a RETURN. This will return to the point of the error where the error has been corrected. Hope this helps... paul nakada nakada@husc4.harvard.edu nakada@harvsc4.BITNET