8 File Storage
In some of the previous programs, for example, ERROR 59 appears after the last item is accessed, telling you that the end of file has been reached. This error message can be avoided by including an ON END# statement in the program.
Here is a modified version of the example program used when "Repositioning the Record Pointer". The program ends when the end of file is reached.
10 CREATE "DATA15",15 20 ASSIGN #1 TO "DATA15" 30 READ #1,8 40 ON END #1 GOTO Exit 50 FOR V=1 TO 50 60 PRINT #1;V 70 NEXT V 80 Exit: ! end of file found. 90 PRINT "END OF DATA!" 100 ENDAs another example, the next program prints four data items into each record of files DATA.1 and DATA.2. When DATA.1 is filled, reading the EOF mark causes a branch to the subroutine Newfile, which opens file DATA.2 for the rest of the PRINT# routine.
10 CREATE "DATA.1",20 20 CREATE "DATA.2",20 30 ASSIGN #1 TO "DATA.1" 40 ON END #1 GOSUB Newfile 50 FOR R=1 TO 100 60 PRINT #1;R,R^2,R^3,R^4 70 NEXT R 80 STOP 90 Newfile: ! open new file. 100 ASSIGN #1 TO "DATA.2" 110 RETURN 120 ENDON END is disabled during INPUT, LINPUT and EDIT statements. ON END can interrupt ON ERROR and ON KEY routines. ON END cannot be executed from the keyboard.
An ON END is deactivated with the OFF END# statement:
OFF END# file number
NOTE: Under the HP 260 environment the ON END # command could be used with the PRINT # statement to signify when a file was filled. In the HP-UX environment files are dynamic, rather than static, and printing will continue until the entire disk is full if a limit is not written into the program. Therefore, make sure you change any converted HP 260 programs that make use of ON END # and PRINT #, in this way.