(****************************************************** ** PROGRAM TITLE: FILE_CLOSE_DEMONSTRATION ** ** WRITTEN BY: Raymond E. Penley ** DATE WRITTEN: 22 JAN 1980 ** Modified for Pascal/Z vers 3.0 ** 25 June 1980 ** ** SUMMARY: ** Demonstrate the three methods of closing files ** with Pascal. ** ** 1. Using a file variable in a block. ** 2. Reusing a file variable with another file ** identifier (file name) to close the currently ** open file before opening the new file. ** 3. Normal program termination will close ALL ** open files. (This is NOT the preferred method) ** *******************************************************) PROGRAM FCLOSE; var IX : INTEGER; wrk1 : TEXT; { Global file descriptor } Procedure PAUSE; var du: char; begin write('Press return to continue'); readln(du); end; Procedure CLEAR; var ix: 1..25; begin for ix:=1 to 25 do writeln; end; PROCEDURE A; VAR F1 : TEXT; BEGIN CLEAR; writeln('FILE CLOSE METHOD #1'); writeln; writeln('USING A FILE VARIABLE LOCAL TO A "BLOCK"'); writeln('WILL CLOSE THE FILE(S) UPON EXIT OF THE BLOCK'); writeln('This is the preferred method!'); writeln; writeln(' PROCEDURE A;'); writeln(' VAR F1 : TEXT;'); writeln(' BEGIN'); writeln(' REWRITE(''CTESTA.$$$'',F1);'); writeln(' ... BODY OF PROCEDURE ...'); writeln(' END; { CLOSE(F1) }'); writeln; writeln('UPON EXITING THIS PROCEDURE WE WILL CLOSE'); writeln('THE FILE ''CTESTA.$$$'' AND FIX IT ON THE DIRECTORY'); REWRITE('CTESTA.$$$', F1); writeln(F1, 'PROCEDURE A'); writeln; PAUSE; END; { CLOSE(F1) } Procedure B; begin CLEAR; REWRITE('CTESTQQ.$$$',WRK1); writeln(WRK1,'CTESTQQ.$$$ THIS IS CURRENTLY OPEN FILE'); writeln('FILE CLOSE METHOD #2'); writeln; writeln('Reusing the same file variable with a new file'); writeln('identifier will close the currently'); writeln('open file before opening the new file'); writeln; writeln(' begin'); writeln(' REWRITE(''CTESTQQ.$$$'',WRK1);'); writeln(' writeln(WRK1,''THIS IS THE CURRENTLY OPEN FILE'');'); writeln(' writeln(''NOW TO CLOSE CTESTQQ.$$$ AND OPEN'');'); writeln(' writeln(''CTESTZZ.$$$'');'); writeln(' REWRITE(''CTESTZZ.$$$'',WRK1);'); writeln(' writeln(''CTESTZZ.$$$ IS NOW THE CURRENT FILE'');'); writeln(' end;'); writeln; REWRITE('CTESTZZ.$$$',WRK1); writeln(WRK1,'CTESTZZ.$$$ IS NOW THE CURRENT FILE'); writeln; PAUSE; end; BEGIN CLEAR; writeln('FILE CLOSE DEMONSTRATION FOR PASCAL/Z'); writeln('by Raymond E. Penley'); FOR IX:=1 TO 12 DO writeln; FOR IX:=1 TO 5000 DO {DUMMY} ; A; {--- Method #1 ---} B; {--- Method #2 ---} {--- Method #3 ---} CLEAR; writeln('FILE CLOSE METHOD #3'); writeln; writeln('This is really the simplist method. Any files still'); writeln('open at program termination will be closed. This is'); writeln('the most dangerous method in that a power failure or a'); writeln('disk failure while the program is running will leave'); writeln('your file nowhere.'); writeln('The file "CTESTZZ.$$$" is still open at this time.'); writeln('When this program terminates it will be fixed on the'); writeln('directory.'); writeln; PAUSE; writeln;writeln;writeln;writeln; End{of file close demo}{ CLOSE(wrk1) }. .