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
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