home *** CD-ROM | disk | FTP | other *** search
- 'PROGRAM - BONUS.BAS
-
- 'This program demonstrates a way to save room
- 'in the DGROUP by storing string data outside of
- 'the program, but within the file.
-
- DECLARE FUNCTION GetSizeOfFile& _
- (FileNumber AS INTEGER)
-
- 'Initialize and read the data
-
- CLS 'Use the filename of
- OPEN "I", 1, "NEWTEST.EXE" ' this program
- Size& = GetSizeOfFile&(1) 'Retrieve program LEN
- InitLoc& = Size& + 1 'Set beginning data
- SEEK #1, InitLoc& ' location to 1 past
- ' end of EXE portion
- LINE INPUT #1, ID$ 'Get the first variable
- IDLen% = LEN(ID$) + 2 'Set the field length
- ' plus cr/lf
- CtrPos& = InitLoc& + IDLen% 'Calculate position
- LINE INPUT #1, Counter$ 'Get next variable
- CtrLen% = LEN(Counter$) 'Calculate its LEN
- Counter% = VAL(Counter$) + 1 'Increment value
- Counter$ = RIGHT$(" " + STR$(Counter%), CtrLen%)
-
- 'Display the data read from the end of the file
-
- PRINT "Identification: "; ID$
- PRINT "Number of times executed: "; Counter%
-
- CLOSE 1 'Close file so we can reopen it and
- ' write data
-
- OPEN "B", 1, "NEWTEST.EXE" 'Use binary mode
- PUT 1, CtrPos&, Counter$ 'Rewrite new value
- CLOSE 1 'Close file again
- END
-
- FUNCTION GetSizeOfFile& (FileNumber AS INTEGER)
-
- 'This function returns the actual size of
- 'programs in a long variable. Pass the routine
- 'the file number used to open the file
-
- 'Read 1st 6 bytes of hdr
- A$ = INPUT$(6, FileNumber)
- 'Calculate the number of partial pages used in
- ' the program file, if any. This number is stored
- ' in bytes 3 and 4.
- Fraction& = ASC(MID$(A$, 4)) * 256& _
- + ASC(MID$(A$, 3))
- 'Calculate the number of whole pages used to
- ' store the file.
- Pages& = ASC(MID$(A$, 6)) * 256& _
- + ASC(MID$(A$, 5))
- 'If there are any fractional pages subtract 1
- ' from the pages count.
- IF Fraction& THEN Pages& = Pages& - 1
- 'Each page is 512 bytes long so multiply 512
- ' times the number of pages and add any
- ' fractional bytes to the total.
- GetSizeOfFile& = Pages& * 512& + Fraction&
- END FUNCTION
-