Make a backup file: Difference between revisions

Applesoft BASIC
(Added 11l)
(Applesoft BASIC)
Line 23:
f.close()</lang>
 
=={{header|Applesoft BASIC}}==
Due to all the pitfalls in this task it is helpful to turn on debugging by default. It is also helpful, to show each DOS 3.3 Command, by entering MON C before running the program. There is an extra PRINT statement in line 540 to work-around an issue with the display of DOS 3.3 commands after an error occurs. Setting ERASEANYBACKUP will delete the backup file if it already exists. Delete lines 180 to 230 with DEL 180,230 and it is possible with DOS 3.3 to have backup files all with the same name due to a pitfall in the RENAME Command.
<lang gwbasic> 100 ERASEANYBACKUP = FALSE
110 DEBUG = NOT FALSE
120 F$ = "FILE"
130 LET B$ = "BACKUP " + F$
140 LET D$ = CHR$ (4)
150 N$ = F$
160 GOSUB 400"FILE EXISTS?"
170 IF NOT E GOTO 260"MAKE NEW FILE"
180 N$ = B$
190 GOSUB 400"FILE EXISTS?"
200 IF NOT E GOTO 240"KEEP FILE AS BACKUP FILE"
210 IF DEBUG AND NOT ERASEANYBACKUP THEN PRINT " *** "B$" WON'T BE DELETED.";
220 IF NOT ERASEANYBACKUP THEN STOP
230 PRINT D$"DELETE "B$
 
240 IF DEBUG THEN PRINT " >>> MAKING A BACKUP FILE."
250 PRINT D$"RENAME "F$","B$
 
260 IF DEBUG THEN PRINT " >>> MAKING A NEW FILE."
270 PRINT D$"OPEN "F$
280 PRINT D$"WRITE "F$
290 PRINT "THE NEW CONTENT OF THE FILE."
300 PRINT D$"CLOSE "F$
310 END
 
400 ONERR GOTO 500"CATCH"
410 PRINT D$"VERIFY "N$
420 POKE 216,0: REM ONERR OFF
430 LET E = 1
440 IF DEBUG THEN PRINT " <<< "N$" EXISTS."
450 RETURN
500 LET E = PEEK (222) < > 6
510 POKE 216,0: REM ONERR OFF
520 IF E THEN RESUME : REM THROW
530 CALL - 3288: REM RECOVER
540 PRINT
550 IF DEBUG THEN PRINT " <<< "N$" DOES NOT EXIST."
560 RETURN</lang>
<lang>DELETE FILE
DELETE BACKUP FILE
MON C</lang>
<lang gwbasic>RUN</lang>
{{out}}
<pre>
VERIFY FILE
<<< FILE DOES NOT EXIST.
>>> MAKING A NEW FILE.
OPEN FILE
WRITE FILE
CLOSE FILE
</pre>
<lang gwbasic>RUN</lang>
{{out}}
<pre>
VERIFY FILE
<<< FILE EXISTS.
VERIFY BACKUP FILE
<<< BACKUP FILE DOES NOT EXIST.
>>> MAKING A BACKUP FILE.
RENAME FILE,BACKUP FILE
>>> MAKING A NEW FILE.
OPEN FILE
WRITE FILE
CLOSE FILE
</pre>
<lang gwbasic>RUN</lang>
{{out}}
<pre>
VERIFY FILE
<<< FILE EXISTS.
VERIFY BACKUP FILE
<<< BACKUP FILE EXISTS.
*** BACKUP FILE WON'T BE DELETED.
BREAK IN 220
</pre>
=={{header|AutoHotkey}}==
<lang autohotkey>targetfile := "ahk-file"
413

edits