# Sheerpower® A Guide to the Sheerpower Language

 Previous Contents Index

# 6.9 Miscellaneous Functions

The following are miscellaneous functions that Sheerpower performs:

## 6.9.1 DECODE(str_expr, int_expr)

With the DECODE function, given the string representation of a number and the base that the value is in (int_expr), Sheerpower returns the value in base 10. The number is returned as a real number. See also Section 6.4.13, ENCODE\$(num_expr, num_int).

Example 6-188 DECODE Function
 ``` do line input 'Enter a HEX value', default 'ff': hex\$ if _exit then exit do print 'Decimal value is'; decode(hex\$,16) loop end Enter a HEX value? ff Decimal value is 255 Enter a HEX value? exit ```

## 6.9.2 DTYPE(expr)

The DTYPE function returns as an integer value, the data type of an expression or object variable: 1 = string, 2 = integer, 3 = real. See Section 5.1, DECLARE for more on declaring variable data types.

Example 6-189 DTYPE Function
 ``` declare object x x = 45.6 print dtype(x) end 3 ```

## 6.9.3 EVAL(str_expr)

This function evaluates the expression described in str_expr and returns the result. If the variable being assigned the result is dynamic, the function puts the result in whatever data type the expression result was in. If the variable is NOT dynamic and the result is the wrong data type, a "Data type mismatch" error is returned.

Example 6-190 EVAL Function
 ``` line input 'Enter an expression': a\$ print 'The result is '; eval(a\$) end Enter an expression? 5 + 4 The result is 9 ```

## 6.9.4 FALSE

FALSE returns the constant 0. It is returned as an integer. See also "TRUE function".

Example 6-191 FALSE Function
 ``` input 'Enter your age': age of_age? = false if age >= 18 then of_age? = true print 'Given your age, you are '; if of_age? then print 'plenty old!' else print 'too young!' end Enter your age? 22 Given your age, you are plenty old! run Enter your age? 7 Given your age, you are too young! ```

## 6.9.5 LBOUND(array_name [,int_expr])

Given an array and a dimension number, this function returns the low bound for that dimension. The default dimension is 1.

Example 6-192 LBOUND Function
 ``` dim temperature(-40 to 100) print 'Lowest temperature we can handle: '; lbound(temperature,1) print 'Highest temperature we handle : '; ubound(temperature,1) end Lowest temperature we can handle: -40 Highest temperature we handle : 100 ```

## 6.9.6 MAXNUM

MAXNUM returns the largest number available in this implementation of Sheerpower.

Example 6-193 MAXNUM Function
 ``` print maxnum 9223372046854775807 ```

## 6.9.7 SIZE(array_name [,int_expr])

SIZE returns the number of elements in one dimension of an array.

 array-name Array to examine int-expr Dimension to get the size of. The default dimension is 1.

Example 6-194 SIZE Function
 ``` dim calendar(366) print 'Size of this calendar: '; size(calendar) Size of this calendar: 366 ```

## 6.9.8 TRUE

TRUE returns the constant 1. It is returned as an integer. See also "FALSE" function.

Example 6-195 TRUE Function
 ``` input 'Enter your age': age of_age? = false if age >= 18 then of_age? = true print 'Given your age, you are '; if of_age? then print 'plenty old!' else print 'too young!' end Enter your age? 38 Given your age, you are plenty old! rnh Enter your age? 5 Given your age, you are too young! ```

## 6.9.9 UBOUND(array_name [, int_expr])

Given an array and a dimension number, UBOUND returns the upper bound for that dimension. It returns an integer value. The default dimension is 1.

Example 6-196 UBOUND Function
 ``` dim temperature(-40 to 100) print 'Lowest temperature we can handle: '; lbound(temperature,1) print 'Highest temperature we handle : '; ubound(temperature,1) end Lowest temperature we can handle: -40 Highest temperature we handle : 100 ```

# 7.1 PRINT

The PRINT statement prints or displays text on the screen. The printed text can be formatted using a mask or directive and/or highlighted using video options. This section describes the various ways that text can be displayed on the screen.

## FORMAT:

 ``` PRINT [[AT row, col] [,ERASE] [,WIDE] [,BLINK] [,REVERSE] [,BOLD] [,USING "print_mask"]:] expr [{, | ;} expr...] [, | ;] ```

## EXAMPLE:

Example 7-1 PRINT Statement
 ``` input name\$ print 'Hello, '; name\$ print bold: 'Here is a number: 1.93' end ? Rick Hello, Rick Here is a number: 1.93 ```

## DESCRIPTION:

The simplest version of the PRINT statement is:

 ``` PRINT expr ```

expr is an expression to print. expr can be any Sheerpower expression. Sheerpower prints the value of the expression at the current cursor position and then generates a new line. A PRINT statement without an expression simply generates a new line.

Example 7-2 Print Expression
 ``` print 'Line 1' print print 'Line 3' end Line 1 Line 3 ```

## 7.1.1 Printing Multiple Expressions

One PRINT statement can print several items. Multiple items must be separated with a comma or a semicolon. The separator determines where the next expression will be printed.

Two additional features can be used to position the cursor:

• The TAB function positions the cursor at the column specified.
• The AT option positions the cursor at the coordinates specified. It can only be used once---at the beginning of the PRINT statement.

## Semicolons

Separating print items with a semicolon causes the items to immediately follow one another. When the items are printed, no spaces appear between the expressions.

Example 7-3 Semicolon in PRINT Statement
 ``` alpha\$ = 'ABCDEFGHIJKLM' bet\$ = 'NOPQRSTUVWXYZ' print alpha\$; bet\$ end ABCDEFGHIJKLMNOPQRSTUVWXYZ ```

## Commas and Print Zones

Print in columns by using print zones. Each print zone has a default width of twenty characters. To change the width, see Section 11.17.2, SET ZONEWIDTH.

 ``` |-------------------|-------------------|-------------------| 1 20 40 60 ```

Separating items with a comma causes the item following the comma to be printed in a new print zone. The terminal width determines the number of zones in each line. (See Section 11.9.1, ASK MARGIN statement to determine the terminal width.)

Example 7-4 Commas and Print Zones
 ``` input name_1\$, name_2\$ print name_1\$, 'MARY', name_2\$ end ? FRED, JOHN <------ type in FRED, JOHN FRED MARY JOHN ```

If an item is longer than the zone width, Sheerpower continues it into the next print zone. Sheerpower uses as many print zones as necessary to print an item.

 ``` ? FRED, DILLENSCHNEIDER & SONS FRED MARY DILLENSCHNEIDER & SONS ```

Sheerpower writes data sequentially. If an item is too long (over 132 characters) to write in one record, Sheerpower continues it in the next record.

Example 7-5 Printing Long Data in Records
 ``` open #1: name 'test.txt', access output set #1: margin 80 print #1: repeat\$('+-', 70) close #1 open #1: name 'test.txt', access input line input #1: record_1\$, record_2\$ print 'Record 1: '; record_1\$ print 'Record 2: '; record_2\$ close #1 end Record 1: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- Record 2: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ```

 Previous Next Contents Index