BBS: Inland Empire Archive Date: 02-09-93 (16:56) Number: 329 From: QUINN TYLER JACKSON Refer#: NONE To: ALL Recvd: NO Subj: EMS Array Code 3/ Conf: (2) Quik_Bas
>>> Continued from previous message
' Negative lengths indicate previous compression.
IF Leng% < 0 THEN Buffer$ = StrUnSq(Buffer$)
JmGET = Buffer$
Flag = TRUE
EXIT FOR
END SELECT
END IF
NEXT scan
IF NOT Flag THEN
ErrCode = Err_Array_Not_Dimensioned
EXIT FUNCTION
END IF
EXIT FUNCTION
DOSErrorGet:
' Something happened that had to be trapped.
ErrCode = Err_DOS_Error
EXIT FUNCTION
END FUNCTION
FUNCTION JmSET (ArrayName$, Element AS LONG, Vlue AS STRING)
FOR scan = 1 TO UBOUND(PtrArray)
IF ArrayName$ = AName$(scan) THEN
IF Element > PtrArray(scan).Elements THEN
JmSET = Err_Bad_Subscript
EXIT FUNCTION
END IF
SELECT CASE PtrArray(scan).ArrayType
CASE Array_Integer
TempInt& = VAL(Vlue)
IF TempInt& > 32768 OR TempInt& < -32768 THEN
' Someone forgot his BASIC basics.
JmSET = Err_Overflow
EXIT FUNCTION
END IF
TempInt% = TempInt&
' Stuff it up there in EMS land.
EMSPut PtrArray(scan).Handle, Element, TempInt%
Flag = TRUE
EXIT FOR
CASE Array_Long
TempLong& = VAL(Vlue)
EMSPut PtrArray(scan).Handle, Element, TempLong&
Flag = TRUE
EXIT FOR
CASE Array_String
' New string assignments added to end of virtual file.
EndPtr& = LOF(VirtualHandle) + 1
EMSPut PtrArray(scan).Handle, Element, EndPtr&
ON LOCAL ERROR GOTO DOSErrorSet
SEEK VirtualHandle, EndPtr&
' Add the string length to the string for later use.
SELECT CASE IsAllASCII(Vlue)
CASE TRUE
'Compress string.
Vlue = StrSqu(Vlue)
' Make it < 0 if compressed.
Vlue = MKI$(-LEN(Vlue)) + Vlue
CASE ELSE
Vlue = MKI$(LEN(Vlue)) + Vlue
END SELECT
PUT VirtualHandle, , Vlue
ON LOCAL ERROR GOTO 0
Flag = TRUE
EXIT FOR
END SELECT
END IF
NEXT scan
IF NOT Flag THEN
JmSET = Err_Bad_Array_Name
EXIT FUNCTION
END IF
EXIT FUNCTION
DOSErrorSet:
JmSET = Err_DOS_Error
EXIT FUNCTION
END FUNCTION
* SLMR 2.1a *
--- Maximus 2.01wb
* Origin: VKUG/VPCC QuickBasic Echo - Richmond, BC (1:153/151)

Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET