HP OpenVMS SystemsBASIC Translator |
Compaq BASIC Translator
|
| Previous | Contents | Index |
Table 3-7 compares operators for VAX BASIC or DEC BASIC and Visual Basic.
| Operator | VAX BASIC and DEC BASIC | Visual Basic |
|---|---|---|
| Assignment | = | = |
| Exponentiation | ^, ** 1 | ^ |
| Negation | -- | -- |
| Multiplication | * | * |
| Division | / | / (or \ for integer division) |
| Residue | mod | mod |
| Addition | + | + |
| Subtraction | -- | -- |
| String concatentation | + | &, + 2 |
| Equality | =, == 1 | = |
| Inequality | <>, >< 1 | <> |
| Greater than | > | > |
| Less than | < | < |
| Greater than or equal to | >=, => 1 | >= |
| Less than or equal to | <=, =< 1 | <= |
| Logical negation | not | not |
| Logical and | and | and |
| Inclusive or | or | or |
| Exclusive or | xor | xor |
| Logical equivalence | eqv | eqv |
| Implication | imp | imp |
| Subobject separator | :: | . |
The Translator does not support the following language incompatibility in the handling of the integer data type: When division is performed with the slash (/) operator in Visual Basic, integer arguments are converted to floating-point values first and then the division is performed. Therefore, a quotient represented as a floating-point number is returned, which might not be expressible as an integer. Consider the following example:
5% / 8% <--> 0.625 |
VAX BASIC or DEC BASIC would give a different answer. When both arguments are of the integer data type (as, for example, when the % suffix is used), VAX BASIC or DEC BASIC returns an integer quotient formed by dropping any fractional part as illustrated by the following example:
5% / 8% <--> 0 |
Assume a VAX BASIC or DEC BASIC expression of the form:
|
integer / integer |
The Visual Basic equivalent would use a backslash ("\") character:
|
integer \ integer |
The Translator does not support these cases.
3.9 Translations Performed
Table 3-8 summarizes VAX BASIC and DEC BASIC statements and routines that the Translator converts directly to corresponding Visual Basic statements and routines or to calls to DECBAS_* routines (coded in Visual Basic), or that are not supported.
| VAX BASIC and DEC BASIC | Translation | Description |
|---|---|---|
| ABS | Abs | Return absolute value of specified floating-point expression; floating-point number returned |
| ABS% | DECBAS_ABSP% | Return absolute value of specified floating-point expression; integer returned |
| ASCII | Asc | Return ASCII character of integer |
| ATN | Atn | Return arctangent (angular value) of a specified tangent |
| BUFSIZ | DECBAS_BUFSIZ | Return record buffer size of channel |
| CALL | Call | Transfer control |
| CAUSE ERROR | DECBAS_CAUSEERROR | Generate run-time error |
| CCPOS | DECBAS_CCPOS | Return current character or cursor position in output record |
| CHAIN | Not supported | Transfer control to another executable image |
| CHANGE | DECBAS_CHANGE | Convert character string or number to ASCII |
| CHR$ | Chr | Convert ASCII value to 1-character string |
| CLOSE | DECBAS_CLOSE | End I/O processing |
| COMMON | Visual Basic Class | Define a named, shared storage area |
| COMP% | DECBAS_COMP% | Compare numeric strings |
| CONTINUE | Resume | Clear error condition |
| COS | Cos | Return cosine of an angle |
| CTRLC | DECBAS_CTRLC | Enable Ctrl/C trapping |
| CVT$$ 1 (see also EDIT$) | DECBAS_CVTSS | Perform string editing functions |
| CVT$% 1 | DECBAS_CVTSP | Map first two characters into 16-bit integer |
| CVT%$ 1 | DECBAS_CVTPS | Translate 16-bit integer into 2-character string |
| CVT$F 1 | DECBAS_CVTSF | Map a 4- or 8-character string into floating-point variable |
| CVTF$ 1 | DECBAS_CVTFS | Translate floating-point number into a 4- or 8-byte character string |
| DATA | No exact equivalent. The Translator creates a subroutine to initialize the data array. | Create a data block for READ statement |
| DATE$ | DECBAS_DATE$ | Return dd-mmm-yy from 1970 relative yyyddd |
| DATE4$ | DECBAS_DATE4$ | Return dd-mmm-yyyy from 1970 relative yyyddd |
| DECIMAL | CDEC (Visual Basic Version 5.0 only. Not supported in Visual Basic Version 4.0. See Chapter 7) | Convert argument to DECIMAL subtype. Precision and scale ignored |
| DECLARE | Dim | Assign a name and data type to variable |
| DEF/DEF* | Function | Define single line or multiline function |
| DELETE | DECBAS_DELETE | Remove record from relative file or indexed file |
| DET | DECBAS_DET | Return the value of the determinant of the last matrix inverted |
| DIF$ | DECBAS_DIF$ | Return numeric string whose value is difference between two numeric strings |
| DIMENSION | Dim | Create and name a static, dynamic, or virtual array |
| ECHO | DECBAS_ECHO | Echo characters on terminal channel |
| EDIT$ (see also CVT$$ 1) | DECBAS_EDIT$ | Perform string editing functions |
| END | End | Mark the physical and logical end of a main program, a program module, or a block of statements |
| ERL | Not supported | Return number of BASIC line where last error occurred |
| ERN$ | DECBAS_ERN$ | Return routine name executing when last error occurred |
| ERR | DECBAS_ERR | Return error number of current run-time error |
| ERT$ | DECBAS_ERT$ | Return error message text |
| EXIT | Exit | Exit from main program, SUB or FUNCTION subprogram, multiline DEF, statement block, or handler |
| EXP | Exp | Perform exponentiation |
| EXTERNAL CONSTANT | Not supported | Declare constant external to program |
| EXTERNAL data-type | Not supported | Declare variable external to program |
| EXTERNALFUNCTION |
DECLARE FUNCTION
<DLL Name> |
Declare function external to program |
| EXTERNALSUB | DECLARE SUB <DLL Name> | Declare subroutine external to program |
| FIELD | Not supported | Dynamically associate string variables with all or parts of record buffer |
| FIND | DECBAS_FIND | Locate specified record |
| FIX | Fix | Return integer portion of floating-point number |
| FOR | For | Repeatedly execute a block of statements |
| FORMAT$ | DECBAS_FORMAT$ | Convert an expression to a formatted string |
| FREE | DECBAS_FREE | Unlock all records and buckets |
| FSP$ 1 | Not supported | Return string describing an open file |
| FUNCTION | Function | Mark beginning of FUNCTION subprogram and define subprogram's parameters |
| GET | DECBAS_GET | Move record from file to record buffer |
| GETRFA | DECBAS_GETRFA | Return RFA for last accessed record on channel |
| GOSUB | GoSub | Transfer control to a specified line number or label |
| GOTO | GoTo | Transfer control to a specified line number or label |
| HANDLER |
GoTo DECBAS_
xxxx
handler_name: |
Mark the beginning of detached handler |
| IF | If | Evaluate conditional expression |
| INKEY$ | DECBAS_INKEY | Read single keystroke and return typed character |
| INPUT | DECBAS_INPUT | Assign values from terminal to program variables |
| INPUT LINE | DECBAS_INPUTLINE | Assign string value from terminal to program variables |
| INSTR | DECBAS_INSTR | Search for substring within string and return position of substring's starting character |
| INT | Int | Return floating-point value of largest whole number less than or equal to specified expression |
| INTEGER | DECBAS_INTEGER | Convert number or numeric string to integer type |
| ITERATE | GoTo DECBAS_ xxxxx | Explicitly reexecute a loop |
| KILL | Kill | Delete a file |
| LBOUND | LBound | Return lower bound of array dimension |
| LEFT$, LEFT | Left | Extract lefthand substring |
| LEN | Len | Return integer value indicating length of string |
| LET | Let | Assign a value to one or more variables |
| LINPUT | DECBAS_LINPUT | Assign a string value, without line terminators, to string variable |
| LOC | DECBAS_LOC for variables only | Return address of object (only correct for variables; if object is a function, Visual Basic will issue an error) |
| LOG | Log | Return natural logarithm |
| LOG10 | DECBAS_LOG10 | Return common logarithm |
| LSET | LSet | Assign left-justified data to a string variable |
| MAG | Abs | Return absolute value of specified expression |
| MAGTAPE | Not supported | Magnetic tape control |
| MAP | Visual Basic Class | Define PSECT, declare data fields in record, and associate them with program variables |
| MAP DYNAMIC | Not supported | Name variables and arrays whose size and position in a storage area can change at run time |
| MAR | DECBAS_MAR | Return current margin width of channel |
| MARGIN | DECBAS_MARGIN | Specify the margin width |
| MAT CON | DECBAS_MATCON | Create a constant matrix |
| MAT IDN | DECBAS_MATIDN | Create an identity matrix |
| MAT ZER | DECBAS_MATZER | Create a zero matrix |
| MAT NUL$ | DECBAS_MATNUL | Create a matrix of empty strings |
| MAT + | DECBAS_MATADD | Add two matrices |
| MAT - | DECBAS_MATSUB | Subtract two matrices |
| MAT * | DECBAS_MATMUL | Multiply two or more matrices |
| MAT ()* | DECBAS_MATSMUL | Multiply a matrix by a scalar |
| MAT INV | DECBAS_MATINV | Find inverse of a matrix |
| MAT TRN | DECBAS_MATTRN | Transpose a matrix |
| MAT = | DECBAS_MATASSIGN | Copy contents of one array to another |
| MAT INPUT | DECBAS_MATINPUT | Assign values from terminal to array elements |
| MAT LINPUT | DECBAS_MATLINPUT | Assign string values from terminal to string array elements |
| MAT PRINT | DECBAS_MATPRINT | Print contents of array to terminal |
| MAT READ | DECBAS_MATREAD | Assign values from DATA statements to array elements |
| MAX | DECBAS_MAX | Return the highest value in a comparison of two or more |
| MID$ statement | Mid | Insert substring |
| MID$ function | Mid | Extract substring |
| MIN | DECBAS_MIN | Return the smallest value in a comparison of two or more |
| MOD | Mod | Return the remainder |
| MOVE | DECBAS_MOVETO[FROM] | Transfer data |
| NAME...AS | Name As | Rename specified file |
| NEXT | Next | Mark the end of FOR loop |
| NEXT | Wend | Mark the end of UNTIL or WHILE loop |
| NOECHO | DECBAS_NOECHO | Disable input terminal echoing |
| NOMARGIN | DECBAS_NOMARGIN | Remove right margin limit |
| NUM | DECBAS_MATNUM | Return row number of last I/O reference of array element |
| NUM2 | DECBAS_MATNUM2 | Return column number of last I/O reference of array element |
| NUM$ | DECBAS_NUM$ | Convert number to string for printing |
| NUM1$ | DECBAS_NUM1$ | Convert number to numeric character string |
|
ON ERROR
GO BACK |
On Error GoTo 0 | Transfer control to calling program |
| ON ERROR GOTO | On Error GoTo | Transfer control to specified line or label |
| ON ERROR GOTO 0 | On Error GoTo 0 | Disable ON ERROR error handling |
| OPEN | DECBAS_OPEN | Open file for processing |
| OPTION | Only the TYPE and SIZE options are supported | Set compilation qualifiers |
| PLACE$ | DECBAS_PLACE$ | Change precision of numeric string |
| POS | DECBAS_POS | Search for substring and return position |
| DECBAS_PRINT | Transfer program data to terminal | |
| PRINT USING | DECBAS_PRINTUSING | Generate output formatted according to format string |
| PROD$ | DECBAS_PROD$ | Return numeric string that is product of numeric strings |
| PROGRAM | Sub Main | Identify main program with name other than file name |
| PUT | DECBAS_PUT | Transfer data from the record buffer to a file |
| QUO$ | DECBAS_QUO$ | Return numeric string that is quotient of numeric strings |
| RAD$ 1 | Not supported | Convert integer to Radix-50 |
| RANDOMIZE | Randomize | Give random number function new starting value |
| RCTRLC | DECBAS_RCTRLC | Disable Ctrl/C trapping |
| RCTRLO | DECBAS_RCTRLO | Cancel Ctrl/O effect |
| READ | DECBAS_READ | Assign values from DATA statement to variables |
| REAL | DECBAS_REAL | Convert number or string to floating-point data type |
| RECORD | Type...End Type | Name and define simple record |
| RECORD | Visual Basic Class | Name and define complex record |
| RECOUNT | DECBAS_RECOUNT | Return number of characters in last I/O operation |
| REM | Rem | Document program in a comment |
| REMAP | Not supported | Define or redefine position in storage area |
| RESET | DECBAS_DATA_INDEX=0 | Reset DATA pointer to beginning of DATA sequence |
| RESTORE | DECBAS_DATA_INDEX=0 | Reset DATA pointer to beginning of DATA sequence |
| RESTORE | DECBAS_RESTORE_KEY | Reset record pointer to first record in file |
| RESUME | Resume Next, Resume label | Mark exit point from ON ERROR |
| RETRY | Resume | Clear error condition |
| RETURN | Return | Transfer control to statement following most recently executed GOSUB or ON...GOSUB |
| RIGHT$ | DECBAS_RIGHT$ | Extract righthand substring |
| RMSSTATUS | Not supported | Return RMS status of last I/O operation |
| RND | Rnd | Return random number greater than or equal to zero and less than 1 |
| RSET | Rset | Assign right-justified data to a string variable |
| SCRATCH | DECBAS_SCRATCH | Delete current record and all following records in a sequential file |
| SEG$ | DECBAS_SEG$ | Extract substring |
| SELECT | Select Case | Evaluate one of a list of statement blocks |
| SET [NO] PROMPT | DECBAS_SET[NO]PROMPT | Enable [disable] question mark prompt |
| SGN | Sgn | Determine whether numeric expression is positive, negative, or zero |
| SIN | Sin | Return the sine of an angle |
| SLEEP | DECBAS_SLEEP | Suspend program execution |
| SPACE$ | Space | Create string of spaces |
| SQR, SQRT | Sqr | Return square root |
| STATUS | Not supported | Return integer status value of last I/O operation |
| STOP | Stop | Halt program execution |
| STR$ | CStr | Change number to numeric character string |
| STRING$ | String$ | Create string containing specified number of identical characters |
| SUB | Sub | Mark beginning of BASIC subprogram |
| SUM$ | DECBAS_SUM$ | Return string whose value is sum of numeric strings |
| SWAP% 1 | DECBAS_SWAP% | Transpose bytes of 16-bit integer |
| TAB | DECBAS_TAB | Inside PRINT statement, move cursor to column n in output |
| TAB | Space | Outside PRINT statement, create a string of spaces |
| TAN | Tan | Return tangent of an angle |
| TIME | DECBAS_TIME | Return time of day, CPU time, process time |
| TIME$ | DECBAS_TIMES | Return time of day as hh:mm am/pm |
| TRM$ | RTrim | Remove trailing blanks and tabs |
| UBOUND | Ubound | Return upper bound of array dimension |
| UNLESS | If Not | Modify a statement |
| UNLOCK | DECBAS_UNLOCK | Unlock current record or bucket |
| UNTIL | While Not | Mark beginning of UNTIL loop |
| UPDATE | DECBAS_UPDATE | Replace record in file |
| VAL | Val | Convert numeric string to floating-point value |
| VAL% | DECBAS_VALP | Convert numeric string to integer value |
| VMSSTATUS | Not supported | Return underlying OpenVMS condition code on error |
| WAIT | DECBAS_WAIT | Specify seconds program waits for input |
| WHEN ERROR | On Error GoTo | Mark beginning of WHEN ERROR construct |
| WHILE | While | Mark beginning of WHILE loop |
| XLATE$ | DECBAS_XLATE$ | Translate one string to another using table string you specify |
| Previous | Next | Contents | Index |