Q(uick)BASIC Function: MKS$
Quick View
MKS$
A function that converts numeric values to string values
Worth knowing
Useful and cross-version information about the programming environments of QBasic and QuickBasic.
Syntax
- MKI$(integer-expression%)
- MKL$(long-integer-expression&)
- MKS$(single-precision-expression!)
- MKD$(double-precision-expression#)
- CVI(2-byte-numeric-string)
- CVL(4-byte-numeric-string)
- CVS(4-byte-numeric-string)
- CVD(8-byte-numeric-string)
Description/Parameter(s)
MKI$, MKL$, MKS$, and MKD$ convert numbers to numeric strings that can be stored in FIELD statement string variables. CVI, CVL, CVS, and CVD convert those strings back to numbers.
Function | Returns | Function | Returns |
MKI$ | A 2-byte string | CVI | An integer |
MKL$ | A 4-byte string | CVL | A long integer |
MKS$ | A 4-byte string | CVS | A single-precision number |
MKD$ | An 8-byte string | CVD | A double-precision number |
Syntax
- MKI$(integerexpression)
- MKS$(single-precision-expression)
- MKL$(long-integer-expression)
- MKD$(double-precision-expression)
Description/Parameter(s)
The MKI$, MKS$, MKL$, and MKD$ functions are used with FIELD and PUT statements to write real numbers to a random-access file. The functions take numeric expressions and convert them to strings that can be stored in the strings defined in the FIELD statement. The functions are the inverse of CVI, CVS, CVL, and CVD.
Function | Description |
MKI$ | Converts an integer to a two-byte string |
MKS$ | Converts a single-precision value to a four-byte string |
MKL$ | Converts a long-integer value to a four-byte string |
MKD$ | Converts a double-precision value to an eight-byte string |
Note: | BASIC record variables provide a more efficient and convenient way of reading and writing random-access files. |
Example
See the ⮜ programming example for the CVI, CVS, CVL, CVD statements ⮞, which uses the MK$ function.
See also:
Syntax
- MKI$(integerexpression%)
- MKL$(long-integer-expression&)
- MKS$(single-precision-expression!)
- MKD$(double-precision-expression#)
- MKC$(currency-expression@)
Description/Parameter(s)
- MKI$ converts an integer to a 2-byte string.
- MKL$ converts a long-integer value to a 4-byte string.
- MKS$ converts a single-precision value to a 4-byte string.
- MKD$ converts a double-precision value to an 8-byte string.
- MKC$ converts a currency value to an 8-byte string.
Usage Notes
- MKI$, MKL$, MKS$, MKD$, and MKC$ are used with FIELD and PUT statements to write numbers to a random-access file. The functions convert numeric expressions to strings that can be stored in the strings defined in the FIELD statement.
- These functions are the inverse of CVI, CVL, CVS, CVD, and CVC.
- These BASIC record variables provide a more efficient and convenient way of reading and writing random-access files than some older versions of BASIC.
Example
This example uses the MKS$ and CVS functions to convert values to and from strings for storage in a random-access file.
If you run this program, you will be prompted to enter an account number. The account numbers in the sample data file ACCOUNT.INF are 1 through 5.
'Define a user type for the data records.
TYPE Buffer
AccName AS STRING * 25
Check AS STRING * 4
END TYPE
'Define a variable of the variable type.
DIM BankBuffer AS Buffer
OPEN "ACCOUNT.INF" FOR RANDOM AS #1 LEN = 29
CLS
RESTORE
READ AccName$, Check
I% = 0
DO WHILE UCASE$(AccName$) <> "END"
I% = I% + 1
BankBuffer.AccName = AccName$
BankBuffer.Check = MKS$(Check)
PUT #1, I%, BankBuffer
READ AccName$, Check$
IF AccName$ = "END" THEN EXIT DO
LOOP
CLOSE #1
DATA "Bob Hartzell", 300
DATA "Alice Provan", 150
DATA "Alex Landow", 75
DATA "Walt Riley", 50
DATA "Georgette Gump", 25
DATA "END", 0
OPEN "ACCOUNT.INF" FOR RANDOM AS #2 LEN = 29
FIELD #2, 25 AS AccName$, 4 AS Check$
DollarFormat$ = "$$#####.##"
DO
PRINT
DO
CLS
INPUT "Enter account # to update: ", Rec%
GET #2, Rec% 'Get the record
PRINT : PRINT "This is the account for "; AccName$
PRINT : INPUT "Is this the account you wanted"; R$
LOOP WHILE UCASE$(MID$(R$, 1, 1)) <> "Y"
'Convert string to single-precision value.
Checkamt! = CVS(Check$)
PRINT
PRINT "The opening balance for this account is";
PRINT USING DollarFormat$; Checkamt!
PRINT : PRINT "Enter the checks and cash withdrawals for this"
PRINT "account below. Enter 0 when finished."
PRINT
DO
INPUT "Enter amount -> ", Checkout!
Checkamt! = Checkamt! - Checkout!
LOOP UNTIL Checkout! = 0
PRINT
PRINT "Enter the deposits for this account below."
PRINT "Enter 0 when finished."
PRINT
DO
INPUT "Enter amount ->", Checkin!: Checkamt! = Checkamt! + Checkin!
LOOP UNTIL Checkin! = 0
PRINT
PRINT "The closing balance for this account is";
PRINT USING DollarFormat$; Checkamt!
'Convert single-precision number to string.
LSET Check$ = MKS$(Checkamt!)
PUT #2, Rec% 'Store the record.
PRINT : INPUT "Update another"; R$
LOOP UNTIL UCASE$(MID$(R$, 1, 1)) <> "Y"
CLOSE #2
KILL "ACCOUNT.INF"
END