The CALCIT command file provides the user with an interactive calculator. The user is prompted for an equation to be solved or an MPE/iX command to execute. To exit CALCIT, the user enters a carriage return.
Note that the CENTER command file is called to center the display headings on the user's terminal. After an equation is solved, the result is displayed on the terminal using escape sequences to append the result to the original input line and to underline it. The predefined variable HPMSGFENCE is used to suppress error messages.
The CALCIT prompt is based on the command file name. By dereferencing the latest command entered in the history stack (!-1), the name that called this command file becomes a part of the prompt. If the command file name is changed to COMPUTE, for example, the prompt automatically becomes COMPUTE ==>.
Figure 7-9 Calculator Command File
PARM ENH_CH=D
COMMENT Interactive calculator using calc and input
ECHO ![CHR(27) + "h" + CHR(27) + "J"]
CENTER "MPE/iX INTERACTIVE CALCULATOR"
CENTER ": executes any MPE/iX command!"
CENTER "Type [RETURN] to exit"
ECHO
SETVAR CALCIT_ESC CHR(27) + "A" + RPT(CHR(27) + "C", 64)
SETVAR CALCIT_PROMPT LFT(UPS("!-1"), POS(' ',"!-1" + ' ')-1) + ' ==> '
WHILE SETVAR (CALCIT_EXPR, RTRIM(INPUT(CALCIT_PROMPT))) <> '' DO
COMMENT Save length before trimming leading blanks
SETVAR CALCIT_LEN LEN(CALCIT_EXPR)
SETVAR CALCIT_EXPR LTRIM(CALCIT_EXPR)
IF LFT(CALCIT_EXPR,1) = ":" THEN
CONTINUE
![RHT(CALCIT_EXPR,LEN)CALCIT_EXPR)-1)]
ELSE
SETVAR HPMSGFENCE 2
SETVAR CIERROR 0
CONTINUE
SETVAR HPRESULT !CALCIT_EXPR
SETVAR HPMSGFENCE 0
IF CIERROR <> 0 THEN
COMMENT User entered an invalid expression.
COMMENT Display error.
ECHO ![RPT(' ' ,LEN(CALCIT_PROMPT) + HPCIERRCOL-17)]^
ECHO !HPCIERRMSG
ELSE
ECHO ![LFT(CALCIT_ESC, 2 + (LEN(CALCIT_PROMPT) + CALCIT_LEN) *2) +&
' = ' + CHR(27) + '&d!ENH_CH']!HPRESULT
ENDIF
ENDIF
ENDWHILE
DELETEVAR CALCIT_@
|
The following example shows the terminal display to calculate the equation 5 + 7.
:CALCIT
MPE/iX INTERACTIVE CALCULATOR
: executes any MPE/iX command
Type [RETURN] to exit
CALCIT ==> 5+7 = 12
CALCIT ==>
:
|