カルトスクリプト用 SML 関数解説 for TNTmips ver6.6

SML module date: Nov 28 2001

  • Math
  • Date
  • Set
  • String
  • Database
  • Raster
  • Vector
  • Object
  • Matrix
  • Georeference
  • Color Palette
  • Style
  • System
  • Object Conversion
  • Popup Dialog
  • CAD
  • TIN
  • Region
  • File
  • Ini File
  • Symbol
  • Cartoscript
  • Print

    Math functions (65)


    abs(x)

    Absolute value

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         a = -6
         b = abs(2 * a)   # b = 12
         print(b)
    


    acos(x)

    trigonometric arccosine

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         b = acos(0.5)
         print(b)
         # b = 1.0471975511965979
    


    acosd(x)

    trigonometric arccosine (degree version)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    acosh(x)

    hyperbolic arccosine

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         b = acosh(0.5)
         print(b)
         # b = NULL
    


    acoth(x)

    hyperbolic arccotangent

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         b = acoth(0)
         print(b)
         # b = NULL
    


    acsch(x)

    hyperbolic arccosecant

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         b = acsch(0)
         print(b)
         # b = Infinity
    


    asech(x)

    hyperbolic arcsecant

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         b = asech(1)
         print(b)   # b = 0
    


    asin(x)

    trigonometric arcsine

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         a = sqrt(3) / 2
         b = deg * asin(a)
         print(b)
         # b = 59.99999999999999
    


    asind(x)

    trigonometric arcsine (degree version)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    asinh(x)

    hyperbolic arcsine

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         a = (exp(0) - exp(-0)) / 2
         b = asinh(a)
         print(b)   # b = 0
    


    atan(x)

    trigonometric arctangent

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         a = 1 ; b = deg * atan(a)
         print(b)   # b = 45
    


    atan2(y, x)

    trigonometric arctangent

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         a = sqrt(3) / 2 ; b = -.5
         c = deg * atan2(a, b)
         print(c)   # c = 120
    


    atand(x)

    trigonometric arctangent (degree version)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    atanh(x)

    hyperbolic arctangent

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         a = exp(0) - exp(-0)
         b = exp(0) + exp(-0)
         c = atanh(a/b)
         print(c)   # c = 0
    


    Bound(val, min, max)

    Force a value into given range.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of Bound()
    


    ceil(x)

    Round decimal up to integer

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         a = ceil(7.499)   # a = 8
         b = ceil(7.001)   # b = 8
         c = ceil(-7.01)   # c = -7
         d = ceil(-7.99)   # d = -7
         print(a, b, c, d)
    


    ConvertPolartoXY(theta, r, x, y)

    Converts polar coordinates to rectangular (radians).

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 16-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of ConvertPolartoXY()
    


    ConvertPolartoXYd(theta, r, x, y)

    Converts polar coordinates to rectangular (degrees).

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 16-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of ConvertPolartoXYd()
    


    ConvertSphericaltoXYZ(rho, theta, phi, x, y, z)

    Converts polar coordinates to rectangular (radians).

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 17-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of ConvertSphericaltoXYZ()
    


    ConvertSphericaltoXYZd(rho, theta, phi, x, y, z)

    Converts polar coordinates to rectangular (degrees).

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 17-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of ConvertSphericaltoXYZd()
    


    ConvertXYtoPolar(x, y, theta, r)

    Converts rectangular coordinates to polar (radians).

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 16-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of ConvertXYtoPolar()
    


    ConvertXYtoPolard(x, y, theta, r)

    Converts rectangular coordinates to polar (degrees).

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 16-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of ConvertXYtoPolard()
    


    ConvertXYZtoSpherical(x, y, z, rho, theta, phi)

    Converts rectangular coordinates to spherical (radians).

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 17-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of ConvertXYZtoSpherical()
    


    ConvertXYZtoSphericald(x, y, z, rho, theta, phi)

    Converts rectangular coordinates to spherical (degrees).

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 17-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of ConvertXYZtoSphericald()
    


    CopyArrayElements(dest, source, dest_start, dest_end, source_start, source_end)

    Copies a given range of elements form one array into another.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 22-Jul-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         clear();
         Array a1[10];
         Array a2[10];
         for x=1 to 10{
         	a1[x]=20+x;
         	a2[x]=x;
         }
         CopyArrayElements(a2,a1,3,6,5,8);
         for x=1 to 10{
         	print(a2[x]);
         }
    


    cos(x)

    trigonometric cosine

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(cos(60 / deg))   # prints .500000000000001
    


    cosd(x)

    trigonometric cosine (degree version)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    cosh(x)

    hyperbolic cosine

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(cosh(0))   # prints 1
    


    csc(x)

    trigonometric cosecant

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(csc(30 / deg))   # prints 2
    


    cscd(x)

    trigonometric cosecant (degree version)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    ctn(x)

    trigonometric cotangent

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(ctn(0 / deg))   # prints Infinity
    


    ctnd(x)

    trigonometric cotangent (degree version)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    Displacement3D(x1, y1, z1, x2, y2, z2, distance, azimuth, elevation)

    Calculate the distance, azimuth, and elevation from the first point to the second (radians).

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 17-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of Displacement3D()
    


    Displacement3Dd(x1, y1, z1, x2, y2, z2, distance, azimuth, elevation)

    Calculate the distance, azimuth, and elevation from the first point to the second (degrees).

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 17-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of Displacement3Dd()
    


    exp(x)

    Exponential (e to the power of x)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(exp(-1/0))   # prints 0
    


    exp10(x)

    Exponential (10 to the power of x)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(exp10(3))   # prints 1000
    


    floor(x)

    Round decimal down to integer

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(floor(7.5))   # prints 7
         print(floor(-7.5))   # prints -8
    


    GetUnitConvAngle(from$, to$)

    Get scale factor for angle unit conversions.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of GetUnitConvAngle()
    


    GetUnitConvArea(from$, to$)

    Get scale factor for area unit conversions.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of GetUnitConvArea()
    


    GetUnitConvDist(from$, to$)

    Get scale factor for distance unit conversions.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of GetUnitConvDist()
    


    GetUnitConvVolume(from$, to$)

    Get scale factor for volume unit.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of GetUnitConvVolume()
    


    hypot(dx, dy)

    Find hypotenuse of right triangle

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear(); dx = 3; dy = 4
         print(hypot(dx, dy))   # 5
    


    int(x)

    Integer portion of argument (truncate)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         a = int(7.7)   # a = 7
         a = int(-7.7)   # a = -8
    


    IsNull(x)

    Does the argument have the value NULL?

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(IsNull(NULL))
    


    LinearRegression(x, y, num, slope, intercept, omit)

    Calculate the linear regression coeficients for a group of points.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of LinearRegression()
    


    log(x)

    Natural logarithm of argument

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print("Enter a number.") ; a=input
         print("log(x)=", log(x))
    


    log10(x)

    Base 10 logarithm of argument

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print("Enter a number.") ; a=input
         print("log10(x)=", log10(x))
    


    PolynomialCurveFit(x, y, num, power, carray, r)

    Computes an equation of given power that best fits the given points.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 22-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of PolynomialCurveFit()
         clear();
         array xpoints[4];
         array ypoints[4];
         array carray[3];
         xpoints[1]=-1;
         xpoints[2]=0;
         xpoints[3]=1;
         xpoints[4]=2;
         ypoints[1]=4;
         ypoints[2]=10;
         ypoints[3]=20;
         ypoints[4]=34;
         string$=PolynomialCurveFit(xpoints,ypoints,4,2,carray,r);
         printf("%s\n",string$);
         printf("%f %f %f\n",carray[1],carray[2],carray[3]);
         printf("r = %f\n",r);
    


    pow(x, y)

    return x to the power of y

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(pow(2, 3))   # 8
    


    rand(x)

    Returns random value between zero (0) and x

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         print(rand(1))
    


    RandomGaussian(mu, sigma, x1, x2)

    Computes a pair of random numbers based on a normal distibution.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 21-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of RandomGaussian()
    


    ResizeArrayClear(array, index1Size, index2Size)

    Resize a one dimensional array ( a[col] ), or two dimensional array ( a[row, col] )

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 08-Oct-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of ResizeArrayClear()
     
           array a[3];
           array a2[3, 4];
     
           ResizeArrayClear(a, 5); # increase size of one dimensional array
           ResizeArrayClear(a, 2); # decrease size of one dimensional array
     
           ResizeArrayClear(a2, 5, 6); # increase size of two dimensional array
           ResizeArrayClear(a2, 2, 3); # decrease size of two dimensional array
    


    ResizeArrayPreserve(array, index1Size, index2Size)

    Resize a one dimensional array ( a[col] ), or two dimensional array ( a[row, col] )

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 08-Oct-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of ResizeArrayPreserve()
     
           array a[3];
           array a2[3, 4];
     
           ResizeArrayPreserve(a, 5); # increase size of one dimensional array
           ResizeArrayPreserve(a, 2); # decrease size of one dimensional array
     
           ResizeArrayPreserve(a2, 5, 6); # increase size of two dimensional array
           ResizeArrayPreserve(a2, 2, 3); # decrease size of two dimensional array
    


    round(x)

    Round x to nearest integer

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         print(round(10.5))   # 11
         print(round(-10.5)   #-10
    


    sec(x)

    trigonometric secant

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         print(sec(60/deg))
    


    secd(x)

    trigonometric secant (degree version)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    Sign(x)

    Return -1, 0 or 1 depending on sign of argument

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Jun-2000
    Modify Date: none
    Available in SML for Windows: Yes


    sin(x)

    trigonometric sine

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(sin(30/deg))   #.5
    


    sind(x)

    trigonometric sine (degree version)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    sinh(x)

    hyperbolic sine

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(sinh(0))   # 0
    


    sqr(x)

    Return the square of the argument

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(sqr(-3))   # 9
    


    sqrt(x)

    Returns the (positive) square root of the argument

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(sqrt(9))   # 3
         print(sqrt(-9))   # 0
    


    tan(x)

    trigonometric tangent

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

          clear()
          print(tan(90/deg))   # -2147483648 (roundoff error)
    


    tand(x)

    trigonometric tangent (degree version)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    tanh(x)

    hyperbolic tangent

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

          clear()
          print(tanh(0))   # 0
    


    Date functions (6)


    Date()

    Returns the current date in YYYYMMDD format

    Where:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         x=Date() ; print(x)
    


    DateDiff(yyyymmdd1, yyyymmdd2)

    Returns number of days between two dates

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         x=DateDiff(19960101, 19970101)
         print(x)   # 365
    


    DateToJulian(yyyymmdd)

    Converts YYYYMMDD format to Julian date

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         x=DateToJulian(19960101)
         print(x) ; print(JulianToDate(x))
    


    DateToString(yyyymmdd, format$)

    Convert a number date to a string.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of DateToString()
    


    JulianDate()

    Returns the current Julian date

    Where:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         x=JulianDate() ; print(x)
    


    JulianToDate(julian)

    Converts Julian date to YYYYMMDD format

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         x=DateToJulian(19960101)
         print(x) ; print(JulianToDate(x))
    


    Set functions (11)


    SetMajority(x1, x2, ...)

    Most frequently occurring value among arguments

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(SetMajority(1, 3, 3, 4, 4, 5))   # prints 3
    


    SetMax(x1, x2, ...)

    Returns the largest of argument values

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(SetMax(1, 3, 3, 4, 4, 5))   # prints 5
    


    SetMean(x1, x2, ...)

    Returns average of argument values

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(SetMean(1, 3, 5))   # prints 3
    


    SetMedian(x1, x2, ...)

    Returns the median of argument values

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(SetMean(1, 3, 7))   # prints 3
    


    SetMin(x1, x2, ...)

    Returns minimum value among arguments

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(SetMean(1, 3, 5))   # prints 1
    


    SetMinority(x1, x2, ...)

    Least frequently occurring value among arguments

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(SetMinority(1, 3, 3, 4, 4, 5))   # prints 1
    


    SetNum(x1, x2, ...)

    Returns the total number of elements

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(SetNum(2, 1, 3, 4, 99))   # returns 5
    


    SetSD(x1, x2, ...)

    Returns standard deviation of argument values

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(SetSD(2, 1, 3, 4, 99))
    


    SetSum(x1, x2, ...)

    Returns sum of arguments

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(SetSum(2, 1, 3, 4, 99))   # prints 109
    


    SetVariance(x1, x2, ...)

    Returns statistical variance of argument values

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(SetVariance(2, 1, 3, 4, 99))
    


    SetVariety(x1, x2, ...)

    Returns number of different values among arguments

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print(SetVariety(2, 1, 3, 4, 99))
    


    String functions (15)


    DegToStr(num)

    Convert an angle in degress to an angle in degress, minutes, seconds format.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear();
         print(DegToStr(94.345));
    


    FileNameGetExt(filename$)

    Returns file extension portion of path qualified filename

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of FileNameGetExt()
    


    FileNameGetName(filename$)

    Returns filename portion of path qualified filename

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of FileNameGetName()
    


    FileNameGetPath(filename$)

    Returns path portion of path qualified filename

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of FileNameGetPath()
    


    GetToken(string$, delimiters$, tokenNumber, compress)

    Get the nth token from a string

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 25-Sep-1998
    Modify Date: 05-Jun-2001
    Available in SML for Windows: Yes

    Example:

           # Example of GetToken()
           clear();
     
           str$ = "a  b c,d";
           delimit$ = " ,";
     
           n = NumberTokens(str$, delimit$);
     
           for i = 1 to n {
              token$ = GetToken(str$, delimit$, i);
              print(i, token$);
              }
    


    left$(str$, length)

    Return leftmost n characters of string

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print("Enter a sentence.") ; a$=input$()
         print("Enter # of chars to get.")) ; n=input()
         print(left$(a$, n))
    


    mid$(str$, start, length)

    Return n characters of string$ starting at m

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print("Enter a sentence.") ; a$=input$()
         print("Enter start position.")) ; m=input()
         print("Enter # of chars to get.")) ; n=input()
         print(mid$, m, n))
    


    NumberTokens(string$, delimiters$)

    Returns number of tokens in a string

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 25-Sep-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of NumberTokens()
           clear();
     
           str$ = "a  b c,d";
           delimit$ = " ,";
     
           n = NumberTokens(str$, delimit$);
     
           for i = 1 to n {
              token$ = GetToken(str$, delimit$, i);
              print(i, token$);
              }
    


    NumToStr(num)

    Convert a number to a string

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of NumToStr()
    


    right$(str$, length)

    Return right-most n characters of string$

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         a$="Reenter this sentence."
         print(a$) ; b$=input$()
         print("Enter n.")
         n=input()
         print(right$(a$, n))
         print(right$(b$, n))
    


    sprintf(format$, value, ...)

    Assign formatted text to a string variable

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         format$="%s%d%s\n%s"
         str1$="This is line " ; str2$="you see."
         str3$="This is line 2" ; number=1
         s4$=sprintf(format$, str1$, 1, str2$, str3$)
         print(s4$)
    


    strlen(str$)

    Returns number of characters in string variable

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

          clear()
          print("Enter a string. ") ; a$=input$()
          print(strlen(a$))
    


    StrToNum(str$)

    Return numerical value of string with number in it

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         print("Enter a string. ") ; a$=input$()
         b=StrToNum(a$) ; print(b/10)
    


    tolower$(string$)

    Convert string to lower case

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of tolower$()
    


    toupper$(string$)

    Convert string to upper case

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of toupper$()
    


    Database functions (32)


    DatabaseGetTableInfo(database, name)

    Get database table information

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 29-May-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of DatabaseGetTableInfo()
    


    FieldGetInfoByName(table, name$)

    Returns a field class.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of FieldGetInfoByName()
    


    FieldGetInfoByNumber(table, number)

    

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of FieldGetInfoByNumber()
    


    NumRecords(table)

    Returns number of records in database table

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputVector(V)
         # assume you know the table name, here we used the
         # Crow Butte Soils Vector object.  Note that 'YIELD'
         # is the correct field name,not 'yield'.
         n=NumRecords(V.poly.YIELD)
         print("Record count:", n)
    


    OpenCADDatabase(CADVar)

    Open the database subobject of a CAD object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Jun-2000
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

     XXX
    


    OpenDatabase(filename$, objectname$)

    Open a main level database

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 11-Sep-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of OpenDatabase()
    


    OpenRasterDatabase(Rast)

    Returns a database class for functions that need one.

    Where:

    Parameters:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of OpenRasterDatabase()
    


    OpenTINDatabase(TINVar)

    Open the database subobject of a TIN object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Jun-2000
    Modify Date: none
    Available in SML for Windows: Yes


    OpenVectorLineDatabase(Vect)

    Returns a database class for functions that need one.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of OpenVectorLineDatabase()
    


    OpenVectorPointDatabase(Vect)

    Open a Vector point database

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of OpenVectorPointDatabase()
    


    OpenVectorPolyDatabase(Vect)

    Returns a database class for functions that need one.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of OpenVectorPolyDatabase()
    


    RecordDelete(table, recordnum1, recordnum2, ...)

    Delete one or more records.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of RecordDelete()
    


    TableAddField(table, field)

    Append a field to a table

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 08-Jun-2001
    Modify Date: none
    Available in SML for Windows: Yes


    TableAddFieldFloat(table, name$, dispwidth, places)

    Add a new field of type float but inserts it before field "before".

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of TableAddFieldFloat()
    


    TableAddFieldInteger(table, name$, dispwidth)

    Add a new field of type integer but inserts it before field "before".

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of TableAddFieldInteger()
    


    TableAddFieldString(table, name$, maxlength, dispwidth)

    Add a new field of type string.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of TableAddFieldString()
    


    TableCopyToDBASE(table, filename$)

    Copy a database table to a DBASE file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 11-Sep-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of TableCopyToDBASE()
    


    TableCreate(database, name$, description$)

    Creates an empty table. Use TableAddField???() functions to add fields to it.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of TableCreate()
    


    TableExists(database, name)

    returns 1 if table exists, -1 if table doesn't exist

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 27-Nov-2000
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

     XXX
    


    TableGetInfo(Table)

    Returns a table class.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

     # Example of TableGetInfo()
     # (Assume Vect is a vector object)
     
     class DBTABLEINFO table;
     table = TableGetInvo(Vect.poly.YIELD);
     
     # Another example:
     tablename$ = "YIELD";
     table = TableGetInfo(Vect.poly.(tablename$));
     
    


    TableInsertFieldFloat(table, name$, before, dispwidth, places)

    Add a new field of type float but inserts it before field "before".

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of TableInsertFieldFloat()
    


    TableInsertFieldInteger(table, name$, before, dispwidth)

    Add a new field of type integer but inserts it before field "before".

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of TableInsertFieldInteger()
    


    TableInsertFieldString(table, name$, before, maxlength, dispwidth)

    Add a new field of type string but inserts it before field "before".

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of TableInsertFieldString()
    


    TableKeyFieldLookup(table, fieldName$, fieldValue1)

    Find the first record in a table that matches a given key

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 13-Jul-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of TableKeyFieldLookup()
    


    TableLinkDBASE(database, filename$, name$, description$)

    Makes a link to a dBase file.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of TableLinkDBASE()
    


    TableNewRecord(table, fieldValue1, fieldValue2, ...)

    Add new record to a database

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 29-May-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of TableNewRecord()
    


    TableOpen(database, tablename$)

    Open a database table

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 26-May-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of TableOpen()
    


    TableReadAttachment(table, element_number, records, element_type$)

    Returns records that are attached to or related to a given element in a object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 14-Nov-2000
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

     XXX
    


    TableReadFieldNum(table, fieldName$, recordNum)

    Read a number from a table (using DBTABLEINFO)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 12-Jun-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of TableReadFieldNum()
    


    TableReadFieldStr(table, fieldName$, recordNum)

    Read a string from a table (using DBTABLEINFO)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 12-Jun-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of TableReadFieldStr()
    


    TableWriteAttachment(table, element_number, records, num_records, element_type$)

    Attaches records in a table to an element in a object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 14-Nov-2000
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

     # Example:
     # Have the user select a vector object.
     # attach records 5 and 7 to polygon number 12.
     
     VECTOR Vect;
     class DBTABLEINFO table;
     array records[2];
     
     GetInputVector(Vect);
     table = TableGetInfo(Vect.poly.YIELD);
     records[1] = 5;
     records[2] = 7;
     TableWriteAttachment(table, 12, records, 2, "polygon");
     
    


    TableWriteRecord(table, recordNum, fieldValue1, fieldValue2, ...)

    Write values to an existing database record

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 15-Jun-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of TableWriteRecord()
    


    Raster functions (5)


    GetInputRaster(Raster, lins, cols, datatype$)

    Use a File/Object selection dialog to select an input Raster

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         lines=488 ; columns=361   # Crow Butte TM raster dimensions
         type$="8-bit unsigned"
         # allow only specific raster size and type
         GetInputRaster(R, lines, columns, type$) ; CloseRaster(R)
         # allow any size, but only a specific type
         GetInputRaster(R, 0, 0, type$) ; CloseRaster(R)
    


    GetInputRasters(Raster, ...)

    Get more than one raster.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of GetInputRasters()
    


    GetOutputRaster(Raster, lins, cols, datatype$)

    Use a File/Object selection dialog to select an output Raster

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         GetInputRaster(R)
         lines=NumLins(R) ; columns=NumCols(R) ; type$=RastType(R)
         # allow selection or creation of a raster identical
         # in size and type to R.
         GetOutputRaster(R2, lines, columns, type$)
         CloseRaster(R) ; CloseRaster(R2)
    


    RasterExists(filename$, objectname$)

    Determine if a Raster exists. Made obsolete by ObjectExists()

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of RasterExists()
    


    SelectInputObject(type$, prompt$, filename$, objname$)

    Popup dialog to select an object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 18-Nov-1998
    Modify Date: 17-May-2000
    Available in SML for Windows: Yes

    Example:

           # Example of SelectInputObject()
    


    Vector functions (33)


    CloseVector(Vector)

    Close a Vector object.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

          # example of CloseVector()
          GetInputVector(V);
          # do something with V
          CloseVector(V);
    


    CreateTempVector(Vector, flag1$, flag2$)

    Create a temporary Vector object.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 10-Apr-1998
    Modify Date: 19-May-1998
    Available in SML for Windows: Yes

    Example:

         # Example of CreateTempVector()
          CreateTempVector(VTemp)
          # do something with it
          CloseVector(VTemp)
    


    CreateVector(Vector, filename$, objname$, desc$, flag1$, flag2$)

    Create a Vector without using a dialog using same flags as GetOutputVector().

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-May-1998
    Modify Date: 19-May-1998
    Available in SML for Windows: Yes

    Example:

         # Example of CreateVector()
          CreateVector(Vpoly,    "c:/tnt/win32/createV.rvc", "Vpoly",    "Polygonal",  "Polygonal")
          CreateVector(Vplanar,  "c:/tnt/win32/createV.rvc", "Vplanar",  "Planar",     "Planar")
          CreateVector(Vnetwork, "c:/tnt/win32/createV.rvc", "Vnetwork", "Network",    "Network")
          CreateVector(Vnotopo,  "c:/tnt/win32/createV.rvc", "Vnotopo",  "NoTopology", "NoTopology")
    


    FindClosestLabel(Vector, x, y, georef, maxdist, distance)

    Find closest Vector label.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 22-Jun-1981
    Modify Date: 24-Jun-1999
    Available in SML for Windows: Yes

    Example:

          # example of FindClosestLabel()
          GetOutputVector(VIn, 1)
          georef = GetGeorefObject(VIn)
          numberLabels = NumVectorLabels(VIn)
          label = FindClosestLabel(VIn, 150000, 335000, georef, 1000000)
          VectorDeleteLabel(Vin, label)
          print("number, closest", numberLabels, label)
    


    FindClosestLine(Vector, x, y, georef, maxdist, distance)

    Return line element closest to x,y coordinates

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: 24-Jun-1999
    Available in SML for Windows: Yes

    Example:

         clear()
         GetInputVector(Vvar)
         georef = GetGeorefObject(Vvar)
         print("Enter x.") ; x = input()
         print("Enter y.") ; y = input()
         print("Enter maxDistance.") ; maxDistance = input()
         num = FindClosestLine(Vvar, x, y, georef, maxDistance)
         print(num)
    


    FindClosestNode(Vector, x, y, georef, maxdist, distance)

    Return node element closest to x,y coordinates

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: 24-Jun-1999
    Available in SML for Windows: Yes

    Example:

         clear()
         GetInputVector(Vvar)
         georef = GetGeorefObject(Vvar)
         print("Enter x.") ; x = input()
         print("Enter y.") ; y = input()
         print("Enter maxDistance.") ; maxDistance = input()
         num=FindClosestNode(Vvar, x, y, georef, maxDistance)
         print(num)
    


    FindClosestPoint(Vector, x, y, georef, maxdist, distance)

    Return point element closest to x,y coordinates

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: 24-Jun-1999
    Available in SML for Windows: Yes

    Example:

         clear()
         GetInputVector(Vvar)
         georef = GetGeorefObject(Vvar)
         print("Enter x.") ; x = input()
         print("Enter y.") ; y = input()
         print("Enter maxDistance.") ; maxDistance = input()
         num = FindClosestPoint(Vvar, x, y, georef, maxDistance)
         print(num)
    


    FindClosestPoly(Vector, x, y, georef, maxdist, distance)

    Return polygon element closest to x,y coordinates

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: 24-Jun-1999
    Available in SML for Windows: Yes

    Example:

         clear()
         GetInputVector(Vvar)
         georef = GetGeorefObject(Vvar)
         print("Enter x.") ; x = input()
         print("Enter y.") ; y = input()
         print("Enter maxDistance.") ; maxDistance = input()
         num=FindClosestPoly(Vvar, x, y, georef, maxDistance)
         print(num)
    


    GetInputVector(Vector)

    Use a File/Object selection dialog to select an input Vector

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         GetInputVector(Vvar)
         # do something with it
    


    GetInputVectorList(VectorList, prompt$)

    Get multiple Vector objects.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of GetInputVectorList()
    


    GetOutputVector(Vector, flag1$, flag2$)

    Open a vector object for use with vector toolkit funtions

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         array xPoints[10], yPoints[10]
         clear()
         # for multiple flags simply comma seperate them as below
         GetOutputVector(V, "VectorToolkit", "NoQtree,NoDBStatTable")
         # draw some boxes  - this will create polygons
         # all closed lines are converted to polygons
         xPoints[1] = 0
         yPoints[1] = 0
         xPoints[2] = 100
         yPoints[2] = 0
         xPoints[3] = 100
         yPoints[3] = 100
         xPoints[4] = 0
         yPoints[4] = 100
         xPoints[5] = 0
         yPoints[5] = 0
         VectorAddLine(V, 5, xPoints, yPoints)
         # now add some points
         for i = 1 to 4 {
            VectorAddPoint(V, xPoints[i] + 150, yPoints[i] + 150)
            }
         numPolys = NumVectorPolys(V)
         numberPoints = NumVectorPoints(V)
         print("number of polygons, points: ", numPolys, numberPoints)
    


    GetVectorLinePointList(Vector, xarray, yarray, line, zarray)

    Returns (via arrays xArray and yArray, and optional zArray) a list of points in a line.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         array xArray[10], yArray[10], zArray[10]   # will be resized automatically
         GetInputVector(Vvar)
         numLines = NumVectorLines(Vvar)
         nPoints = GetVectorLinePointList(Vvar, xArray, yArray, 1, zArray)
         for i = 1 to nPoints {
            print(xArray[i], yArray[i], zArray[i])
            }
    


    GetVectorNodeLineList(Vector, lines, node)

    Returns (via array linesArray) a list of lines attached to node.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         array linelist[10]   # will be resized automatically
         GetVectorNodeLineList(Vvar, linelist, 1)
    


    GetVectorPolyAdjacentPolyList(Vector, polygonList, polygonNumber)

    Returns list of all polygons that share a common line with a given polygon in a vector object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # reads the poly list of all adjacent polygons to a given polygon
         # it only returns polygons that have common lines !!!
         # not a single common node
         array polygonList[10] # array to hold poly list
         clear()
         GetInputVector(V)
         polygonNumber = 150 # polygonNumber = 150 works for cb_soils/CBSOILS_Lite
         numadjacent = GetVectorPolyAdjacentPolyList(V, polygonList, polygonNumber)
         temp$ = "number of polygons adjacent to polygon:"
         print(temp$, polygonNumber, " = ", numadjacent)
         for i = 1 to numadjacent {
            print(i, ":", polygonList[i])
            }
         print("Done")
    


    GetVectorPolyIslandList(Vector, islands, polygon)

    Returns (via array islandsArray) a list of islands of a polygon.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         array islandlist[10]   # will be resized automatically
         GetVectorPolyIslandList(Vvar, islandlist, 1)
    


    GetVectorPolyLineList(Vector, lines, polygon)

    Returns (via array linesArray) a list of lines forming a polygon

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         array linelist[10]   # will be resized automatically
         GetVectorPolyLineList(Vvar, linelist, 1)
    


    NumVectorLabels(Vector)

    Returns number of labels in a vector object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputVector(Vin)
         numLabels = NumVectorLabels(Vin)
         print("number of labels: ", numLabels)
    


    NumVectorLines(Vector)

    Returns number of lines in vector object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputVector(V)
         n=NumVectorLines(V)
         print("Line count: ", n)
    


    NumVectorNodes(Vector)

    Returns number of nodes in vector object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputVector(V)
         n=NumVectorNodes(V)
         print("Node count: ", n)
    


    NumVectorPoints(Vector)

    Returns number of points in vector object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputVector(V)
         n=NumVectorPoints(V)
         print("Point count: ", n)
    


    NumVectorPolys(Vector)

    Returns number of polygons in vector object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputVector(V)
         n=NumVectorPolys(V)
         print("Polygon count: ", n)
    


    OpenInputVectorList(VectorList, filename1$, objname1$, filename2$, objname2$, ...)

    Open multiple Vector objects

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 19-May-1998
    Modify Date: 19-May-1998
    Available in SML for Windows: Yes

    Example:

           # Example of OpenInputVectorList()
    


    OpenVector(Vector, filename$, objname$, flag1$, flag2$)

    Open a Vector without using a dialog using same flags as GetOutputVector().

    Where:

    Parameters:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of OpenVector()
          fileName$ = "c:/tnt/win32/vcBound/bound/Create.rvc"
          objectName$ = "VCreate"
          OpenVector(VOut, fileName$, objectName$, "VectorToolkit")
    


    VectMerge(Obj1, Obj2, ...)

    Merge two or more Vector objects

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of VectMerge()
    


    VectorAND(OperatorVector, SourceVector, flags$)

    Returns Vector that is the logical result of two input vectors

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         See example for VectorOR()
    


    VectorElementInRegion(Rgnvar, Vectvar, element, flag1$, flag2$)

    Tests a Vector element against a region.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

          # example of VectorElementInRegion()
          clear()
          GetInputVector(VIn)
          GetInputRegion(Region1)
          elementNumber = 1
          inRegion = VectorElementInRegion(Region1, VIn, elementNumber, "line", "CompletelyInside")
          if (inRegion)
             print( "element ", elem, "is CompletelyInside\n")
    


    VectorExists(filename$, objectname$)

    Determines if vector object exists in project file. Made obsolete by ObjectExists()

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         file$="d:/sf_data/haywsoil" ; ob$="hsoils"
         if (VectorExists(file$, ob$)) then
             print("Vector ", ob$, "Exists in ", file$)
    


    VectorExtract(OperatorVector, SourceVector, operation, flags$, pointQuery$, lineQuery$, polyQuery$)

    Returns Vector that is the result of the operator applied to the source

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # get the input vectors
         GetInputVector(Voperator)
         GetInputVector(Vsource)
         # get the output vector
         GetOutputVector(Vout1)
         # use default flags
         Vout1 = VectorExtract(Voperator, Vsource, "PartInside")
         GetOutputVector(Vout2)
         operation$ = "CompInside"
         flags$ = "TableRemoveDupRec,RemExRecords"
         # using optional flags (example showing two flags)
         Vout2 = VectorExtract(Voperator, Vout1, operation$, flag$)
    


    VectorOR(OperatorVector, SourceVector, flags$)

    Returns Vector that is the logical result of two input vectors

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    VectorReplace(OperatorVector, SourceVector, flags$)

    Returns Vector that is the logical result of two input vectors

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         See sample for VectorOR()
    


    VectorSubtract(OperatorVector, SourceVector, flags$)

    Returns Vector that is the logical result of two input vectors

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         See example for VectorOR()
    


    VectorToolkitInit(Vector, flag2$)

    Initialize an open Vector object for use with vector toolkit functions.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of VectorToolkitInit()
    


    VectorXOR(OperatorVector, SourceVector, flags$)

    Returns Vector that is the logical result of two input vectors

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         See example for VectorOR()
    


    Object functions (23)


    CloseStyleObject(style)

    Close an open style object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of CloseStyleObject()
    


    CopyObject(srcfilename$, srcobjectnumber, destfilename$, parentobjectnumber)

    Copy object and all of its subobjects.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         srcfile$="/data/standard/cb_tm.rvc"
         destfile$="/data/standard/temp.rvc"
         CopyObject(srcfile$, 1, destfile$, 1)
    


    CopyObjectWithoutSubobjects(srcfilename$, srcobjectnumber, destfilename$, parentobjectnumber)

    same as CopyObject() except no subobjects are copied.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         srcfile$="/data/standard/cb_tm.rvc"
         destfile$="/data/standard/temp.rvc"
         CopyObject(srcfile$, 1, destfile$, 1)
    


    CreateProjectFile(filename$, description$)

    Create a project file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 02-Sep-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of CreateProjectFile()
           CreateProjectFile("c:/ProjName.rvc", "Project file created in SML");
    


    DeleteObject(filename$, objectnumber)

    Deletes an object, (and all subobjects), by object number

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         fileName$="/data/standard/cb_tm.rvc"
         DeleteObject(fileName$, 1)
    


    GetAllObjectNumbers(filename$, array, object$, parent)

    Determines if object exists in project file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         array objnums[10];
         max = GetAllObjectNumbers("c:/tnt/benchmarks/benchmrk.sml",objnums,"Raster");
         print(max);
         for x=1 to max {
            print (objnums[x]);
         }
    


    GetObjectDescription(filename$, objectnumber)

    Gets the description of an object by object number

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         fileName$="/data/standard/cb_tm.rvc"
         GetObjectDescription(fileName$, 1)
    


    GetObjectExtents(Object, xMin, yMin, xMax, yMax, georef)

    Returns the x and y extents for a CAD, TIN, vector, or raster object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         # vector object
         GetInputVector(V)
         GetObjectExtents(V, xMin, yMin, xMax, yMax)
         print("vector extents xMin, yMin, xMax, yMax")
         printf("%10.2f %10.2f %10.2f %10.2f \n", xMin, yMin, xMax, yMax)
         vGeoref = GetLastUsedGeorefObject(V)
         GetObjectExtents(V, xMin, yMin, xMax, yMax, vGeoref)
         print("vector extents xMin, yMin, xMax, yMax")
         printf("%10.2f %10.2f %10.2f %10.2f \n", xMin, yMin, xMax, yMax)
    


    GetObjectExtentsRegion(Object, georef)

    Get the extents of an object as a region

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 16-Feb-2000
    Modify Date: none
    Available in SML for Windows: Yes


    GetObjectFileName(Object)

    Returns the path qualified RVC file name for an object.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputRaster(Rin)
         # get the RVC file name
         str$ = GetObjectFileName(Rin)
         objNum = GetObjectNumber(Rin)
         print("Raster Object Number: ", objNum, "RVC file Name: ", str$)
         GetInputVector(Vin)
         # get the RVC file name
         str$ = GetObjectFileName(Vin)
         objNum = GetObjectNumber(Vin)
         print("Vector Object Number: ", objNum, "RVC file Name: ", str$)
         GetInputTIN(Tin)
         # get the RVC file name
         str$ = GetObjectFileName(Tin)
         objNum = GetObjectNumber(Tin)
         print("TIN Object Number: ", objNum, "RVC file Name: ", str$)
    


    GetObjectName(filename$, objectnumber)

    Gets the name of an object by object number

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         fileName$="/data/standard/cb_tm.rvc"
         GetObjectName(fileName$, 1)
    


    GetObjectNumber(InObject)

    Returns the object number for a Raster, Vector, TIN, or CAD object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputRaster(Rin)
         # get the RVC file name
         str$ = GetObjectFileName(Rin)
         objNum = GetObjectNumber(Rin)
         print("Raster Object Number: ", objNum, "RVC file Name: ", str$)
         GetInputVector(Vin)
         # get the RVC file name
         str$ = GetObjectFileName(Vin)
         objNum = GetObjectNumber(Vin)
         print("Vector Object Number: ", objNum, "RVC file Name: ", str$)
         GetInputTIN(Tin)
         # get the RVC file name
         str$ = GetObjectFileName(Tin)
         objNum = GetObjectNumber(Tin)
         print("Tin Object Number: ", objNum, "RVC file Name: ", str$)
    


    GetObjectSize(Object)

    Get the number of bytes in an object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 18-Dec-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of GetObjectSize()
    


    GetObjectZExtents(Object, zMin, zMax)

    Returns the z extents for a CAD, TIN, or vector object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         # vector object
         GetInputVector(V)
         GetObjectZExtents(V, zMin, zMax)
         print("vector z extents - zMin, zMax")
         printf("%10.2f %10.2f \n", zMin, zMax)
    


    MakeRVCFolder(filename$, foldername$, description$, parentfolder$)

    Creates a folder in an RVC project.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Jul-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         MakeRVCFolder("c:/tnt/testdata.rvc","NickFolder","A folder for Nick","Users");
    


    ObjectExists(filename$, objectname$)

    Determines if object exists in project file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 24-Jun-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         clear()
         file$="d:/sf_data/haywsoil" ; ob$="hsoils"
         if (ObjectExists(file$, ob$)) then
             print("Object ", ob$, "Exists in ", file$)
    


    ObjectNumber(filename$, objectname$, type$)

    Returns an object number used by several object and display functions

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         fileName$="/data/standard/cb_tm.rvc"
         obname$="TM_2"
         objectNumberber=ObjectNumber(fileName$, obname$, "raster")
         GetObjectDescription(fileName$, objectNumberber)
    


    OpenStyleObject(filename$, objectname$)

    Open a style object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of OpenStyleObject()
    


    OpenStyleSubObject(Object)

    Open a style subobject

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of OpenStyleSubObject()
    


    ReadMetaData(Object)

    Reads an objects metadata as a string

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 05-Jan-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of ReadMetaData()
    


    SetObjectDescription(filename$, objectnumber, string$)

    Changes the description of an object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         fileName$="/data/standard/cb_tm.rvc"
         obname$="TM_2"
         objectNumberber=ObjectNumber(fileName$, obname$, "raster")
         SetObjectDescription(fileName$, objectNumberber, "TM Band 2")
    


    SubObjectNumber(filename$, parentobjectnumber, objectname$, type$)

    Returns an object number used by several object and display functions (similar to ObjectNumber() but looks under "parent" object for valid subobject)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

            fileName$="/data/standard/cb_tm.rvc"
            obname$="TM_2"
            objectNumberber=ObjectNumber(fileName$, obname$, "raster")
            subobjectNumber=SubObjectNumber(fileName$, objectNumberber, \
                                     "histogram1","HISTO")
            DeleteObject(fileName$, subobjectNumber)   # delete histogram
    


    WriteMetaData(Object, metaData$)

    Writes metadata to an object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 05-Jan-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of WriteMetaData()
    


    Matrix functions (13)


    AddMatrix(matOut, matLeft, matRight)

    Adds two matrices - (matrixOut = matrixLeft + matrixRight)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         clear()
         h1 = CreateMatrix(2, 2)   # create three matrices
         h2 = CreateMatrix(2, 2)
         h3 = CreateMatrix(2, 2)
         # fill the matrices with some values
         for r = 0 to 1 {
            for c = 0 to 1 {
               SetMatrixItem(h1, r, c, r + c)
               SetMatrixItem(h2, r, c, (r + c) * 2)
               SetMatrixItem(h3, r, c, (r + c) * 3)
               }
            }
         # now add h1 to h2, result is h3
         AddMatrix(h3, h1, h2)
         # print the resulting matrix h3
         print("add h1 + h2")
         for r = 0 to 1 {
            for c = 0 to 1 {
               a = GetMatrixItem(h3, r, c)
               printf("%8.4f ", a)
               }
            print(" ")
            }
         # destroy the matrices
         DestroyMatrix(h1)
         DestroyMatrix(h2)
         DestroyMatrix(h3)
    


    AddMatrixScaler(matrix, value)

    Adds scalar to each element of a matrix

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         clear()
         h1 = CreateMatrix(2, 2)   # create a matrix
         # fill the matrix with some values
         for r = 0 to 1 {
            for c = 0 to 1 {
               SetMatrixItem(h1, r, c, r + c)
               }
            }
         # print the matrix
         print("original matrix")
         for r = 0 to 1 {
            for c = 0 to 1 {
               a = GetMatrixItem(h1, r, c)
               printf("%8.4f ", a)
               }
            print(" ")
            }
         AddMatrixScaler(h1, 100.0) # add 100.0 to each element
         # print the resulting matrix
         print("after adding 100.0 to each element")
         for r = 0 to 1 {
            for c = 0 to 1 {
               a = GetMatrixItem(h1, r, c)
               printf("%8.4f ", a)
               }
            print(" ")
            }
         # destroy the matrix
         DestroyMatrix(h1)
    


    CreateMatrix(numRows, numCols)

    Creates a matrix - returns a valid matrix handle

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         clear()
         h1 = CreateMatrix(2, 2)   # create a matrix
         # fill the matrices with some values
         for r = 0 to 1 {
            for c = 0 to 1 {
               SetMatrixItem(h1, r, c, r + c)
               }
            }
         print("Printing the matrix:") # print the matrix
         for r = 0 to 1 {
            for c = 0 to 1 {
               a = GetMatrixItem(h1, r, c)
               printf("%8.4f ", a)
               }
            print(" ")
            }
         # destroy the matrix
         DestroyMatrix(h1)
    


    DestroyMatrix(matrix)

    Destroys a previously created matrix

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         clear()
         h1 = CreateMatrix(2, 2)   # create a matrix
         # fill the matrices with some values
         for r = 0 to 1 {
            for c = 0 to 1 {
               SetMatrixItem(h1, r, c, r + c)
               }
            }
         print("Printing the matrix:")
         # print the matrix
         for r = 0 to 1 {
            for c = 0 to 1 {
               a = GetMatrixItem(h1, r, c)
               printf("%8.4f ", a)
               }
            print(" ")
            }
         # destroy the matrix
         DestroyMatrix(h1)
    


    GetMatrixColSize(matrix)

    Returns the number of columns in a matrix

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         #
         # proc printMatrixToConsole(matHandle, formatStr$)
         #
         # procedure to print out a matrix to console - row major order
         # parameters:
         #    matHandle   a matrix handle
         #    format$     string to control output format
         #
         proc printMatrixToConsole(matHandle, formatStr$) {
         # print the matrix handle
         printf("%s%d\n", "Matrix: ", matHandle)
         # get the size of the matrix
         lastRow = GetMatrixRowSize(matHandle) - 1
         lastCol = GetMatrixColSize(matHandle) - 1
         for row = 0 to lastRow {
            for col = 0 to lastCol {
               printf(formatStr$, GetMatrixItem(matHandle, row, col))
               }
            print(" ")
            }
         print(" ") # print blank line after matrix output
         } # end of proc printMatrix()
         # start of code
         clear()
         h1 = CreateMatrix(2, 2)   # create a matrix
         # fill the matrix with some values
         for r = 0 to 1 {
            for c = 0 to 1 {
               SetMatrixItem(h1, r, c, r + c)
               }
            }
         # call procedure printMatrixToConsole()
         printMatrixToConsole(h1, "%8.4f ")
         # destroy the matrix
         DestroyMatrix(h1)
    


    GetMatrixItem(matrix, row, col)

    Returns value of matrix element

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         #
         # proc printMatrixToConsole(matHandle, formatStr$)
         #
         # procedure to print out a matrix to console - row major order
         # parameters:
         #    matHandle   a matrix handle
         #    format$     string to control output format
         #
         proc printMatrixToConsole(matHandle, formatStr$) {
         # print the matrix handle
         printf("%s%d\n", "Matrix: ", matHandle)
         # get the size of the matrix
         lastRow = GetMatrixRowSize(matHandle) - 1
         lastCol = GetMatrixColSize(matHandle) - 1
         for row = 0 to lastRow {
            for col = 0 to lastCol {
               printf(formatStr$, GetMatrixItem(matHandle, row, col))
               }
            print(" ")
            }
         print(" ") # print blank line after matrix output
         } # end of proc printMatrix()
         # start of code
         clear()
         h1 = CreateMatrix(2, 2)   # create a matrix
         # fill the matrix with some values
         for r = 0 to 1 {
            for c = 0 to 1 {
               SetMatrixItem(h1, r, c, r + c)
               }
            }
         # call procedure printMatrixToConsole()
         printMatrixToConsole(h1, "%8.4f ")
         # destroy the matrices
         DestroyMatrix(h1)
    


    GetMatrixRowSize(matrix)

    Returns the number of rows in a matrix

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         #
         # proc printMatrixToConsole(matHandle, formatStr$)
         #
         # procedure to print out a matrix to console - row major order
         # parameters:
         #    matHandle   a matrix handle
         #    format$     string to control output format
         #
         proc printMatrixToConsole(matHandle, formatStr$) {
         # print the matrix handle
         printf("%s%d\n", "Matrix: ", matHandle)
         # get the size of the matrix
         lastRow = GetMatrixRowSize(matHandle) - 1
         lastCol = GetMatrixColSize(matHandle) - 1
         for row = 0 to lastRow {
            for col = 0 to lastCol {
               printf(formatStr$, GetMatrixItem(matHandle, row, col))
               }
            print(" ")
            }
         printf(" ") # print blank line after matrix output
         } # end of proc printMatrix()
         # start of code
         clear()
         h1 = CreateMatrix(2, 2)   # create a matrix
         # fill the matrix with some values
         for r = 0 to 1 {
            for c = 0 to 1 {
               SetMatrixItem(h1, r, c, r + c)
               }
            }
         # call procedure printMatrixToConsole()
         printMatrixToConsole(h1, "%8.4f ")
         # destroy the matrices
         DestroyMatrix(h1)
    


    InvertMatrix(matOut, matIn)

    Inverts a matrix

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         #
         # proc printMatrixToConsole(matHandle, formatStr$)
         #
         # procedure to print out a matrix to console - row major order
         # parameters:
         #    matHandle   a matrix handle
         #    format$     string to control output format
         #
         proc printMatrixToConsole(matHandle, formatStr$) {
         # print the matrix handle
         printf("%s%d\n", "Matrix: ", matHandle)
         # get the size of the matrix
         lastRow = GetMatrixRowSize(matHandle) - 1
         lastCol = GetMatrixColSize(matHandle) - 1
         for row = 0 to lastRow {
            for col = 0 to lastCol {
               printf(formatStr$, GetMatrixItem(matHandle, row, col))
               }
            print(" ")
            }
         print(" ") # print blank line after matrix output
         } # end of proc printMatrix()
         # start of program
         clear()
         h1 = CreateMatrix(2, 2)   # create three matrices
         h2 = CreateMatrix(2, 2)
         h3 = CreateMatrix(2, 2)
         # fill the matrices values known to produce matrix
         # with an inverse
         SetMatrixItem(h1, 0, 0, 1.0)
         SetMatrixItem(h1, 0, 1, 2.0)
         SetMatrixItem(h1, 1, 0, 3.0)
         SetMatrixItem(h1, 1, 1, 4.0)
         # print the resulting matrix
         print("matrix before inverse")
         printMatrixToConsole(h1, "%8.4f ")
         # now calculate the inverse of h1
         InvertMatrix(h2, h1)
         # print the inverse matrix
         # result should be | -2.0  1.0 |
         #                  |  1.5  -.5 |
         print("matrix after inverse")
         printMatrixToConsole(h2, "%8.4f ")
         # now multiply matrix 1 by it's inverse
         # result matrix h3 should be identity matrix
         MultiplyMatrix(h3, h1, h2)
         print("matrix times its inverse")
         printMatrixToConsole(h3, "%8.4f ")
         # destroy the matrices
         DestroyMatrix(h1)
         DestroyMatrix(h2)
         DestroyMatrix(h3)
    


    MultiplyMatrix(matOut, matLeft, matRight)

    Multiplies two matrices - (matrixOut = matrixLeft * matrixRight)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         #
         # proc printMatrixToConsole(matHandle, formatStr$)
         #
         # procedure to print out a matrix to console - row major order
         # parameters:
         #    matHandle   a matrix handle
         #    format$     string to control output format
         #
         proc printMatrixToConsole(matHandle, formatStr$) {
         # print the matrix handle
         printf("%s%d\n", "Matrix: ", matHandle)
         # get the size of the matrix
         lastRow = GetMatrixRowSize(matHandle) - 1
         lastCol = GetMatrixColSize(matHandle) - 1
         for row = 0 to lastRow {
            for col = 0 to lastCol {
               printf(formatStr$, \
               GetMatrixItem(matHandle, row, col))
               }
            print(" ")
            }
         print(" ") # print blank line after matrix output
         } # end of proc printMatrix()
         # start of program
         clear()
         h1 = CreateMatrix(2, 2)   # create three matrices
         h2 = CreateMatrix(2, 2)
         h3 = CreateMatrix(2, 2)
         # create a matrix to test
         # result should be | 1  2 |
         #                  | 3  4 |
         SetMatrixItem(h1, 0, 0, 1.0)
         SetMatrixItem(h1, 0, 1, 2.0)
         SetMatrixItem(h1, 1, 0, 3.0)
         SetMatrixItem(h1, 1, 1, 4.0)
         # print the resulting matrix
         print("Original matrix:")
         printMatrixToConsole(h1, "%8.4f ")
         # create an identity matrix
         # result should be | 1  0 |
         #                  | 0  1 |
         SetMatrixItem(h2, 0, 0, 1.0)
         SetMatrixItem(h2, 0, 1, 0.0)
         SetMatrixItem(h2, 1, 0, 0.0)
         SetMatrixItem(h2, 1, 1, 1.0)
         # print the resulting matrix
         print("Identity matrix:")
         printMatrixToConsole(h2, "%8.4f ")
         # now multiply h1 by the h2 (identity matrix)
         # result in h3
         MultiplyMatrix(h3, h2, h1)
         # print the result - should be same as original
         print("Matrix after multiplication by identity:")
         printMatrixToConsole(h3, "%8.4f ")
         # destroy the matrices
         DestroyMatrix(h1)
         DestroyMatrix(h2)
         DestroyMatrix(h3)
    


    MultiplyMatrixScaler(matrix, value)

    Multiplies each element of a matrix by a scaler

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         clear()
         h1 = CreateMatrix(2, 2)   # create a matrix
         # fill the matrix with some values
         for r = 0 to 1 {
            for c = 0 to 1 {
               SetMatrixItem(h1, r, c, r + c)
               }
            }
         # print the matrix
         print("original matrix")
         for r = 0 to 1 {
            for c = 0 to 1 {
               a = GetMatrixItem(h1, r, c)
               printf("%8.4f ", a)
               }
            print(" ")
            }
         # multiply each element by 100.0
         MultiplyMatrixScaler(h1, 100.0)
         # print the resulting matrix
         print("After multiplying each element by 100.0")
         for r = 0 to 1 {
            for c = 0 to 1 {
               a = GetMatrixItem(h1, r, c)
               printf("%8.4f ", a)
               }
            print(" ")
            }
         # destroy the matrix
         DestroyMatrix(h1)
    


    SetMatrixItem(matrix, row, col, value)

    Sets the element of a matrix to a value.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         clear()
         h1 = CreateMatrix(2, 2)   # create a matrix
         # fill the matrix with some values
         for r = 0 to 1 {
            for c = 0 to 1 {
               SetMatrixItem(h1, r, c, r + c)
               }
            }
         # print the matrix
         print("The matrix:")
         for r = 0 to 1 {
            for c = 0 to 1 {
               a = GetMatrixItem(h1, r, c)
               printf("%8.4f ", a)
               }
            print(" ")
            }
         # destroy the matrix
         DestroyMatrix(h1)
    


    SubMatrix(matOut, matLeft, matRight)

    Subtracts two matrices - (matrixOut = matrixLeft - matrixRight)

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         clear()
         h1 = CreateMatrix(2, 2)   # create three matrices
         h2 = CreateMatrix(2, 2)
         h3 = CreateMatrix(2, 2)
         # fill the matrices with some values
         for r = 0 to 1 {
            for c = 0 to 1 {
               SetMatrixItem(h1, r, c, r + c)
               SetMatrixItem(h2, r, c, (r + c) * 2)
               SetMatrixItem(h3, r, c, (r + c) * 3)
               }
            }
         # now subtract h2 from h1, result is h3
         SubMatrix(h3, h1, h2)
         print("Subtract h2 from h1")
         # print the resulting matrix h3
         for r = 0 to 1 {
            for c = 0 to 1 {
               a = GetMatrixItem(h3, r, c)
               printf("%8.4f ", a)
               }
            print(" ")
            }
         # destroy the matrices
         DestroyMatrix(h1)
         DestroyMatrix(h2)
         DestroyMatrix(h3)
    


    TransposeMatrix(matOut, matIn)

    Transposes rows and columns of a matrix

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Oct-1997
    Modify Date: 08-Mar-1999
    Available in SML for Windows: Yes

    Example:

         #
         # proc printMatrixToConsole (matHandle, formatStr$)
         #
         # procedure to print out a matrix to console - row
         # major order
         # parameters:
         #    matHandle   a matrix handle
         #    format$     string to control output format
         #
         proc printMatrixToConsole(matHandle, formatStr$) {
         # print the matrix handle
         printf("%s%d\n", "Matrix: ", matHandle)
         # get the size of the matrix
         lastRow = GetMatrixRowSize(matHandle) - 1
         lastCol = GetMatrixColSize(matHandle) - 1
         for row = 0 to lastRow {
            for col = 0 to lastCol {
               printf(formatStr$, \
               GetMatrixItem(matHandle, row, col))
               }
            print(" ")
            }
         print( " " ) # print blank line after matrix output
         } # end of proc printMatrix()
         # start of program
         clear()
         h1 = CreateMatrix(2, 2)   # create two matrices
         h2 = CreateMatrix(2, 2)
         # fill the matrix with some values
         SetMatrixItem(h1, 0, 0, 1.0)
         SetMatrixItem(h1, 0, 1, 2.0)
         SetMatrixItem(h1, 1, 0, 3.0)
         SetMatrixItem(h1, 1, 1, 4.0)
         # print the resulting matrix
         # result should be | 1  2 |
         #                  | 3  4 |
         print("matrix before transpose")
         printMatrixToConsole(h1, "%8.4f ")
         # now calculate the transpose of h1
         TransposeMatrix(h2, h1)
         # print the inverse matrix
         # result should be | 1  3 |
         #                  | 2  4 |
         print("matrix after transpose")
         printMatrixToConsole(h2, "%8.4f ")
         # destroy the matrices
         DestroyMatrix(h1)
         DestroyMatrix(h2)
    


    Georeference functions (19)


    CopyGeorefToObject(Object, georef)

    Write a georeference subobject

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 18-Jun-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of CopyGeorefToObject()
    


    CreateControlPointGeoref(Object, numberPoints, xSource, ySource, zSource, xDestination, yDestination, zDestination, xSourceAccuracy, ySourceAccuracy, zSourceAccuracy, xDestinationAccuracy, yDestinationAccuracy, zDestinationAccuracy, mapProjectionParm)

    Creates a control point georeference object.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # SML script to demonstrate creation of georef object in SML
         #
         # 1. opens a raster - cb_tm/blue
         # 2. creates a new vector object and draws a box
         # 3. georeferences the vector so that it bounds the raster
         #
         # NOTES:
         # 1. you must use a minimum of three control points
         # 2. they must not be all on the same line!
         #
         #################################################################
         # alternate method to get extents of object
         #
         # can use this in general - if last parm is omitted then
         # returns object coordinates
         #
         # rgeoref = GetLastUsedGeorefObject(Rin)
         # GetObjectExtents(Rin, rxMin, ryMin, rxMax, ryMax, rgeoref)
         #
         # now do same for vector except do not use georef parm
         # this will give object coordinates
         # GetObjectExtents(Vout, vxMin, vyMin, vxMax, vyMax)
         #
         #################################################################
         # the source arrays will hold the object coordinates
         # for a raster this would be cell values
         # for vector, CAD, TIN it would be object, (non-georeferenced),
         # coordinates
         array xsrc[5], ysrc[5], zsrc[5]
         # the destination arrays will hold the appropriate,
         # (georeferenced), values
         array xdest[5], ydest[5], zdest[5]
         # arrays to hold vector points to draw box
         array xpoints[10]
         array ypoints[10]
         # fill in the control points (source and destination)
         # need a minimum of three
         # we will assume a georeferenced raster and a non-georeferenced
         # vector that we wish to georeference to the raster
         clear()
         # get the raster and vector
         GetInputRaster(Rin)
         # get number of lines and columns
         numlines = NumLins(Rin)
         numcols = NumCols(Rin)
         # get the upper left (UL), lower right (LR)
         # upper right (UR), and lower left (LL) coordinates
         rgeoref = GetLastUsedGeorefObject(Rin)
         ObjectToMap(Rin, 0, 0, rgeoref, xUL, yUL)
         ObjectToMap(Rin, numcols, numlines, rgeoref, xLR, yLR)
         ObjectToMap(Rin, numcols, 0, rgeoref, xUR, yUR)
         ObjectToMap(Rin, 0, numlines, rgeoref, xLL, yLL)
         printf("UL: %7.2f %7.2f\n", xUL, yUL)
         printf("UR: %7.2f %7.2f\n", xUR, yUR)
         printf("LL: %7.2f %7.2f\n", xLL, yLL)
         printf("LR: %7.2f %7.2f\n", xLR, yLR)
         # create a new vector here !!!!
         # we will draw a box and match it to the raster
         GetOutputVector(Vout, "VectorToolkit")
         # draw the box - this will create a polygon
         # fill in the points
         xpoints[1] = 0
         ypoints[1] = 0
         xpoints[2] = 100
         ypoints[2] = 0
         xpoints[3] = 100
         ypoints[3] = 100
         xpoints[4] = 0
         ypoints[4] = 100
         xpoints[5] = 0
         ypoints[5] = 0
         VectorAddLine(Vout, 5, xpoints, ypoints)
         # fill in four control points - one for each corner
         # the source values are for the vector
         # control point 1 - upper left corner
         xsrc[1] = 0
         ysrc[1] = 100
         zsrc[1] = 0
         xdest[1] = xUL
         ydest[1] = yUL
         zdest[1] = 0
         # control point 2 - lower right corner
         xsrc[2] = 100
         ysrc[2] = 0
         zsrc[2] = 0
         xdest[2] = xLR
         ydest[2] = yLR
         zdest[2] = 0
         # control point 3 - upper right corner
         xsrc[3] = 100
         ysrc[3] = 100
         zsrc[3] = 0
         xdest[3] = xUR
         ydest[3] = yUR
         zdest[3] = 0
         # control point 3 - lower left corner
         xsrc[4] = 0
         ysrc[4] = 0
         zsrc[4] = 0
         xdest[4] = xLL
         ydest[4] = yLL
         zdest[4] = 0
         # print out the control points
         for i = 1 to 4 {
            printf("%s %2d %7.2f %7.2f %7.2f  ",
                   "i: xsrc, ysrc, zsrc, xdest, ydest, zdest ",
                   i, xsrc[i], ysrc[i], zsrc[i])
            printf("%7.2f %7.2f %7.2f\n", xdest[i], ydest[i], zdest[i])
            }
         # set number of control points
         numberPoints = 4
         # now create the georef via dialog
         CreateControlPointGeoref(Vout, numberPoints, xsrc, ysrc, zsrc,
                                  xdest, ydest, zdest)
         GeorefFree(rgeoref) # clean up
         CloseRaster(Rin)
    


    CreateControlPointGeorefDefaultAccuracy(Object, mapProjectionParm, numberPoints, xSource, ySource, xDestination, yDestination, zDestination)

    Same as CreateControlPointGeoref but without accuracy parameters

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 16-May-2001
    Modify Date: none
    Available in SML for Windows: Yes


    CreateControlPointGeorefFromGeoref(Object, georef, numberPoints, xSource, ySource, zSource, xDestination, yDestination, zDestination, xSourceAccuracy, ySourceAccuracy, zSourceAccuracy, xDestinationAccuracy, yDestinationAccuracy, zDestinationAccuracy)

    Creates a control point georeference object using an existing georeference for the projection system.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

          # Example of CreateControlPointGeorefFromGeoref()
          array xsrc[5], ysrc[5], zsrc[5]
          array xdest[5], ydest[5], zdest[5]
          clear()
          # get the raster
          GetInputRaster(RIn)
          #create a new raster
          CreateRaster(RNew, "c:/tnt/win32/newras.rvc", "newras", "description", 200, 200, "8-bit unsigned");
          # duplicate the corrosponding values
          for r = 1 to 200 {
             for c = 1 to 200 {
                RNew[r,c] = RIn[r,c];
                }
             }
          # get number of lines and columns
          numlines = NumLins(RIn)
          numcols = NumCols(RIn)
          # get the upper left (UL), lower right (LR)
          # upper right (UR), and lower left (LL) coordinates
          # of the portion of the raster we are going to duplicate
          geoOrg = GetLastUsedGeorefObject(RIn)
          ObjectToMap(RIn, 0, 0, geoOrg, xUL, yUL)
          ObjectToMap(RIn, 200, 200, geoOrg, xLR, yLR)
          ObjectToMap(RIn, 200, 0, geoOrg, xUR, yUR)
          ObjectToMap(RIn, 0, 200, geoOrg, xLL, yLL)
          printf("UL: %7.2f %7.2f\n", xUL, yUL)
          printf("UR: %7.2f %7.2f\n", xUR, yUR)
          printf("LL: %7.2f %7.2f\n", xLL, yLL)
          printf("LR: %7.2f %7.2f\n", xLR, yLR)
          # fill in four control points - one for each corner
     
          # control point 1 - upper left corner
          xsrc[1] = 0
          ysrc[1] = 0
          zsrc[1] = 0
          xdest[1] = xUL
          ydest[1] = yUL
          zdest[1] = 0
          # control point 2 - lower right corner
          xsrc[2] = 200
          ysrc[2] = 200
          zsrc[2] = 0
          xdest[2] = xLR
          ydest[2] = yLR
          zdest[2] = 0
          # control point 3 - upper right corner
          xsrc[3] = 200
          ysrc[3] = 0
          zsrc[3] = 0
          xdest[3] = xUR
          ydest[3] = yUR
          zdest[3] = 0
          # control point 3 - lower left corner
          xsrc[4] = 0
          ysrc[4] = 200
          zsrc[4] = 0
          xdest[4] = xLL
          ydest[4] = yLL
          zdest[4] = 0
          # print out the control points
          for i = 1 to 4 {
             printf("%s %2d %7.2f %7.2f %7.2f  ", "i: xsrc, ysrc, zsrc, xdest, ydest, zdest ", i, xsrc[i], ysrc[i], zsrc[i])
             printf("%7.2f %7.2f %7.2f\n", xdest[i], ydest[i], zdest[i])
             }
          # set number of control points
          numpoints = 4
          # now create the georef without dialog
          geoNew = CreateControlPointGeorefFromGeoref(RNew, geoOrg, numpoints, xsrc, ysrc, zsrc, xdest, ydest, zdest)
          GeorefFree(geoOrg)
          GeorefFree(geoNew)
          CloseRaster(RIn);
          CloseRaster(RNew);
    


    CreateImpliedGeoref(Object, mapProjectionParm)

    Create an implied georeference subobject

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 16-May-2000
    Modify Date: none
    Available in SML for Windows: Yes


    GeorefAlloc()

    Returns number of a new georeference subobject

    Where:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         geonum1 = GeorefAlloc() ; geonum2 = GeorefAlloc()
         print(geonum1, geonum2)
         GeorefFree(geonum1) ; GeorefFree(geonum2)
    


    GeorefAngleToNorth(georef, x, y)

    Returns the angle between north and a line from center to x,y

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputRaster(R)
         georef = GetGeorefObject(R)
         print("Enter x value.") ; x = input()
         print("Enter y value.") ; y = input()
         angle = GeorefAngleToNorth(georef, x, y)
         print("Angle between line connecting center of object ",
               "to x,y and true north:",angle/deg)
         CloseRaster(R)
    


    GeorefFree(georef)

    Free georeference object with num as its ID

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         geonum = GeorefAlloc() ; print(geonum)
         GeorefFree(geonum)
    


    GeorefGetParms(georef)

    Open dialog for selecting georeference subobject

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputRaster(R)   # get input raster
         g = GetGeorefObject(R)   # get georeference of object
         # change parameters of that georeference and
         # copy the results to a new ID
         h = GeorefGetParms(g)
         print(g, h)
         GeorefFree(g) ; CloseRaster(R)
    


    GeorefSetProjection(georef, projection)

    Set the projection of a Georef

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 17-Jun-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of GeorefSetProjection()
    


    GeorefTrans(from_georef, from_x, from_y, to_georef, to_x, to_y)

    Transform point to new georeferenced value

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputRaster(R)
         g1 = GetGeorefObject(R)
         print("Enter x1") ; input x1
         print("Enter x2") ; input x2
         g2 = GeorefGetParms()
         GeorefTrans(g1, x1, y1, g2, x2, y2)
         print("Original: ", x1, y1)
         print("\nNew: ", x2, y2)
         GeorefFree(g) ; CloseRaster(R)
    


    GetGeorefObject(Object)

    Return ID number of named georeference subobject

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         GetInputRaster(R)
         g=GetGeorefObject(R)
         # get georeference, change projection
         GeorefGetParms(g)
         # Do something with the georef here
         GeorefFree(g)
    


    GetLastUsedGeorefObject(Object)

    Return number of a most recently used georeference subobject

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         GetInputRaster(R)
         g=GetLastUsedGeorefObject(R)
         # get most recent georeference
         # Translate top left corner of raster to
         # map coordinates last used by R
         ObjectToMap(R, 0, 0, g, s, y)
         print("Top left corner is at\nLat: ", y, "\nlon: ", x)
         GeorefFree(g) ; CloseRaster(R)
    


    MapToObject(georef, map_x, map_y, Object, x, y)

    Transform georeferenced location from map coordinates to object coordinates

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputRaster(R)
         g=GetGeorefObject(R)
         print("Enter x1.") ; input(x1)
         print("Enter y1.") ; input(y1)
         MapToObject(g, x1, y1, R, x2, y2)
         print("Map: ", x1, y1) ; print("/nObject: ", x2, y2)
         GeorefFree(g) ; CloseRaster(R)
    


    ObjectToMap(Object, x, y, georef, map_x, map_y)

    Transform object coordinates to georeferenced location

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         GetInputRaster(R)
         g=GetGeorefObject(R)
         print("Enter ox.") ; input(x1)
         print("Enter oy.") ; input(y1)
         ObjectToMap(g, x1, y1, R, x2, y2)
         print("Object: ", ox,o y) ; print("/nMap: ", mx, my)
         GeorefFree(g) ; CloseRaster(R)
    


    ProjDistanceToMeters(projection, x1, y1, x2, y2)

    Compute distance in meters between two points in specified projection. If the coordinate system is Latitude-Longitude the distance along a geodetic is returned (actual distance over curved surface).

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 09-Jan-2001
    Modify Date: none
    Available in SML for Windows: Yes


    ReadControlPoints(Object, xSource, ySource, zSource, xDestination, yDestination, zDestination)

    Reads the control points of the last used georeference attached to an object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-Jul-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

          # Example of ReadControlPoints()
          array xS[5], yS[5], zS[5], xD[5], yD[5], zD[5]
          clear();
          GetInputRaster(R);
          numPoints = ReadControlPoints(R, xS, yS, zS, xD, yD, zD);
          for i = 1 to numPoints {
             print(xS[i], yS[i], zS[i], " - ", xD[i], yD[i], zD[i]);
             }
    


    TransPoint2D(point, transparm, invert)

    Transform 2D point using transparm

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 22-May-1998
    Modify Date: 22-May-1998
    Available in SML for Windows: Yes

    Example:

           # Example of TransPoint2D()
    


    WriteControlPoints(Object, numberPoints, xSource, ySource, zSource, xDestination, yDestination, zDestination)

    Write control points to the last used georeference attached to an object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-Jul-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

          # Example of WriteControlPoints()
          array xS[5], yS[5], zS[5], xD[5], yD[5], zD[5]
          xS[1] = 0;
          yS[1] = 0;
          zS[1] = 0;
          xD[1] = 333354;
          yD[1] = 162833;
          zD[1] = 0;
          xS[2] = 361;
          yS[2] = 488;
          zS[2] = 0;
          xD[2] = 343050;
          yD[2] = 148559;
          zD[2] = 0;
          xS[3] = 0;
          yS[3] = 488;
          zS[3] = 0;
          xD[3] = 332803;
          yD[3] = 148958;
          zD[3] = 0;
          xS[4] = 361;
          yS[4] = 0;
          zS[4] = 0;
          xD[4] = 343000;
          yD[4] = 162000;
          zD[4] = 0;
          GetInputRaster(R);
          WriteControlPoints(R, 4, xS, yS, zS, xD, yD, zD);
    


    Color Palette functions (6)


    ColorMapFromRastVar(Raster, nameOrNum)

    Read colormap from under raster.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of ColorMapFromRastVar()
    


    ColorMapGetColor(colormap, index)

    Get a color from a colormap

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of ColorMapGetColor()
    


    ColorMapSetColor(colormap, index, color)

    Set a colormap color given a class color structure.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of ColorMapSetColor()
    


    ColorMapSetColorHIS(colormap, index, hue, intensity, saturation)

    Set a colormap color to given HIS values.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of ColorMapSetColorHIS()
    


    ColorMapSetColorRGB(colormap, index, red, green, blue, range)

    Set a colormap color to given RGB values.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of ColorMapSetColorRGB()
    


    ColorMapWriteToRastVar(Raster, colormap, name$, description$)

    Write a colormap under a raster.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of ColorMapWriteToRastVar()
    


    Style functions (7)


    StyleReadBitmapPattern(style, name$)

    Read a BITMAPPATTERN from a style object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of StyleReadBitmapPattern()
    


    StyleReadLinePattern(style, name$)

    Read a LINEPATTERN from a style object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of StyleReadLinePattern()
    


    StyleReadLineStyle(styleobj, stylename$)

    Read a line style from a style object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 28-Sep-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of StyleReadLineStyle()
    


    StyleReadPointStyle(styleobj, stylename$)

    Read a point style from a style object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 28-Sep-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of StyleReadPointStyle()
    


    StyleReadPointSymbol(style, name$)

    Read a POINTSYMBOL from a style object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of StyleReadPointSymbol()
    


    StyleReadPolyStyle(styleobj, stylename$)

    Read a polygon style from a style object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 28-Sep-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of StyleReadPolyStyle()
    


    StyleReadTextStyle(styleobj, stylename$)

    Read a text style from a style object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 28-Sep-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of StyleReadTextStyle()
    


    System functions (7)


    AddCallback(callback, function, data)

    Add a user defined callback

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of AddCallback()
    


    Exit()

    Exit the script (calls functions registered with OnExit).

    Where:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of Exit()
    


    OnExit(function, data)

    Register function to call just before script exits.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of OnExit()
    


    run(command$, wait)

    Runs another command

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         run("something", 0)   # run in background
    


    RunAssociatedApplication(filename$)

    Runs application associated with passed file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 18-Oct-2000
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

    RunAssociatedApplication("c:/temp/sample.txt");	# Opens sample.txt with associated application
    


    sleep(seconds)

    Pause execution for a number of seconds.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of sleep()
    


    WaitForExit()

    Suspend script but process callbacks and events.

    Where:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of WaitForExit()
    


    Object Conversion functions (7)


    ConvertCMYKtoRGB(maxrgbvalue, c, m, y, k, red, green, blue)

    Convert Cyan-Magenta-Yellow-Black to Red-Green-Blue

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 08-Jul-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

          # Example of ConvertCMYKtoRGB()
          clear();
          c = 100;
          m = 100;
          y = 100;
          k = 101;
          ConvertCMYKtoRGB(255, c, m, y, k, red, green, blue);
          format$ = "%3d %3d %3d %3d - %3d %3d %3d"
          printf(format$, c, m, y, k, red, green, blue);
    


    ConvertHBStoRGB(hue, saturation, value, red, green, blue)

    Convert hue, brightness, saturation to red, green, blue

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 13-Jul-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

          # Example of ConvertHBStoRGB()
          h = 180;
          b = 50;
          s = 50;
          ConvertHBStoRGB(h, s, v, r, g, b);
          printf("hbs - rgb  %3d %3d %3d - %3d %3d %3d\n", h, s, v, r, g, b);
    


    ConvertHIStoRGB(maxrgbvalue, hue, intensity, saturation, red, green, blue)

    Convert from hue, intensity, saturation to red, green, blue

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # rgbhis.sml
         # convert between rgb and his
         # each function also takes a maximum rgb value for proper scaling
         # max for 8-bit unsigned = 255
         # max for 16-bit unsigned = 65535
         clear()
         maxrgb = 255
         for h = 1 to 360 step 179 {
            for i = 1 to 100 step 49 {
               for s = 1 to 100 step 49 {
                     ConvertHIStoRGB(maxrgb, h, i, s, r, g, b)
                     printf("%s: %6d %6d %6d %6d %6d %6d \n",
                        "his -> rgb", h, i, s, r, g, b)
                     }
               }
            }
         for r = 1 to 255 step 100 {
            for g = 1 to 255 step 100 {
               for b = 1 to 255 step 100 {
                     ConvertRGBtoHIS(maxrgb, r, g, b, h, i, s)
                     printf("%s: %6d %6d %6d %6d %6d %6d \n",
                        "rgb -> his", r, g, b, h, i, s)
                     }
               }
            }
    


    ConvertHSVtoRGB(hue, saturation, value, red, green, blue)

    Convert hue, saturation, value to red, green, blue

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 10-Jul-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

          # Example of ConvertHSVtoRGB()
          h = 180;
          s = 50;
          v = 50;
          ConvertHSVoRGB(h, s, v, r, g, b);
          printf("hsv - rgb  %3d %3d %3d - %3d %3d %3d\n", h, s, v, r, g, b);
    


    ConvertRGBtoHBS(red, green, blue, hue, brightness, saturation)

    Convert red, green, blue, to hue, brightness, saturation

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 13-Jul-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

          # Example of ConvertRGBtoHBS()
          r = 127;
          g = 127;
          b = 127;
          ConvertRGBtoHBS(r, g, b, h, s, v)
          printf("rgb - hbs  %3d %3d %3d - %3d %3d %3d\n", r, g, b, h, s, v);
    


    ConvertRGBtoHIS(maxrgbvalue, red, green, blue, hue, intensity, saturation)

    Convert from red, green, blue to hue, intensity, saturation

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # rgbhis.sml
         # convert between rgb and his
         # each function also takes a maximum rgb value for proper scaling
         # max for 8-bit unsigned = 255
         # max for 16-bit unsigned = 65535
         clear()
         maxrgb = 255
         for h = 1 to 360 step 179 {
            for i = 1 to 100 step 49 {
               for s = 1 to 100 step 49 {
                     ConvertHIStoRGB(maxrgb, h, i, s, r, g, b)
                     printf("%s: %6d %6d %6d %6d %6d %6d \n",
                        "his -> rgb", h, i, s, r, g, b)
                     }
               }
            }
         for r = 1 to 255 step 100 {
            for g = 1 to 255 step 100 {
               for b = 1 to 255 step 100 {
                     ConvertRGBtoHIS(maxrgb, r, g, b, h, i, s)
                     printf("%s: %6d %6d %6d %6d %6d %6d \n",
                        "rgb -> his", r, g, b, h, i, s)
                     }
               }
            }
    


    ConvertRGBtoHSV(red, green, blue, hue, saturation, value)

    Convert red, green, blue to hue, saturation, value

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 10-Jul-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

          # Example of ConvertRGBtoHSV()
          r = 127;
          g = 127;
          b = 127;
          ConvertRGBtoHBS(r, g, b, h, s, v)
          printf("rgb - hsv  %3d %3d %3d - %3d %3d %3d\n", r, g, b, h, s, v);
    


    Popup Dialog functions (9)


    GetInputObject(objectType$, prompt$, rvcFilename$, objectName$)

    Popup dialog to select an object and return info

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 17-Jun-1998
    Modify Date: none
    Available in SML for Windows: Yes


    GetOutputObject(objectType$, newOrExisting$, prompt$, rvcFilename$, objectName$, objectDescription$)

    Prompt the user for an output object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 17-Jun-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of GetOutputObject()
    


    PopupError(error_code)

    Displays a popup window and displays the text associated with error_code

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         PopupError(-1012)   # error codes are always negative
    


    PopupMessage(message$)

    Open popup window with message and [OK] choice

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         PopupMessage("Hello!")
    


    PopupNum(prompt$, default, min, max, decimal_places)

    Open popup window asking for a number

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         PopupNum("Value?", 1, 10, 0, 2)
    


    PopupSelectTableField(database, table$, field$)

    Popup dialog for user to select a table and field

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 19-Oct-2000
    Modify Date: none
    Available in SML for Windows: No

    Example:

    database = OpenVectorPolyDatabase(vector);
    PopupSelectTableField(database, table$, field$);
    


    PopupString(prompt$, default$)

    Open popup window asking for a string

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         a$ = PopupString("Enter a string.", "Or use this default string.")
         print(a$)
    


    PopupYesNo(prompt$, default)

    Open popup window asking for a yes or no input

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         print(PopupYesNo("Continue?", 1))
    


    PopupYesNoCancel(prompt$, default)

    Open popup window asking for a yes, no or cancel

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         print(PopupYesNoCancel("Continue?", 1))
    


    CAD functions (2)


    GetInputCAD(CADvar)

    Use a File/Object selection dialog to select an input CAD

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # read elem.sml
         # demonstrates how to read the number of blocks in a CAD object
         # and loop through all the blocks and print out type of each
         # element
         clear()
         GetInputCAD(C)
         numBlocks = CADNumBlocks(C)
         print("number of blocks: ", numBlocks)
         # loop through all blocks
         for blk = 1 to numBlocks {
            numElements = CADNumElements(C, blk)
            printf("block: %3d number of elements: %5d \n\n", blk,
                   numElements)
            # loop through all elements
            for elem = 1 to numElements {
               # get the element type
               elem$ = CADElementType(C, blk, elem)
               printf("block: %3d element: %5d type: %s\n", blk, elem,
                      elem$)
               }
            }
         CloseCAD(C)
    


    GetOutputCAD(CADvar)

    Opens a CAD object for reading or writing

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # circle.sml
         # demonstrate creating and reading a circle CAD element
         clear()
         # create a new file or open existing file
         GetOutputCAD(C)
         # write a circle
         xin = 100; yin = 200; rin = 50;
         CADWriteCircle(C, 1, xin, yin, rin)
         # the elements are always appended to end of block
         # so get number of elements - last element will be our circle
         lastelem = CADNumElements(C, 1)
         # now read cirle data for most recently added element
         CADReadCircle(C, 1, lastelem, xCenter, yCenter, radius)
         print("write and read CAD circle")
         print("element  xCenter  yCenter   radius")
         printf("%7d %8.2f %8.2f %8.2f \n", lastelem,
                xCenter, yCenter, radius)
         CloseCAD(C)
    


    TIN functions (2)


    GetInputTIN(TIN)

    Use a File/Object selection dialog to select an input TIN

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         GetInputTIN(Tin)
         # get the RVC file name
         str$ = GetObjectFileName(Tin)
         objNum = GetObjectNumber(Tin) # and object number
         clear()
         print("TIN Object Number: ", objNum, "RVC file Name: ", str$)
    


    GetOutputTIN(TIN, flag1$, flag2$)

    Use a File/Object selection dialog to select an output TIN

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         GetOutputTIN(Tin)
         # get the RVC file name
         str$ = GetObjectFileName(Tin)
         objNum = GetObjectNumber(Tin)
         clear()
         print("TIN Object Number: ", objNum, "RVC file Name: ", str$)
    


    Region functions (2)


    GetInputRegion(RegionVar)

    Popup dialog to select a Region object for input

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of GetInputRegion()
    


    GetOutputRegion(RegionVar)

    Open a Region for output via dialog.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

          # example of GetOutputRegion()
          fileName$ = "c:/tnt/win32/PntInRgn/regions.rvc"
          objectName$ = "Region1"
          objdesc$ = "created via CreateRegion()"
          OpenRegion(RegionIn, fileName$, objectName$)
          GetOutputRegion(RegionOut)
          # just copy the region
          RgnOutSame = CopyRegion(RegionIn)
          SaveRegion(RegionOut, fileName$, objectName$, objdesc$)
    


    File functions (29)


    CopyFile(inputFile$, outputFile$, statusHandle)

    Copy a file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 22-Jun-1998
    Modify Date: 22-Jun-1998
    Available in SML for Windows: Yes

    Example:

           # Example of CopyFile()
           class StatusHandle statusHandle;
           # create and destroy default status dialog
           result = CopyFile("c:/tnt/win32/data/Cb_elev.rvc", "c:/tnt/win32/data/Cb_elev_copy.rvc");
           # don't display status - statusHandle is NULL
           result = CopyFile("c:/tnt/win32/data/Cb_elev.rvc",
                             "c:/tnt/win32/data/Cb_elev_copy.rvc", statusHandle);
           print(result);
    


    CreateDir(filename$)

    Create a directory

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Mar-2001
    Modify Date: none
    Available in SML for Windows: Yes


    CreateTempFileName()

    Create a temporary file name.

    Where:

    Details:

    Returns:

    Create Date: 08-Dec-2000
    Modify Date: none
    Available in SML for Windows: Yes


    DeleteFile(filename$)

    Delete a file.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of DeleteFile()
    


    fclose(file)

    Close a file previously opened with fopen()

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # assume file already exists
         clear()
         f=fopen("c:/junk.txt", "r")
         # get next line of text from text file specified by fileNumber
         str$ = fgetline$(f) ; print(str$)
         fclose(f)
    


    feof(file)

    Detects end of file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         if (fexists("c:\temp.txt", "r")) then {
            handle = fopen("c:\temp.txt", "r")
            while (!feof(handle)){
               line$ = fgetline$(handle)
               # do something with line
               }
            fclose(handle)
            }
    


    fexists(filename$, mode$)

    Checks for existence and i/o mode of file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         if (fexists("c:\temp.txt", "r")) then
             print("c:\temp.txt exists")
    


    fgetline$(file)

    Get next line of text from a text file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # assume file already exists
         clear()
         f=fopen("c:junk.txt", "r")
         # get next line of text from text file specified by fileNumber
         str$ = fgetline$(fileNumber) ; print(str$)
         fclose(f)
    


    fgetnum(file)

    Get next number from text file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear();
    


    fopen(filename$, mode$, encoding$)

    Open text file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # assume file already exists
         clear();
         f=fopen("c:junk.txt", "w+");   # create a file
         fprint(f, "This is line 1.\nThis is line 2.");  # write to it
         fclose(f);   # close it
         f=fopen("c:junk.txt", "r");   # open the file for reading
         print(fgetline$(f));   # read and print two lines
         fclose(f);   # close it
    


    fprint(file, value, ...)

    Print unformated text or values to text file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear();  # assume file already exists
         # Open a file, then write to the file, then close it
         f=fopen("c:/junk.txt", "r+");
         fprint(f, "This is line 1\nThis is line2.", "More line 2");
         fclose(f);
         f=fopen("c:/junk.txt", "r");
         print(fgetline$(f));
         print(fgetline$(f));
         fclose(f);
    


    fprintf(file, format$, value, ...)

    Print formatted text or values to text file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         str1$="This is line ";
         str2$=" you see. ";
         str3$="This is line 2. ";
         number=1;
         # Create a file, then write to the file, then close it
         f=fopen("c:/junk.txt", "w+");
         fprintf(f, "%s%d%sn%s", str1$, number, str2$, str3$);
         fclose(f);
         f=fopen("c:/junk.txt", "r");
         print(fgetline$(f));
         print(fgetline$(f));
         fclose(f);
    


    fread(file, buffer, length)

    Read raw bytes a from a file.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of fread()
    


    freadbyte(file)

    Read a byte from a file or port.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of freadbyte()
    


    freadstring(file, length)

    Read a string from a file.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of freadstring()
    


    fwrite(file, buffer, length)

    Write unformated data to a file.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of fwrite()
    


    fwritebyte(file, byte, ...)

    Write a byte to a file or port.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of fwritebyte()
    


    fwritestring(file, string$, length)

    Write a string to a file.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of fwritestring()
    


    GetDirectory(default$, prompt$)

    Popup a dialog for selecting a directory

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 11-Sep-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of GetDirectory()
    


    GetInputFileName(default$, prompt$, ext$)

    Popup dialog to select a file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of GetInputFileName()
    


    GetInputTextFile(defaultFilename$, prompt$, extension$, encoding$)

    Open or create a text file for input/output via dialog

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Aug-1998
    Modify Date: 01-Feb-2001
    Available in SML for Windows: Yes

    Example:

           # Example of GetInputTextFile()
           class FILE fIn;
           clear()
           fIn = GetInputTextFile("c:/default.txt", "Select text file for input", "txt");
           # read a line from the text file
           str$ = fgetline$(fIn)
           print(str$);
    


    GetOutputFileName(default$, prompt$, ext$)

    Popup dialog to select an output file.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of GetOutputFileName()
    


    GetOutputTextFile(defaultFilename$, prompt$, extension$, encoding$)

    Open a text file for output via dialog

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 06-Aug-1998
    Modify Date: 01-Feb-2001
    Available in SML for Windows: Yes

    Example:

           # Example of GetOutputTextFile()
           class FILE fOut;
           clear()
           fOut = GetOutputTextFile("c:/default.txt", "Select text file for input", "txt");
           # write some lines to the text file
           fwritestring(fOut, "string1\n");
           fwritestring(fOut, "string2\n");
    


    PortAddCallback(callback, function, data)

    Used to register functions to call when data is available. Procedure will be passed two parameters, the port, and the value passed as the data parameter to PortAddCallback()

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of PortAddCallback()
    


    PortClose(port)

    Close a port.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of PortClose()
    


    PortOpen(name$, type$)

    Open a port.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of PortOpen()
    


    RenameFile(oldname$, newname$)

    Rename a file.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of RenameFile()
    


    ScriptResourceReadFull(filename$)

    Read a text file from a text subobject under the script or a file in the same directory

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 20-Nov-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of ScriptResourceReadFull()
    


    TextFileReadFull(filename$)

    Read an entire text file into a string (keep the size "reasonable)\"

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Feb-1999
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of TextFileReadFull()
    


    Ini File functions (8)


    IniClose(handle)

    Close an ini file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of IniClose()
    


    IniOpenFile(filename$)

    Open an ini file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of IniOpenFile()
    


    IniOpenObject(filename$, objectname$)

    Open an RVC text object

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

         # Example of IniOpenObject()
    


    IniOpenScriptResource(objectname$)

    Open an INI file as a subobject of the script or file in same directory

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 07-Apr-1998
    Modify Date: none
    Available in SML for Windows: Yes

    Example:

           # Example of IniOpenScriptResource()
    


    IniReadNumber(group$, field$, default, min, max)

    Read a number from an ini file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of IniReadNumber()
    


    IniReadString(group$, field$, default$)

    Read a string from an ini file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of IniReadString()
    


    IniWriteNumber(group$, field$, value)

    Write a number to an ini file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of IniWriteNumber()
    


    IniWriteString(group$, field$, value$)

    Write a string to an ini file

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         # Example of IniWriteString()
    


    Symbol functions (6)


    BarGraph$(max, bordercolor$, value1, color1$, value2, color2$, ...)

    Parameters:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    Circle$(x, y, radius, color$, filled)

    Parameters:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    Ellipse$(x, y, r1, r2, color$, filled, angle)

    Parameters:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    Line$(x1, y1, x2, y2, color$, thickness)

    Parameters:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    PieChart$(bordercolor$, value1, color1$, value2, color2$, ...)

    Parameters:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    Rectangle$(x, y, height, width, angle, color$, filled)

    Parameters:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    Cartoscript functions (44)


    LineStyleAddToOptimizer(xstart, ystart, xlast, ylast, rank, dooptimize, dodelete)

    Tabulate text string placement and dimension information and optimize label placement for point labels.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           #  Example of LineStyleAddToOptimizer
           # Optimize placement of text labels with
           # names of towns for vector points.
           # Use three rank classes based on population
           # to control optimization and to vary height
           # and color of label text.
     
           # Label sizes for three sizes of towns
           small = 2500;   med = 3500;   big = 4500
     
           # Rank towns by population
           pop = TownData.POP90
           if (pop < 1000) then {
               rank = 1;    height = small
               }
           else {
               if (pop >= 30000 ) then {
                   rank = 3;    height = big
               }
               else {
                   rank = 2;    height = med
                   }
               }
     
           # Draw circle with size based on rank
           radius = rank * 500
           LineStyleSetColor(255,0,0)
           LineStyleDrawCircle(radius,1)
     
           # Read label text and determine dimensions
           LineStyleSetFont("ARIALBD.TTF")
           LineStyleTextNextPosition(TownData.NAME,height,0,0,next_x,next_y,length)
     
           # Define parameters for optimization
           xstart = Internal.x;        ystart  = Internal.y
           xlast = xstart + length;    ylast = ystart + height
           dooptimize = 1;             dodelete = 0
           LineStyleAddToOptimizer(xstart,ystart,xlast,ylast,rank,dooptimize,dodelete)
     
           # Define required function to draw labels after optimization
           func FuncDrawLabel() {
               small = 2500;    med = 3500;    big = 4500
               pop = TownData.POP90
               if (pop < 1000) then {
                   height = small;    LineStyleSetTextColor(0,0,0)
                   }
               else {
                   if (pop >= 30000 ) then {
                       height = big;    LineStyleSetTextColor(255,0,0)
                   }
                   else {
                       height = med;    LineStyleSetTextColor(0,0,255)
                       }
                   }
               LineStyleSetFont("ARIALBD.TTF")
               LineStyleDrawText(TownData.NAME,height,0,0)
               }
    


    LineStyleDrawArc(angle, dist, radius_x, radius_y, startangle, sweepangle, rotangle, isAngleAbs, closemode, dofill)

    Draw an arc centered at location referenced from current position

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawArc()
           # Draw filled elliptical 90 degree arc starting at 60 degrees
           # and centered 45 degrees and 10 units from current position
           angle = 45;   dist = 10;   radius_x = 10;   radius_y = 15;   startangle = 60
           sweepangle = 90;   rotangle = 0;   isAngleAbs = 0;   closemode = 1;  dofill = 1
           LineStyleSetColor(0,0,0)
           LineStyleDrawArc(angle, dist, radius_x, radius_y, startangle, sweepangle,
              rotangle, isAngleAbs, closemode, dofill)
    


    LineStyleDrawArrow(angle, dist, length, sweepangle, dofill)

    Draw an arrow from current position to specified point

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawArrow()
           # Draw black arrow 10 units long to 45 degrees, head lines 4 units long,
           # with 40 degree sweepangle and head filled
           angle = 45;   dist = 10;   length = 4;   sweepangle = 40;   dofill = 1
           LineStyleSetColor(0,0,0)
           LineStyleDrawArrow(angle, dist, length, sweepangle, dofill)
    


    LineStyleDrawCircle(radius, dofill)

    Draw a circle centered on the current position

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawCircle()
           # Draw a filled red circle with a radius of 10 units
           radius = 10;   dofill = 1
           LineStyleSetColor(255,0,0)
           LineStyleDrawCircle(radius, dofill)
    


    LineStyleDrawCone(long_axis, short_axis, height, color_red, color_green, color_blue)

    Draw a cone with the specified dimensions and fill color

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawCone()
           # Draw cone symbol with base 40 by 20 units, and height 100 units
           # with black edges and green fill color
           long_axis = 40;   short_axis = 20;   height = 100;
           color_red = 0;    color_green = 255;   color_blue = 0
           LineStyleSetColor(0,0,0)
           LineStyleDrawCone(long_axis, short_axis, height, color_red, color_green, color_blue)
    


    LineStyleDrawCube(width, depth, height, color_red, color_green, color_blue)

    Draw a rectangular solid shape with the specified dimensions and fill color

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawCube()
           # Draw cube symbol with width and height
           # of 16 units and depth of 8 units
           # with black edges and red fill color
           width = 16;   depth = 0.5 * width;   height = width;
           color_red = 255;    color_green = 0;   color_blue = 0
           LineStyleSetColor(0,0,0)
           LineStyleDrawCube(width, depth, height, color_red, color_green, color_blue)
    


    LineStyleDrawCylinder(long_axis, short_axis, height, color_red, color_green, color_blue)

    Draw a vertical cylinder with the specified dimensions and fill color

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawCylinder()
           # Draw cylinder symbol with base 30 by 15
           # units, height 100 units, and
           # with black edges and yellow fill color
           long_axis = 30;     short_axis = 15;     height = 60;
           color_red = 255;    color_green = 255;   color_blue = 0
           LineStyleSetColor(0,0,0)
           LineStyleDrawCone(long_axis, short_axis, height, color_red, color_green, color_blue)
    


    LineStyleDrawEllipse(angle, dist, radius_x, radius_y, rotangle, isAngleAbs, dofill)

    Draw an ellipse centered at location referenced from current position

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawEllipse()
           # Draw filled green ellipse centered at the current
           # position with long axis = 20 units and short
           # axis = 10 units, and rotate 30 degrees counterclockwise
           angle = 0;   dist = 0;   radius_x = 20;   radius_y = 10;
           rotangle = 30;   isAngleAbs = 0;   dofill = 1
           LineStyleSetColor(0,0,0)
           LineStyleDrawEllipse(angle, dist, radius_x, radius_y, rotangle, isAngleAbs, dofill)
    


    LineStyleDrawLine()

    Draw complete line element using currently set color and width

    Where:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawLine()
           # Draw line elements as solid black lines
           # 3 units wide
           LineStyleSetColor(0,0,0)
           LineStyleSetLineWidth(3)
           LineStyleDrawLine()
    


    LineStyleDrawPolygon(dofill)

    Draw a polygon from previously recorded sequence of points

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawPolygon()
           # Draw blue filled equilateral triangle
           # with sides 30 units long
           LineStyleSetColor(0,0,255)
           LineStyleDropAnchor(0)
           LineStyleRecordPolygon(1)
           LineStyleMoveTo(0,30)
           LineStyleMoveTo(120,30)
           LineStyleMoveToAnchor(0)
           LineStyleDrawPolygon(1)
    


    LineStyleDrawPolyline()

    Draw a polyline connecting previously recorded sequence of points

    Where:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawPolyline()
           # Draw brown polyline representing
           # overlapping triangles of different sizes
           LineStyleSetColor(170,85,0)
           LineStyleRecordPolygon(1)
           LineStyleMoveTo(0,0)
           LineStyleMoveTo(55,30)
           LineStyleMoveTo(-55,20)
           LineStyleMoveTo(55,10)
           LineStyleMoveTo(-55,20)
           LineStyleDrawPolyline()
    


    LineStyleDrawRectangle(width, height, angle, dofill, isAbs)

    Draw a rectangle

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawRectangle()
           # Draw solid line with regularly spaced filled
           # squares oriented with bases parallel to local
           # line direction.
     
           # Set parameters for squares
           width = 10;   height = width;
           angle = 0     # no rotation of square
           dofill = 1
           isAbs = 0     # orient to local coordinate system
     
           # Set spacing between squares
           spacing = 30
     
           # Set line color and width and draw line
           LineStyleSetColor(0,0,0)
           LineStyleSetLineWidth(3)
           LineStyleDrawLine()
     
           # Draw square at start of line
           LineStyleDrawRectangle(width,height,angle,dofill,isAbs)
     
           # Draw rest of squares
           while (LineStyleRoll(spacing) <> 1) {
               dist = LineStyleGetDistanceTo(3)
               if ( dist > spacing ) {
                   LineStyleDrawRectangle(width,height,angle,dofill,isAbs)
                   }
               }
    


    LineStyleDrawText(text$, height, angle, isAbs, next_x, next_y, length)

    Draw text string with specified height and orientation

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawText()
           # Draw circle point symbols for towns,
           # read town names from database, and draw text
           # labels rotated 30 degrees counterclockwise.
     
           # Draw red circle point symbol
           LineStyleSetColor(255,0,0)
           LineStyleDrawCircle(500,1)
     
           # Read town name from database field to string variable
           label$ = sprintf("%s",TownData.NAME)
     
           # Set text color and font
           LineStyleSetTextColor(0,0,0)
           LineStyleSetFont("ARIALBD.TTF")
     
           # Set label parameters
           height = 2000;    angle = 30;    isAbs = 0
     
           # Move pen to right of symbol and draw label
           LineStyleMoveTo(0,2000)
           LineStyleDrawText(label$,height,angle,isAbs)
    


    LineStyleDrawTextBox(text$, height, angle, border, isAbs, next_x, next_y, length)

    Draw text string in a rectangular box

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawTextBox()
           # Draw square point symbol and draw boxed text
           # label with sample number from database field
           # in black on yellow fill
     
           # Draw red square point symbol
           LineStyleSetColor(255,0,0)
           LineStyleSetLineWidth(0)
           LineStyleDrawRectangle(15,15,0,1)
     
           # Read sample number from database field and convert
           # to text string for use as a label
           label$ = sprintf("%d", Samples.Number)
     
           # String variable for label text font
           font$ = "ARIALBD.TTF"
     
           # Define color variables for text
           t_red = 0;    t_green= 0;    t_blue = 0
     
           # Define fill color variables for text box
           fillred = 255;    fillgreen = 255;    fillblue = 170
     
           # Define height, angle, and border width of text
           t_height = 10;    angle = 0;    # no rotation of label
           border = 2
           isAbs = 0        # use local coordinate system
     
           # Set color and font for text label
           LineStyleSetTextColor(t_red,t_green,t_blue,fillred, fillgreen, fillblue)
           LineStyleSetFont(font$)
     
           # Move pen to right of symbol and draw label
           LineStyleSetColor(0,0,0)
           LineStyleMoveTo(0, 15)
           LineStyleDrawTextBox(label$,t_height,angle,border,isAbs)
    


    LineStyleDrawThreePointArc(angle1, dist1, angle2, dist2, angle3, dist3, closemode, dofill)

    Draw an arc centered at current location and passing through three points referenced from current position.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDrawThreePointArc()
           # Draw arc through listed point positions,
           # closed through the center and filled.
     
           # Set parameters for arc
           angle1 = 60;    dist1 = 20
           angle2 = 90;    dist2 = 30
           angle3 = 120;   dist3 = 40
           closemode = 2   # close through center
           dofill = 1      # fill closed arc
           LineStyleSetColor(0,0,0)
           LineStyleDrawThreePointArc(angle1,dist1,angle2,dist2,angle3,dist3,closemode,dofill)
    


    LineStyleDropAnchor(anchor)

    Record current pen position as numbered anchor for later use

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleDropAnchor()
           # Draw flag symbol with anchor at base.
           # Return to anchor to draw filled rectangle.
           LineStyleSetColor(255,0,0)
           LineStyleSetLineWidth(2)
           LineStyleStyleDropAnchor(1)
           LineStyleLineTo(90,20)
           LineStyleLineTo(-30,8)
           LineStyleLineTo(-150,8)
           LineStyleMoveToAnchor(1)
           LineStyleDrawRectangle(10,5,0,1)
    


    LineStyleGetDirection(distance, minangle, maxangle)

    Get minimum and maximum direction angles for portion of line starting at current position

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    LineStyleGetDistanceTo(feature)

    Get distance from current position to specified line position

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleGetDistanceTo()
           # Draw solid line with regularly spaced filled
           # squares oriented with bases parallel to local
           # line direction.  Don't draw square within
           # desired spacing distance from end of line.
     
           # Set parameters for squares
           width = 20;   height = width;
           angle = 0     # no rotation of square
           dofill = 1
           isAbs = 0     # orient to local coordinate system
     
           # Set spacing between squares
           spacing = 100
     
           # Set line color and width and draw line
           LineStyleSetColor(0,0,0)
           LineStyleSetLineWidth(3)
           LineStyleDrawLine()
     
           # Draw square at start of line
           LineStyleDrawRectangle(width,height,angle,dofill,isAbs)
     
           # Draw rest of squares
           while (LineStyleRoll(spacing) <> 1) {
               dist = LineStyleGetDistanceTo(3)
               if ( dist > spacing ) {
                   LineStyleDrawRectangle(width,height,angle,dofill,isAbs)
                   }
               }
    


    LineStyleGetLineCurvature(dist, maxangle, maxleftangle, maxrightangle)

    Find maximum deviation angles between successive line segments for portion of line element starting at current position.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleGetLineCurvature()
           # For vector lines representing fairly
           # straight surface traces of geologic faults
           # determine largest value of maximum deviation
           # angle based on 50-meter segments, and
           # assign different line color for lines
           # exceeding specified maximum curvature value.
     
           spacing = 50    # length of line to examine
     
           # Find maximum deviation angle for first segment
           LineStyleGetLineCurvature(spacing,maxangle)
           max = maxangle    # variable to record max deviation
     
           # Check max deviation angles for remainder of line
           # and record maximum value
           while (LineStyleRoll(spacing) <> 1) {
               LineStyleGetLineCurvature(spacing,maxangle)
               if (maxangle > max) then
                   max  = maxangle
               }
     
           # Assign values to color variables based on max
           if (max > 4) then {
               red = 255;   green = 0;   blue = 0
               }
           else {
               red = 0;   green = 0;   blue = 0
               }
     
           # Draw solid line with appropriate color
           LineStyleSetColor(red,green,blue)
           LineStyleDrawLine()
    


    LineStyleGetMaxDistance(dist, direction, maxdist)

    Find maximum perpendicular distance from specified portion of line to a straight line joining its start and end points.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleGetMaxDistance()
           # Draw line elements as solid lines with
           # regularly spaced filled triangle symbols
           # on left side of line.  Use function to avoid
           # placing triangles on sharp bends of line.
     
           # Triangle spacing and dimensions
           spacing = 35
           triWidth = spacing * 0.6
           halfTri = triWidth * 0.5
           height = triWidth * 0.6
           tol = 0.2 * height
     
           # Set line color and width and draw line
           LineStyleSetColor(255,0,0)
           LineStyleSetLineWidth(2)
           LineStyleDrawLine()
     
           # Draw triangles
           while (LineStyleRoll(spacing) <> 1) {
               dist = LineStyleGetDistanceTo(3)   # distance to end of line
               LineStyleGetMaxDistance(triWidth,angle,maxDist)
               if (dist > triWidth and maxDist < tol) {
                   LineStyleDropAnchor(1)
                   LineStyleRoll(halfTri)
                   LineStyleMoveTo(0,0)
                   LineStyleMoveTo(90, height)
                   LineStyleDropAnchor(2)
                   LineStyleRoll(halfTri)
                   LineStyleDropAnchor(3)
                   LineStyleRecordPolygon()
                   LineStyleMoveToAnchor(2)
                   LineStyleMoveToAnchor(1)
                   LineStyleMoveToAnchor(3)
                   LineStyleDrawPolygon(1)
                   }
               else LineStyleRoll(halfTri)
               }
    


    LineStyleGetPosition(getAbsolute)

    Get current position on line element

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleGetPosition
           # Draw dashed line with red color from
           # start to middle and blue color from
           # middle to end
           LineStyleSetLineWidth(2)
           dashSize = 10
     
           while (LineStyleRoll(dashSize) <> 1) {
              pos = LineStyleGetPosition(0)
              if ( pos <= 0.5)
                  LineStyleSetColor(255,0,0)
              else
                  LineStyleSetColor(0,0,255)
              LineStyleRollPen(dashSize)
              }
    


    LineStyleIsClosed()

    Determine if line element closes to form polygon

    Where:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleIsClosed
           # Draw solid line, mark start with red
           # arrow head and end with green filled circle.
           # Omit circle if line forms closed polygon.
     
           # Set line width, color, and draw solid line
           LineStyleSetLineWidth(2)
           LineStyleSetColor(0,0,0)
           LineStyleDrawLine()
     
           LineStyleSetColor(255,0,0)
           LineStyleSetLineWidth(0)
           LineStyleDrawArrow(0,13,15,60,1)
     
           if (LineStyleIsClosed() <> 1) {
               LineStyleSetPosition(1.0)
               LineStyleSetColor(0,255,0)
               LineStyleDrawCircle(7,1)
               }
    


    LineStyleLineTo(angle, dist)

    Draw a line from the current pen position to a point specified relative to the current line element position.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleLineTo()
           # Draw point symbol of triangular flag
           # on vertical pole
           LineStyleSetColor(225,0,0)
           LineStyleSetLineWidth(1)
           LineStyleLineTo(90,20)
           LineStyleLineTo(-30,8)
           LineStyleLineTo(-150,8)
     
           # Example 2 of LineStyleLineTo()
           # Draw line symbol approximating
           # a sine wave for vector line elements.
     
           # Set line color and width
           LineStyleSetColor(0,0,0)
           LineStyleSetLineWidth(3)
     
           # Set sine wave parameters
           angle = 0;	space = 4
     
           # Draw line
           while (LineStyleRoll(space) <> 1) {
               angle = angle + 1    # in radians
               a = sin(angle) * 5   # amplitude
               if (a > 0) Then LineStyleLineTo(90,a)
               else LineStyleLineTo(-90,abs(a))
               }
    


    LineStyleLineToAnchor(anchor)

    Draw a line from the current pen position to the specified anchor location.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleLineToAnchor()
           # Draw point symbol of unfilled triangle
           # with lower left corner at point position.
     
           LineStyleSetColor(0,0,255)
           LineStyleSetLineWidth(2)
     
           LineStyleDropAnchor(0)
           LineStyleLineTo(60,15)
           LineStyleLineTo(-60,15)
           LineStyleLineToAnchor(0)
    


    LineStyleMoveTo(angle, dist)

    Move pen (without drawing) to a point specified relative to the current line element position.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleMoveTo()
           # Draw vector line element as solid
           # line with regularly spaced "X" symbols
     
           spacing = 30   # spacing between "X" symbols
           length = 12    # length of lines in X
           halfLength = 0.5 * length
     
           # Set line width and color
           LineStyleSetLineWidth(2)
           LineStyleSetColor(0,0,255)
     
           # Draw solid line
           LineStyleDrawLine()
     
           # Draw "X" symbols
           while (LineStyleRoll(spacing) <> 1) {
               LineStyleSetColor(0,0,255)
               LineStyleMoveTo(0,0)   # move pen to origin of local coordinate system
               LineStyleMoveTo(45, halfLength)
               LineStyleLineTo(-135, length)
               LineStyleMoveTo(45, halfLength)
               LineStyleMoveTo(-45, halfLength)
               LineStyleLineTo(135, length)
               }
    


    LineStyleMoveToAnchor(anchor)

    Move pen position to the specified anchor location.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleMoveToAnchor()
           # Draw point symbol as triangular flag on
           # vertical pole with filled rectangle
           # centered on base.
     
           # Set line color and width
           LineStyleSetColor(0,255,0)
           LineStyleSetLineWidth(2)
     
           # Draw flag
           LineStyleDropAnchor(0)  # anchor at origin
           LineStyleLineTo(90,20)
           LineStyleLineTo(-30,8)
           LineStyleLineTo(-150,8)
     
           # Move to origin and draw rectangle
           LineStyleMoveToAnchor(0)
           LineStyleDrawRectangle(10,5,0,1)
    


    LineStyleNextVertex()

    Move current position and pen position to next vertex along vector line element.

    Where:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleNextVertex()
           # Draw vector line element as solid
           # black line, then mark start with an
           # open red circle and each subsequent
           # vertex with an open green circle
     
           # Set parameters for circles marking vertices
           radius = 5;	dofill = 0
     
           # Draw solid black line
           LineStyleSetLineWidth(3)
           LineStyleSetColor(0,0,0)
           LineStyleDrawLine()
     
           # draw red circle at beginning of line
           LineStyleSetColor(225,0,0)
           LineStyleDrawCircle(radius,dofill)
     
           # Move to next vertex and draw green circle
           LineStyleSetColor(0,225,0)
           while ( LineStyleNextVertex() <> 1 ) {
               LineStyleDrawCircle(radius,dofill)
               }
    


    LineStylePrevVertex()

    Move current position and pen position to previous vertex along vector line element.

    Where:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStylePrevVertex()
           # Draw vector line element as dashed
           # black line, then mark end with an
           # open red circle and each subsequent
           # vertex with an open green circle
     
           # Set parameters for circles and dashes
           radius = 5;	dofill = 0; dashSize = 10
     
           # Draw dashed black line
           LineStyleSetLineWidth(3)
           LineStyleSetColor(0,0,0)
     
           while (LineStyleRoll(dashSize) <> 1) {
               dist = LineStyleGetDistanceTo(3)   # distance to end of line
               if (dist > dashSize)
                   LineStyleRollPen(dashSize)
               else
                   LineStyleRollPen(dist)
               }
     
           # draw red circle at end of line
           LineStyleSetColor(225,0,0)
           LineStyleDrawCircle(radius,dofill)
     
           # Move to previous vertex and draw green circle
           LineStyleSetColor(0,225,0)
           while ( LineStylePrevVertex() <> 1 ) {
               LineStyleDrawCircle(radius,dofill)
               }
    


    LineStyleRecordPolygon(start_stop)

    Start or stop recording a sequence of vertex locations for later use in drawing a polygon or polyline.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleRecordPolygon()
           # Draw point symbol of triangular flag
           # on vertical pole, flag as filled polygon.
     
           # Set line color and width
           LineStyleSetColor(0,255,0)
           LineStyleSetLineWidth(2)
     
           # Draw flag
           LineStyleLineTo(90,20)
           LineStyleDropAnchor(1)
           LineStyleRecordPolygon(1)
           LineStyleLineTo(-30,8)
           LineStyleLineTo(-150,8)
           LineStyleMoveToAnchor(1)
           LineStyleDrawPolygon(1)
    


    LineStyleRestoreLine()

    Restore original vector line element coordinates after modification by LineStyleSpline() or LineStyleThinLine() functions.

    Where:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No


    LineStyleRoll(shift)

    Shift the current position along a vector line element by the specified distance without drawing.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleRoll()
           # Draw dashed line symbol for line element.
     
           # Set line color and width
           LineStyleSetColor(0,0,0)
           LineStyleSetLineWidth(2)
     
           # set dash parameters
           dashSize = 16
           spacing = 0.6 * dashSize
     
           # Draw dashed line
           while (LineStyleRoll(spacing) <> 1) {
               LineStyleRollPen(dashSize)
               }
    


    LineStyleRollPen(dist)

    Draw line from the current position on vector line element for the specified distance along the line element.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleRollPen()
           # Draw dashed line symbol for line element.
     
           # Set line color and width
           LineStyleSetColor(0,0,0)
           LineStyleSetLineWidth(2)
     
           # set dash parameters
           dashSize = 16
           spacing = 0.6 * dashSize
     
           # Draw dashed line
           while (LineStyleRoll(spacing) <> 1) {
               LineStyleRollPen(dashSize)
               }
    


    LineStyleSetCapJoinType(capstype, jointype)

    Set square or rounded ends for lines and polyline segments.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleSetCapJoinType()
           # Draw cross point symbol with square line ends
     
           # Set line color, width, and capstype
           LineStyleSetColor(255,0,255)
           LineStyleSetLineWidth(2)
           LineStyleSetCapJoinType(1,1)
     
           # Draw cross
           LineStyleDropAnchor(0)
           LineStyleMoveTo(90,10)
           LineStyleLineTo(-90,20)
           LineStyleMoveToAnchor(0)
           LineStyleMoveTo(0,10)
           LineStyleLineTo(180,20)
    


    LineStyleSetColor(red, green, blue)

    Set RGB color values for line color.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleSetColor()
           # Draw point symbol with red flag and
           # blue filled rectangle at base
     
           # Set line width and color for flag
           LineStyleSetLineWidth(2)
           LineStyleSetColor(255,0,0)
     
           # Draw flag
           LineStyleDropAnchor(1)
           LineStyleLineTo(90,20)
           LineStyleLineTo(-30,8)
           LineStyleLineTo(-150,8)
           LineStyleMoveToAnchor(1)
     
           # Change line color and draw rectangle
           LineStyleSetColor(0,0,255)
           LineStyleDrawRectangle(10,5,0,1)
    


    LineStyleSetCoordType(type)

    Set coordinate type for input distance values.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleSetCoordType()
           # Draw filled rectangle point symbol
           # with constant size in millimeters
     
           # Set dimensions of rectangle
           LineStyleSetCoordType(1)
           width = 4
           height = 0.5 * width
     
           # Set color for rectangle
           LineStyleSetColor(255,0,0)
           LineStyleSetLineWidth(0)
     
           # Draw rectangle
           LineStyleDrawRectangle(width,height,0,1)
    


    LineStyleSetFont(fontname$)

    Set name of font to use for text.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleSetFont()
           # Draw circle point symbols for towns,
           # read town names from database, and draw text
           # labels.
     
           # Draw red circle point symbol
           LineStyleSetColor(255,0,0)
           LineStyleDrawCircle(500,1)
     
           # Read town name from database field to string variable
           label$ = sprintf("%s",TownData.NAME)
     
           # Set text color and font
           LineStyleSetTextColor(0,0,0)
           LineStyleSetFont("ARIALBD.TTF")
     
           # Set label parameters
           height = 2000;    angle = 0;    isAbs = 0
     
           # Move pen to right of symbol and draw label
           LineStyleMoveTo(0,2000)
           LineStyleDrawText(label$,height,angle,isAbs)
    


    LineStyleSetLineWidth(width, isInMM)

    Set width of lines to be drawn.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleSetLineWidth()
           # Draw line elements as solid black lines
           # 3 units wide
           LineStyleSetColor(0,0,0)
           LineStyleSetLineWidth(3)
           LineStyleDrawLine()
    


    LineStyleSetPosition(shift)

    Set position along vector line element.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleSetPosition()
           # Draw line element as solid line with small
           # red circles at start, middle, and end of line.
     
           # Set radius parameters for circles
           radius = 8;    dofill = 0
     
           # Set line color and width and draw line
           LineStyleSetColor(0,0,0)
           LineStyleSetLineWidth(4)
           LineStyleDrawLine()
     
           # Draw small red circle at beginning of line
           LineStyleSetColor(225,0,0)
           LineStyleDrawCircle(radius,dofill)
     
           # Draw remaining circles
           LineStyleSetPosition(0.5)
           LineStyleDrawCircle(radius,dofill)
     
           LineStyleSetPosition(1.0)
           LineStyleDrawCircle(radius,dofill)
    


    LineStyleSetScale(scale)

    Set scale factor applied to all input distances and lengths.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleSetScale
           # Draw dashed red line with dash
           # lengths scaled by 0.5
     
           # Set scale factor
           LineStyleSetScale(0.5)
     
           # Set color, width, and end type for lines
           LineStyleSetColor(255,0,0)
           LineStyleSetLineWidth(2)
           LineStyleSetCapJoinType(1,1)
     
           # draw dashed line
           dashSize = 20
           halfDash = 0.5 * dashSize
           while (LineStyleRoll(halfDash) <> 1) {
               LineStyleRollPen(dashSize)
               }
    


    LineStyleSetTextColor(red, green, blue, bgred, bggreen, bgblue)

    Set RGB color values for text and for text box background.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleSetTextColor()
           # Draw square point symbol with sample
           # number (from database) in text box
     
           # Set line color and width and draw square
           LineStyleSetColor(255,0,0)
           LineStyleSetLineWidth(0)
           LineStyleDrawRectangle(15,15,0,1)
     
           # Read sample number from database field and convert
           # to text string for use as a label
           label$ = sprintf("%d", Samples.Number)
     
           # String variable for label text font
           font$ = "ARIALBD.TTF"
     
           # Define color variables for text
           red = 0;    green = 0;    blue = 0
     
           # Define fill color variables for text box
           bgred = 255;    bggreen = 255;    bgblue = 170
     
           # Define height, angle, and border width of text
           t_height = 10;    angle = 0;    border = 2
     
           # Set color and font for text label
           LineStyleSetColor(0,0,0)    # color for box outline
           LineStyleSetTextColor(red,green,blue,bgred,bggreen,bgblue)
           LineStyleSetFont(font$)
     
           # Move pen to right of symbol and draw label
           LineStyleMoveTo(0, 15)
           LineStyleDrawTextBox(label$,t_height,angle,border,0)
    


    LineStyleSideshot(dodraw, ...)

    Specify sequence of positions by direction and distance from current pen position.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleSideshot()
           # Draw line elements with regularly
           # repeated diamond symbols.
     
           LineStyleSetColor(128,128,128)
     
           # Set dimensions for diamond symbols
           length = 15;    width = 8
           halfLength = 0.5 * length
           halfWidth = 0.5 * width
           spacing = 25   # spacing between diamond centers
           dodraw = 0
     
           while (LineStyleRoll(spacing) <> 1) {
               LineStyleMoveTo(0,0)
               LineStyleRecordPolygon(1)   # record sideshot points to make polygon
               LineStyleSideshot(dodraw,0,halfLength,90,halfWidth,180,halfLength,-90,halfWidth)
               LineStyleDrawPolygon(1)	# draw and fill diamond polygon
               }
    


    LineStyleSpline(parameter, method)

    Spline vector line elements (smooth by inserting additional vertices).

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleSpline
           # Spline lines using BSpline method, with
           # 5 inserted points between each pair of vertices,
           # draw in red.
     
           parameter = 5;  method = 1
     
           LineStyleSpline(parameter,method)
           LineStyleSetColor(255,0,0)
           LineStyleSetLineWidth(2)
           LineStyleDrawLine()
    


    LineStyleTextNextPosition(text$, height, angle, isAbs, next_x, next_y, length)

    Compute end coordinates and length of text string.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleTextNextPosition()
           # Draw circle point symbols for towns,
           # read town names from database, and draw text
           # labels to the left of the points
     
           # Draw red circle point symbol
           LineStyleSetColor(255,0,0)
           LineStyleDrawCircle(500,1)
     
           # Read town name from database field to string variable
           label$ = sprintf("%s",TownData.NAME)
           # Set text color and font
           LineStyleSetTextColor(0,0,0)
           LineStyleSetFont("ARIALBD.TTF")
     
           # Set label parameters and find length of text label
           height = 2000;    angle = 0;    isAbs = 0
           LineStyleTextNextPosition(label$,height,angle,isAbs,next_x,next_y,length)
     
           # Move pen to left of symbol and draw label,
           # using length of label to avoid overlap
           LineStyleMoveTo(180,length + 500)
           LineStyleDrawText(label$,height,angle,isAbs)
    


    LineStyleThinLine(parameter, method)

    Thin (simplify) vector line elements by removing vertices.

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

           # Example of LineStyleThinLine
           # Thin lines with Douglas-Peucker method
           # using thinning distance of 5
     
           parameter = 5;   method = 1
     
           LineStyleSetColor(0,255,0)
           LineStyleThinLine(parameter,method)
           LineStyleDrawLine()
    


    Print functions (2)


    print(value, ...)

    Sends unformated output to console

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         str1$="This is line "
         str2$="you see."
         str3$="The next is\nline 3."
         number=1
         print(str1$, number, str2$)
         print(str3$)
    


    printf(format$, value, ...)

    Send formatted output to the console

    Where:

    Parameters:

    Details:

    Returns:

    Create Date: 01-Dec-1997
    Modify Date: none
    Available in SML for Windows: No

    Example:

         clear()
         format$="%s%d%s\n%s"
         str1$="This is line "
         str2$="you see."
         str3$="This is line 2"
         number = 1
         print(str1$, number, str2$, str3$)
         printf(format$, str1$, 1, str2$, str3$)
    


    Total Number of Functions: 353