Kbase 18120: How to use trigonometric functions in ABL on Microsoft Windows systems
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  11/3/2009 |
|
Status: Verified
GOAL:
How to use trigonometric functions in ABL on Microsoft Windows systems
GOAL:
How to Call WIN32 API Function: Sin (Sine)
GOAL:
How to Call WIN32 API Function: Cos (Cosine)
GOAL:
How to Call WIN32 API Function: Tan (Tangent)
GOAL:
How to Call WIN32 API Function: Asin (Arcsine)
GOAL:
How to Call WIN32 API Function: Acos (Arccosine)
GOAL:
How to Call WIN32 API Function: Atan (Arctangent)
GOAL:
How to Call WIN32 API Function: Sinh (Hyperbolic Sine)
GOAL:
How to Call WIN32 API Function: Cosh (Hyperbolic Cosine)
GOAL:
How to Call WIN32 API Function: Tanh (Hyperbolic Tangent)
FACT(s) (Environment):
Progress 9.x
OpenEdge 10.0x
Windows
FIX:
The following sample code shows how to call the various trigonometric functions from the Microsoft Visual C++ runtime library (MSVCRT40.DLL) from within an ABL procedure.
These function expect an input in radians. Conversion is required if the application handles angles using a different unit of measurement (degrees or grads).
The sample code:
/* Define entry points for library routines */
PROCEDURE sin EXTERNAL "MSVCRT40.DLL" CDECL:
DEFINE INPUT PARAMETER dblValue AS DOUBLE NO-UNDO.
DEFINE RETURN PARAMETER dblResult AS DOUBLE NO-UNDO.
END PROCEDURE.
PROCEDURE cos EXTERNAL "MSVCRT40.DLL" CDECL:
DEFINE INPUT PARAMETER dblValue AS DOUBLE NO-UNDO.
DEFINE RETURN PARAMETER dblResult AS DOUBLE NO-UNDO.
END PROCEDURE.
PROCEDURE tan EXTERNAL "MSVCRT40.DLL" CDECL:
DEFINE INPUT PARAMETER dblValue AS DOUBLE NO-UNDO.
DEFINE RETURN PARAMETER dblResult AS DOUBLE NO-UNDO.
END PROCEDURE.
PROCEDURE asin EXTERNAL "MSVCRT40.DLL" CDECL:
DEFINE INPUT PARAMETER dblValue AS DOUBLE NO-UNDO.
DEFINE RETURN PARAMETER dblResult AS DOUBLE NO-UNDO.
END PROCEDURE.
PROCEDURE acos EXTERNAL "MSVCRT40.DLL" CDECL:
DEFINE INPUT PARAMETER dblValue AS DOUBLE NO-UNDO.
DEFINE RETURN PARAMETER dblResult AS DOUBLE NO-UNDO.
END PROCEDURE.
PROCEDURE atan EXTERNAL "MSVCRT40.DLL" CDECL:
DEFINE INPUT PARAMETER dblValue AS DOUBLE NO-UNDO.
DEFINE RETURN PARAMETER dblResult AS DOUBLE NO-UNDO.
END PROCEDURE.
PROCEDURE sinh EXTERNAL "MSVCRT40.DLL" CDECL:
DEFINE INPUT PARAMETER dblValue AS DOUBLE NO-UNDO.
DEFINE RETURN PARAMETER dblResult AS DOUBLE NO-UNDO.
END PROCEDURE.
PROCEDURE cosh EXTERNAL "MSVCRT40.DLL" CDECL:
DEFINE INPUT PARAMETER dblValue AS DOUBLE NO-UNDO.
DEFINE RETURN PARAMETER dblResult AS DOUBLE NO-UNDO.
END PROCEDURE.
PROCEDURE tanh EXTERNAL "MSVCRT40.DLL" CDECL:
DEFINE INPUT PARAMETER dblValue AS DOUBLE NO-UNDO.
DEFINE RETURN PARAMETER dblResult AS DOUBLE NO-UNDO.
END PROCEDURE.
/* Do the math */
/* The input parameter to these functions must be a number between -1 and 1. */
/* Using any other number will cause the function call to hang. */
DEFINE VARIABLE decResult AS DECIMAL NO-UNDO.
RUN sin (INPUT 0.655, OUTPUT decResult).
MESSAGE "The Sine of 0.655 is " decResult VIEW-AS ALERT-BOX.
RUN cos (INPUT 0.655, OUTPUT decResult).
MESSAGE "The Cosine of 0.655 is " decResult VIEW-AS ALERT-BOX.
RUN tan (INPUT 0.655, OUTPUT decResult).
MESSAGE "The Tangent of 0.655 is " decResult VIEW-AS ALERT-BOX.
RUN asin (INPUT 0.655, OUTPUT decResult).
MESSAGE "The Arcsine of 0.655 is " decResult VIEW-AS ALERT-BOX.
RUN acos (INPUT 0.655, OUTPUT decResult).
MESSAGE "The Arccosine of 0.655 is " decResult VIEW-AS ALERT-BOX.
RUN atan (INPUT 0.655, OUTPUT decResult).
MESSAGE "The Arctangent of 0.655 is " decResult VIEW-AS ALERT-BOX.
RUN sinh (INPUT 0.655, OUTPUT decResult).
MESSAGE "The Hyperbolic Sine of 0.655 is " decResult VIEW-AS ALERT-BOX.
RUN cosh (INPUT 0.655, OUTPUT decResult).
MESSAGE "The Hyperbolic Cosine of 0.65.5 is " decResult VIEW-AS ALERT-BOX.
RUN tanh (INPUT 0.655, OUTPUT decResult).
MESSAGE "The Hyperbolic Tangent of 0.655 is " decResult VIEW-AS ALERT-BOX..