Title: Visual Basic to MultiValue Basic Translation
Issue: Spectrum Jan/Feb '99
author:Nathan Rector
company:Natec Systems
email:nater@northcoast.com
http:www.northcoast.com/~nater/
Even though I have worked with Visual Basic and Visual Basic for Applications for over 2 years, I still have a hard time remembering what commands do what and how Visual Basic compares to MultiValue BASIC.
Because of the syntax differences, many MultiValue programmers find Visual Basic hard to work with. If you are coming from a MultiValue background, Visual Basic is a lot easier to write in than C++. But there are still a few differences in the commands.
To help those who are struggling with Visual Basic or are just starting out with it, I have provided a translation table. The table is designed for comparison between MultiValue BASIC and Visual Basic syntax. It does not explain what the MultiValue BASIC commands do.
MultiValue BASIC |
Visual Basic |
IF {statement} THEN {code} END ELSE {code} END |
If {statement} Then {code} Else {code} End If |
BEGIN CASE CASE {statement} {code} CASE {statement} {code} CASE 1 {code} END CASE |
If {statement} Then {code} ElseIf {statement} Then {code} Else {code} End If |
LOOP UNTIL {statement} DO {code} REPEAT |
Do Until {statement} {code} Loop |
LOOP WHILE {statement} DO {code} REPEAT |
Do While {statement} {code} Loop |
LOOP {code} UNTIL {statement} DO REPEAT |
Do {code} Loop Until {statement} |
LOOP {code} WHILE {statement} DO REPEAT
|
Do {code} Loop While {statement} |
LOOP {code} UNTIL {statement} DO {code} REPEAT |
Do {code} If {statement} Then Exit Do {code} Loop While True |
FOR I = {start} TO {finish} STEP {count} {code} NEXT I |
For I = {start} To {finish} STEP {count} {code} Next I |
FOR I = {start} TO {finish} UNTIL {statement} {code} NEXT I |
For I = {start} To {finish} If {statement} then Exit For {code} Next I |
VALUE = INT(5/2) |
Value = Fix(5/2) |
VALUE = ABS(5/2) |
Value = Abs(5/2) |
VALUE = SEQ("A") |
Value = Asc("A") |
VALUE = CHAR(50) |
Value = Chr(50) |
RQM |
DoEvents |
VALUE = EXP(256) |
Value = Exp(256) |
POS = INDEX("ABCD","A",1) |
Pos = InStr("ABCD","A") |
POS = INDEX("ABCD","A",3) |
‘ You will need a program to find more than the ‘ first occurance of a string. |
IF NUM(VALUE) THEN CRT "Number" END |
If IsNumaric(Value) Then Print "Number" End If |
VALUE = OCONV("LOWER","MCL") |
Value = LCase("LOWER") |
VALUE = OCONV("upper","MCU") |
Value = UCase("upper") |
LENGTH = LEN(VALUE) |
Length = Len(Value) |
VALUE = STRING[3,2] |
Value = Mid(String,3,2) |
VALUE = TRIM(" Trim Space ") |
Value = Trim(" Trim Space ") |
VALUE = RND(10) |
Randomize Value = Rnd(10) |
VALUE = SPACE(10) |
Value = Space(10) |
VALUE = STR("*",10) |
Value = String("*",10) |
CRT CHAR(7) |
Beep |
The following commands are supplied by your database vendor: e.g. D3 Objects, WinLink 32, UniObjects. Since each vendor supports a lot of MultiValue BASIC commands in Visual Basic, only a few examples are shown.
MultiValue BASIC |
Visual Basic – WinLink32 |
OPEN {filename} TO {filevar} THEN {code} END ELSE {code} END |
On Error Resume Next Set FileVar = con.RemoteFiles.OpenFile(FileName) If FileVar.Status > 0 Then {code} End If |
READ {var} FROM {file}, {record} THEN {code} END ELSE {code} END |
On Error Resume Next Set Item = FileVar.Read("Record") If Item.Status > 0 Then {code} End If |
VALUE = ITEM<1,1> |
Value = Item.Extract(1,1) |
ITEM = INSERT(ITEM,1;"Hello") |
Call Item.Insert(1,ReplaceString:="Hello") |
ITEM<1> = VALUE |
Call Item.Replace(1,InsertString := Value) |
ITEM = DELETE(ITEM,1) |
Call Item.Delete(1) |
WRITE {var} FROM {file}, {record} |
On Error Resume Next Call FileVar.Update Item |
CALL TEST.PROG(VALUE) |
On Error Resume Next Set Prog = Link.DefineProcedure("TEST.PROG") Prog.ExecuteProcedure Value Value = Prog.Text |
MultiValue BASIC |
Visual Basic – D3 Objects |
OPEN {filename} TO {filevar} THEN {code} END ELSE {code} END |
On Error Resume Next Set FileVar = oConn.brOpenFile(FileName) If Err Then {code} End If |
READ {var} FROM {file}, {record} THEN {code} END ELSE {code} END |
On Error Resume Next Set Item = FileVar.brRead("Record") If Err Then {code} End If |
VALUE = ITEM<1,1> |
Value = Item.brExtractStr(1,1) |
ITEM = INSERT(ITEM,1;"Hello") |
Call Item.brInsertStr("Hello",1) |
ITEM<1> = VALUE |
Call Item.brReplaceStr(Value,1) |
ITEM = DELETE(ITEM,1) |
Call Item.brDelete(1) |
WRITE {var} FROM {file}, {record} |
On Error Resume Next Call FileVar.brWrite(Item, RecordName) |
CALL TEST.PROG(VALUE) |
On Error Resume Next Set Prog = oConn.brOpenRule ("TEST.PROG") Prog.brCall Value
|
MultiValue BASIC |
Visual Basic – UV/Objects |
OPEN {filename} TO {filevar} THEN {code} END ELSE {code} END |
On Error Resume Next Set FileVar = session.OpenFile(FileName) If FileVar.Error <> 0 Then {code} End If |
READ {var} FROM {file}, {record} THEN {code} END ELSE {code} END |
On Error Resume Next FileVar.RecrodID = "Record" FileVar.Read If Item.Error <> 0 Then {code} End If Set Item = FileVar.Record |
VALUE = ITEM<1,1> |
Value = Item.Value(1,1) |
ITEM = INSERT(ITEM,1;"Hello") |
Item.Field(1).Ins "Hello" |
ITEM<1> = VALUE |
Item.Field(1) = Value |
ITEM = DELETE(ITEM,1) |
Item.Field(1).Del |
WRITE {var} FROM {file}, {record} |
On Error Resume Next Set FileVar.Record = Item FileVar.RecordID = "Record" Call FileVar.Write |
CALL TEST.PROG(VALUE) |
On Error Resume Next Set Prog = session.Subroutine("TEST.PROG",1) Prog.SetArg 0, Value Prog.Call Prog.GetArg 0, Value |