Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.

For information on migrating to InterSystems IRIS, see How to Migrate to InterSystems IRIS, available on the WRC Distributions page (login required).

Right Triangle Routine

This is the main section.

RightTriangle  /* compute area and hypotenuse of a right triangle
                  this routine contains examples of 
                  new ObjectScript features */
    Write !, "Compute the area and hypotenuse of a right triangle",
          !, "given the lengths of its two sides."
    Read !!, "First, choose a unit of measurement. ",
          !, "(i)nches, (f)eet, (m)iles, ",
             "(c)entimeters, m(e)ters, (k)ilometers: ", units
    // translate units to a full word
    Set units = $case( $extract( units, 1), "i":"inches", 
                                            "f":"feet",
                                            "m":"miles",  
                                            "c":"centimeters",
                                            "e":"meters", 
                                            "k":"kilometers",
                                               :"units" )
    Do { 
        Read !!, "Length of side 1: ", side1
        Quit:(side1 = "")  // exit the do loop
    }
    While $$IsNegative( side1 )
    Quit:(side1 = "")  // exit the routine
    Do { 
        Read !, "Length of side 2: ", side2
        Quit:(side2 = "")   // exit the do loop
       }
    While $$IsNegative( side2 )
    Quit:(side2 = "")  // exit the routine
    Do Compute( units, side1, side2)
    Write !!, "Current date: "
    Do ^%D
    Write !, "Current time:"
    Do ^%T
    Quit

This section contains a user-defined function and a procedure.

IsNegative(num) PUBLIC // is num negative?
{ 
    If (num '> 0) {
        Write "  Enter a positive number."
        Quit 1 // return "true"
       }
     Else {
        Write "  Accepted."
        Quit 0 // return "false"
     }
}

Compute(units,A,B) // compute and display area and hypotenuse
{ 
    Set area  = ( A * B ) / 2, 
        area = $justify( area, 0, 2),
        squaredSides = ( A ** 2 ) + ( B ** 2 )  
    
    // $zsqr function computes square root
    Set hypot = $zsqr(squaredSides)                
    
    // round hypot to 2 places
    Set hypot = $justify( hypot, 0, 2)
    
    Write !!, "The area of this triangle is ", area, " square ", units, ".",
          !!, "The hypotenuse is ", hypot, " ", units, "."
}
Feedback