home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
magazine
/
ins_msb
/
9003
/
bonus.bas
next >
Wrap
BASIC Source File
|
1990-03-01
|
2KB
|
65 lines
'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